feat(wxapi): 新增小程序发货信息管理服务相关接口

This commit is contained in:
Fu Diwei
2023-05-10 01:37:25 +08:00
parent 7c0a8490dd
commit 5d76084624
31 changed files with 1053 additions and 18 deletions

View File

@@ -1223,6 +1223,151 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
}
#endregion
#region WxaSecOrder
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/upload_shipping_info 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderUploadShippingInfoResponse> ExecuteWxaSecOrderUploadShippingInfoAsync(this WechatApiClient client, Models.WxaSecOrderUploadShippingInfoRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "upload_shipping_info")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderUploadShippingInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/upload_combined_shipping_info 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderUploadCombinedShippingInfoResponse> ExecuteWxaSecOrderUploadCombinedShippingInfoAsync(this WechatApiClient client, Models.WxaSecOrderUploadCombinedShippingInfoRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "upload_combined_shipping_info")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderUploadCombinedShippingInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/notify_confirm_receive 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderNotifyConfirmReceiveResponse> ExecuteWxaSecOrderNotifyConfirmReceiveAsync(this WechatApiClient client, Models.WxaSecOrderNotifyConfirmReceiveRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "notify_confirm_receive")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderNotifyConfirmReceiveResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/set_msg_jump_path 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderSetMessageJumpPathResponse> ExecuteWxaSecOrderSetMessageJumpPathAsync(this WechatApiClient client, Models.WxaSecOrderSetMessageJumpPathRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "set_msg_jump_path")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderSetMessageJumpPathResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/is_trade_managed 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderIsTradeManagedResponse> ExecuteWxaSecOrderIsTradeManagedAsync(this WechatApiClient client, Models.WxaSecOrderIsTradeManagedRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.AppId == null)
request.AppId = client.Credentials.AppId;
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "is_trade_managed")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderIsTradeManagedResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/get_order_list 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderGetOrderListResponse> ExecuteWxaSecOrderGetOrderListAsync(this WechatApiClient client, Models.WxaSecOrderGetOrderListRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "get_order_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderGetOrderListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/order/get_order 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecOrderGetOrderResponse> ExecuteWxaSecOrderGetOrderAsync(this WechatApiClient client, Models.WxaSecOrderGetOrderRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "wxa", "sec", "order", "get_order")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.WxaSecOrderGetOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region HardwareDevice
/// <summary>
/// <para>异步调用 [POST] /wxa/getsnticket 接口。</para>

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
@@ -17,7 +17,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("order_number_type")]
[System.Text.Json.Serialization.JsonPropertyName("order_number_type")]
public string OrderNumberType { get; set; } = string.Empty;
public int OrderNumberType { get; set; }
/// <summary>
/// 获取或设置支付下单商户的商户号。

View File

@@ -0,0 +1,63 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/get_order_list 接口的请求。</para>
/// </summary>
public class WxaSecOrderGetOrderListRequest : WechatApiRequest, IInferable<WxaSecOrderGetOrderListRequest, WxaSecOrderGetOrderListResponse>
{
public static class Types
{
public class TimeRange
{
/// <summary>
/// 获取或设置起始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("begin_time")]
[System.Text.Json.Serialization.JsonPropertyName("begin_time")]
public long? BeginTimestamp { get; set; }
/// <summary>
/// 获取或设置截止时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long? EndTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置支付时间范围。
/// </summary>
[Newtonsoft.Json.JsonProperty("pay_time_range")]
[System.Text.Json.Serialization.JsonPropertyName("pay_time_range")]
public Types.TimeRange? PagTimeRange { get; set; }
/// <summary>
/// 获取或设置订单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_state")]
[System.Text.Json.Serialization.JsonPropertyName("order_state")]
public int? OrderState { get; set; }
/// <summary>
/// 获取或设置支付者的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string? OpenId { get; set; }
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("last_index")]
[System.Text.Json.Serialization.JsonPropertyName("last_index")]
public string? Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int? Limit { get; set; }
}
}

View File

@@ -0,0 +1,228 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/get_order_list 接口的响应。</para>
/// </summary>
public class WxaSecOrderGetOrderListResponse : WechatApiResponse
{
public static class Types
{
public class Order
{
public static class Types
{
public class Shipping
{
public static class Types
{
public class Shipping
{
public static class Types
{
public class Contact
{
/// <summary>
/// 获取或设置寄件人联系方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("consignor_contact")]
[System.Text.Json.Serialization.JsonPropertyName("consignor_contact")]
public string? ConsignorContact { get; set; }
/// <summary>
/// 获取或设置收件人联系方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("receiver_contact")]
[System.Text.Json.Serialization.JsonPropertyName("receiver_contact")]
public string? ReceiverContact { get; set; }
}
}
/// <summary>
/// 获取或设置物流公司编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("express_company")]
[System.Text.Json.Serialization.JsonPropertyName("express_company")]
public string? ExpressCompany { get; set; }
/// <summary>
/// 获取或设置物流单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("tracking_no")]
[System.Text.Json.Serialization.JsonPropertyName("tracking_no")]
public string? TrackingNumber { get; set; }
/// <summary>
/// 获取或设置商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("goods_desc")]
[System.Text.Json.Serialization.JsonPropertyName("goods_desc")]
public string? ItemDescription { get; set; }
/// <summary>
/// 获取或设置联系信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact")]
[System.Text.Json.Serialization.JsonPropertyName("contact")]
public Types.Contact? Contact { get; set; }
/// <summary>
/// 获取或设置上传时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("upload_time")]
[System.Text.Json.Serialization.JsonPropertyName("upload_time")]
public long UploadTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置物流形式。
/// </summary>
[Newtonsoft.Json.JsonProperty("logistics_type")]
[System.Text.Json.Serialization.JsonPropertyName("logistics_type")]
public int LogisticsType { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_mode")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_mode")]
public int DeliveryMode { get; set; }
/// <summary>
/// 获取或设置商品描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("goods_desc")]
[System.Text.Json.Serialization.JsonPropertyName("goods_desc")]
public string? ItemDescription { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("finish_shipping")]
[System.Text.Json.Serialization.JsonPropertyName("finish_shipping")]
public bool IsFinishAll { get; set; }
/// <summary>
/// 获取或设置已完成全部发货的次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("finish_shipping_count")]
[System.Text.Json.Serialization.JsonPropertyName("finish_shipping_count")]
public int FinishCount { get; set; }
/// <summary>
/// 获取或设置物流信息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("shipping_list")]
[System.Text.Json.Serialization.JsonPropertyName("shipping_list")]
public Types.Shipping[] ShippingList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置支付下单商户的商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_id")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置支付下单商户的子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("sub_merchant_id")]
public string? SubMerchantId { get; set; }
/// <summary>
/// 获取或设置原支付交易的商户订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_trade_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_trade_no")]
public string OutTradeNumber { get; set; } = default!;
/// <summary>
/// 获取或设置原支付交易的微信订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_id")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
public string? TransactionId { get; set; }
/// <summary>
/// 获取或设置商品描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string Description { get; set; } = default!;
/// <summary>
/// 获取或设置支付者的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置实付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("paid_amount")]
[System.Text.Json.Serialization.JsonPropertyName("paid_amount")]
public int PayAmount { get; set; }
/// <summary>
/// 获取或设置订单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_state")]
[System.Text.Json.Serialization.JsonPropertyName("order_state")]
public int OrderState { get; set; }
/// <summary>
/// 获取或设置支付时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("pay_time")]
[System.Text.Json.Serialization.JsonPropertyName("pay_time")]
public long? PayTimestamp { get; set; }
/// <summary>
/// 获取或设置创建时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("trade_create_time")]
[System.Text.Json.Serialization.JsonPropertyName("trade_create_time")]
public long CreateTimestamp { get; set; }
/// <summary>
/// 获取或设置是否处在交易纠纷中。
/// </summary>
[Newtonsoft.Json.JsonProperty("in_complaint")]
[System.Text.Json.Serialization.JsonPropertyName("in_complaint")]
public bool IsInComplaint { get; set; }
/// <summary>
/// 获取或设置发货信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("shipping")]
[System.Text.Json.Serialization.JsonPropertyName("shipping")]
public Types.Shipping? Shipping { get; set; }
}
}
/// <summary>
/// 获取或设置订单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_list")]
[System.Text.Json.Serialization.JsonPropertyName("order_list")]
public Types.Order[] OrderList { get; set; } = default!;
/// <summary>
/// 获取或设置是否还有下一页。
/// </summary>
[Newtonsoft.Json.JsonProperty("has_more")]
[System.Text.Json.Serialization.JsonPropertyName("has_more")]
public bool HasMore { get; set; }
/// <summary>
/// 获取或设置下一页分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("last_index")]
[System.Text.Json.Serialization.JsonPropertyName("last_index")]
public string? Offset { get; set; }
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/get_order 接口的请求。</para>
/// </summary>
public class WxaSecOrderGetOrderRequest : WechatApiRequest, IInferable<WxaSecOrderGetOrderRequest, WxaSecOrderGetOrderResponse>
{
/// <summary>
/// 获取或设置支付下单商户的商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_id")]
public string? MerchantId { get; set; }
/// <summary>
/// 获取或设置支付下单商户的二级商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("sub_merchant_id")]
public string? SubMerchantId { get; set; }
/// <summary>
/// 获取或设置原支付交易的商户订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_trade_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_trade_no")]
public string? OutTradeNumber { get; set; }
/// <summary>
/// 获取或设置原支付交易的微信订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_id")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
public string? TransactionId { get; set; }
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/get_order 接口的响应。</para>
/// </summary>
public class WxaSecOrderGetOrderResponse : WechatApiResponse
{
public static class Types
{
public class Order : WxaSecOrderGetOrderListResponse.Types.Order
{
}
}
/// <summary>
/// 获取或设置订单信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order")]
[System.Text.Json.Serialization.JsonPropertyName("order")]
public Types.Order Order { get; set; } = default!;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/is_trade_managed 接口的请求。</para>
/// </summary>
public class WxaSecOrderIsTradeManagedRequest : WechatApiRequest, IInferable<WxaSecOrderIsTradeManagedRequest, WxaSecOrderIsTradeManagedResponse>
{
/// <summary>
/// 获取或设置微信 AppId。如果不指定将使用构造 <see cref="WechatApiClient"/> 时的 <see cref="WechatApiClientOptions.AppId"/> 参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string? AppId { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/is_trade_managed 接口的响应。</para>
/// </summary>
public class WxaSecOrderIsTradeManagedResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置是否已开通小程序发货信息管理服务。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_trade_managed")]
[System.Text.Json.Serialization.JsonPropertyName("is_trade_managed")]
public bool IsTradeManaged { get; set; }
}
}

View File

@@ -0,0 +1,43 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/notify_confirm_receive 接口的请求。</para>
/// </summary>
public class WxaSecOrderNotifyConfirmReceiveRequest : WechatApiRequest, IInferable<WxaSecOrderNotifyConfirmReceiveRequest, WxaSecOrderNotifyConfirmReceiveResponse>
{
/// <summary>
/// 获取或设置支付下单商户的商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_id")]
public string? MerchantId { get; set; }
/// <summary>
/// 获取或设置支付下单商户的二级商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_merchant_id")]
[System.Text.Json.Serialization.JsonPropertyName("sub_merchant_id")]
public string? SubMerchantId { get; set; }
/// <summary>
/// 获取或设置原支付交易的商户订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_trade_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_trade_no")]
public string? OutTradeNumber { get; set; }
/// <summary>
/// 获取或设置原支付交易的微信订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_id")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
public string? TransactionId { get; set; }
/// <summary>
/// 获取或设置快递签收时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("received_time")]
[System.Text.Json.Serialization.JsonPropertyName("received_time")]
public long ReceiveTimestamp { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/notify_confirm_receive 接口的响应。</para>
/// </summary>
public class WxaSecOrderNotifyConfirmReceiveResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/set_msg_jump_path 接口的请求。</para>
/// </summary>
public class WxaSecOrderSetMessageJumpPathRequest : WechatApiRequest, IInferable<WxaSecOrderSetMessageJumpPathRequest, WxaSecOrderSetMessageJumpPathResponse>
{
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string PagePath { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/set_msg_jump_path 接口的响应。</para>
/// </summary>
public class WxaSecOrderSetMessageJumpPathResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/upload_combined_shipping_info 接口的请求。</para>
/// </summary>
public class WxaSecOrderUploadCombinedShippingInfoRequest : WechatApiRequest, IInferable<WxaSecOrderUploadCombinedShippingInfoRequest, WxaSecOrderUploadCombinedShippingInfoResponse>
{
public static class Types
{
public class OrderKey : WxaSecOrderUploadShippingInfoRequest.Types.OrderKey
{
}
public class Payer : WxaSecOrderUploadShippingInfoRequest.Types.Payer
{
}
public class SubOrder
{
public static class Types
{
public class OrderKey : WxaSecOrderUploadShippingInfoRequest.Types.OrderKey
{
}
public class Shipping : WxaSecOrderUploadShippingInfoRequest.Types.Shipping
{
public static new class Types
{
public class Contact : WxaSecOrderUploadShippingInfoRequest.Types.Shipping.Types.Contact
{
}
}
/// <summary>
/// 获取或设置联系信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact")]
[System.Text.Json.Serialization.JsonPropertyName("contact")]
public new Types.Contact? Contact { get; set; }
}
}
/// <summary>
/// 获取或设置订单标识信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_key")]
[System.Text.Json.Serialization.JsonPropertyName("order_key")]
public Types.OrderKey OrderKey { get; set; } = new Types.OrderKey();
/// <summary>
/// 获取或设置物流形式。
/// </summary>
[Newtonsoft.Json.JsonProperty("logistics_type")]
[System.Text.Json.Serialization.JsonPropertyName("logistics_type")]
public int LogisticsType { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_mode")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_mode")]
public int DeliveryMode { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_all_delivered")]
[System.Text.Json.Serialization.JsonPropertyName("is_all_delivered")]
public bool? IsFinishAll { get; set; }
/// <summary>
/// 获取或设置物流信息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("shipping_list")]
[System.Text.Json.Serialization.JsonPropertyName("shipping_list")]
public IList<Types.Shipping> ShippingList { get; set; } = new List<Types.Shipping>();
}
}
/// <summary>
/// 获取或设置订单标识信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_key")]
[System.Text.Json.Serialization.JsonPropertyName("order_key")]
public Types.OrderKey OrderKey { get; set; } = new Types.OrderKey();
/// <summary>
/// 获取或设置支付者信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("payer")]
[System.Text.Json.Serialization.JsonPropertyName("payer")]
public Types.Payer Payer { get; set; } = new Types.Payer();
/// <summary>
/// 获取或设置子单信息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_orders")]
[System.Text.Json.Serialization.JsonPropertyName("sub_orders")]
public IList<Types.SubOrder> SubOrderList { get; set; } = new List<Types.SubOrder>();
/// <summary>
/// 获取或设置上传时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("upload_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("upload_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset UploadTime { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/upload_combined_shipping_info 接口的响应。</para>
/// </summary>
public class WxaSecOrderUploadCombinedShippingInfoResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,124 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/upload_shipping_info 接口的请求。</para>
/// </summary>
public class WxaSecOrderUploadShippingInfoRequest : WechatApiRequest, IInferable<WxaSecOrderUploadShippingInfoRequest, WxaSecOrderUploadShippingInfoResponse>
{
public static class Types
{
public class OrderKey : UserOrderOrdersRequest.Types.OrderKey
{
}
public class Payer : UserOrderOrdersRequest.Types.Payer
{
}
public class Shipping
{
public static class Types
{
public class Contact
{
/// <summary>
/// 获取或设置寄件人联系方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("consignor_contact")]
[System.Text.Json.Serialization.JsonPropertyName("consignor_contact")]
public string? ConsignorContact { get; set; }
/// <summary>
/// 获取或设置收件人联系方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("receiver_contact")]
[System.Text.Json.Serialization.JsonPropertyName("receiver_contact")]
public string? ReceiverContact { get; set; }
}
}
/// <summary>
/// 获取或设置物流公司编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("express_company")]
[System.Text.Json.Serialization.JsonPropertyName("express_company")]
public string? ExpressCompany { get; set; }
/// <summary>
/// 获取或设置物流单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("tracking_no")]
[System.Text.Json.Serialization.JsonPropertyName("tracking_no")]
public string? TrackingNumber { get; set; }
/// <summary>
/// 获取或设置商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("item_desc")]
[System.Text.Json.Serialization.JsonPropertyName("item_desc")]
public string? ItemDescription { get; set; }
/// <summary>
/// 获取或设置联系信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact")]
[System.Text.Json.Serialization.JsonPropertyName("contact")]
public Types.Contact? Contact { get; set; }
}
}
/// <summary>
/// 获取或设置订单标识信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_key")]
[System.Text.Json.Serialization.JsonPropertyName("order_key")]
public Types.OrderKey OrderKey { get; set; } = new Types.OrderKey();
/// <summary>
/// 获取或设置支付者信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("payer")]
[System.Text.Json.Serialization.JsonPropertyName("payer")]
public Types.Payer Payer { get; set; } = new Types.Payer();
/// <summary>
/// 获取或设置物流形式。
/// </summary>
[Newtonsoft.Json.JsonProperty("logistics_type")]
[System.Text.Json.Serialization.JsonPropertyName("logistics_type")]
public int LogisticsType { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_mode")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_mode")]
public int DeliveryMode { get; set; }
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("is_all_delivered")]
[System.Text.Json.Serialization.JsonPropertyName("is_all_delivered")]
public bool? IsFinishAll { get; set; }
/// <summary>
/// 获取或设置物流信息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("shipping_list")]
[System.Text.Json.Serialization.JsonPropertyName("shipping_list")]
public IList<Types.Shipping> ShippingList { get; set; } = new List<Types.Shipping>();
/// <summary>
/// 获取或设置上传时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("upload_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("upload_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
public DateTimeOffset UploadTime { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/order/upload_shipping_info 接口的响应。</para>
/// </summary>
public class WxaSecOrderUploadShippingInfoResponse : WechatApiResponse
{
}
}

View File

@@ -1,6 +1,6 @@
{
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"
@@ -8,7 +8,7 @@
"sub_orders": [
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 2,
"transaction_id": "zlt49",
"mchid": "uqlxl",
"out_trade_no": "pzlfp"
@@ -76,7 +76,7 @@
},
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"order_number_type": 2,
"transaction_id": "27kd6",
"mchid": "44anx",
"out_trade_no": "pj396"
@@ -140,7 +140,7 @@
},
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "0jo3k",
"mchid": "6rcmv",
"out_trade_no": "yld2x"

View File

@@ -1,6 +1,6 @@
{
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"
@@ -8,7 +8,7 @@
"sub_orders": [
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "6r6m0",
"mchid": "kzwri",
"out_trade_no": "v1rsd"
@@ -51,7 +51,7 @@
},
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "2m08y",
"mchid": "fr2db",
"out_trade_no": "m2dok"
@@ -97,7 +97,7 @@
},
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "dxy5d",
"mchid": "w5acd",
"out_trade_no": "tqbik"

View File

@@ -1,6 +1,6 @@
{
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"

View File

@@ -1,6 +1,6 @@
{
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"order_number_type": 1,
"transaction_id": "nep9a",
"mchid": "8wu3m",
"out_trade_no": "x5mr9"

View File

@@ -1,6 +1,6 @@
{
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"order_number_type": 2,
"transaction_id": "g2frh",
"mchid": "2qf8n",
"out_trade_no": "t6htn"

View File

@@ -0,0 +1,7 @@
{
"pay_time_range": {
"begin_time": 1670563531,
"end_time": 1670563531
},
"page_size": 2
}

View File

@@ -0,0 +1,36 @@
{
"errcode": 0,
"errmsg": "ok",
"order_list": [
{
"transaction_id": "fake-transid-20221209132531-0",
"merchant_trade_no": "fake-tradeno-20221209132531-0",
"merchant_id": "fake-mchid-123",
"sub_merchant_id": "",
"description": "",
"paid_amount": 4353,
"openid": "ogqztkPsejM9MQAFfwCQSCi4oNg3",
"trade_create_time": 1670563531,
"pay_time": 1670563531,
"order_state": 1,
"in_complaint": false,
"shipping": {}
},
{
"transaction_id": "fake-transid-20221209132531-1",
"merchant_trade_no": "fake-tradeno-20221209132531-1",
"merchant_id": "fake-mchid-123",
"sub_merchant_id": "",
"description": "",
"paid_amount": 29767,
"openid": "ogqztkPsejM9MQAFfwCQSCi4oNg3",
"trade_create_time": 1670563531,
"pay_time": 1670563531,
"order_state": 1,
"in_complaint": false,
"shipping": {}
}
],
"last_index": "092dd3cecbc6926301",
"has_more": true
}

View File

@@ -0,0 +1,5 @@
{
"transaction_id": "fake-transid-20221209132531-44",
"merchant_id": "fake-mchid-123",
"merchant_trade_no": "fake-tradeno-20221209132531-44"
}

View File

@@ -0,0 +1,31 @@
{
"errcode": 0,
"errmsg": "ok",
"order": {
"transaction_id": "fake-transid-20221209132531-44",
"merchant_trade_no": "fake-tradeno-20221209132531-44",
"merchant_id": "fake-mchid-123",
"sub_merchant_id": "",
"description": "🍌*1",
"paid_amount": 916,
"openid": "ogqztkPsejM9MQAFfwCQSCi4oNg3",
"trade_create_time": 1670563533,
"pay_time": 1670563533,
"in_complaint": false,
"order_state": 2,
"shipping": {
"delivery_mode": 1,
"logistics_type": 1,
"finish_shipping": true,
"finish_shipping_count": 1,
"goods_desc": "🍌*1",
"shipping_list": [
{
"tracking_no": "JT1234567890",
"express_company": "JTSD",
"upload_time": 1670832735
}
]
}
}
}

View File

@@ -0,0 +1,3 @@
{
"appid": "wx0123456789abcdef"
}

View File

@@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"is_trade_managed": true
}

View File

@@ -0,0 +1,6 @@
{
"transaction_id": "fake-transid-20221209132531-44",
"merchant_id": "fake-mchid-123",
"merchant_trade_no": "fake-tradeno-20221209132531-44",
"received_time": 1670829139
}

View File

@@ -0,0 +1,60 @@
{
"order_key": {
"order_number_type": 1,
"mchid": "fake-mchid-123",
"out_trade_no": "fake-tradeno-20221214190427-0"
},
"sub_orders": [
{
"order_key": {
"order_number_type": 1,
"mchid": "fake-mchid-123",
"out_trade_no": "fake-tradeno-20221214190427-01"
},
"delivery_mode": 2,
"logistics_type": 1,
"is_all_delivered": true,
"shipping_list": [
{
"tracking_no": "fake-trackingno-202212141904271",
"express_company": "YD",
"item_desc": "微信气泡狗零钱包*1",
"contact": {
"consignor_contact": "021-**34-12"
}
},
{
"tracking_no": "fake-trackingno-202212141904272",
"express_company": "DHL",
"item_desc": "微信黄脸布艺胸针*1微信气泡狗零钱包*1",
"contact": {
"consignor_contact": "021-**34-12"
}
}
]
},
{
"order_key": {
"order_number_type": 1,
"mchid": "fake-mchid-321",
"out_trade_no": "fake-tradeno-20221214190427-02"
},
"delivery_mode": 1,
"logistics_type": 1,
"shipping_list": [
{
"tracking_no": "fake-trackingno-202212141904273",
"express_company": "YTO",
"item_desc": "微信气泡狗双面钥匙扣*1",
"contact": {
"receiver_contact": "+86-123****4321"
}
}
]
}
],
"upload_time": "2022-12-15T13:29:35.120+08:00",
"payer": {
"openid": "ogqztkPsejM9MQAFfwCQSCi4oNg3"
}
}

View File

@@ -0,0 +1,22 @@
{
"order_key": {
"order_number_type": 2,
"transaction_id": "fake-transid-20221214190427-1"
},
"delivery_mode": 1,
"logistics_type": 1,
"shipping_list": [
{
"tracking_no": "fake-trackingno-2022121419042711",
"express_company": "STO",
"item_desc": "微信气泡狗集线器*1",
"contact": {
"consignor_contact": "+86-177****1234"
}
}
],
"upload_time": "2022-12-15T13:29:35.120+08:00",
"payer": {
"openid": "ogqztkPsejM9MQAFfwCQSCi4oNg3"
}
}