feat(wxapi): 新增小程序购物订单相关接口

This commit is contained in:
Fu Diwei 2022-10-12 23:12:31 +08:00
parent 496fcf1e1f
commit a002c9316b
16 changed files with 1278 additions and 0 deletions

View File

@ -0,0 +1,112 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.Api
{
public static class WechatApiClientExecuteUserOrderExtensions
{
/// <summary>
/// <para>异步调用 [POST] /user-order/orders 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/shopping-order/normal-shopping-detail/uploadShoppingInfo.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UserOrderOrdersResponse> ExecuteUserOrderOrdersAsync(this WechatApiClient client, Models.UserOrderOrdersRequest 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, "user-order", "orders")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UserOrderOrdersResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /user-order/orders/shippings 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/shopping-order/normal-shopping-detail/uploadShippingInfo.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UserOrderOrdersShippingsResponse> ExecuteUserOrderOrdersShippingsAsync(this WechatApiClient client, Models.UserOrderOrdersShippingsRequest 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, "user-order", "orders", "shippings")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UserOrderOrdersShippingsResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /user-order/combine-orders 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/shopping-order/shopping-detail/uploadCombinedShoppingInfo.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UserOrderCombineOrdersResponse> ExecuteUserOrderCombineOrdersAsync(this WechatApiClient client, Models.UserOrderCombineOrdersRequest 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, "user-order", "combine-orders")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UserOrderCombineOrdersResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /user-order/combine-orders/shippings 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/shopping-order/shopping-detail/uploadCombinedShippingInfo.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UserOrderCombineOrdersShippingsResponse> ExecuteUserOrderCombineOrdersShippingsAsync(this WechatApiClient client, Models.UserOrderCombineOrdersShippingsRequest 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, "user-order", "combine-orders", "shippings")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UserOrderCombineOrdersShippingsResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /user-order/shoppinginfo/verify 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/shopping-order/upload-result/ShoppingInfoVerifyUploadResult.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UserOrderShoppingInfoVerifyResponse> ExecuteUserOrderShoppingInfoVerifyAsync(this WechatApiClient client, Models.UserOrderShoppingInfoVerifyRequest 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, "user-order", "shoppinginfo", "verify")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UserOrderShoppingInfoVerifyResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /user-order/combine-orders 接口的请求。</para>
/// </summary>
public class UserOrderCombineOrdersRequest : WechatApiRequest, IInferable<UserOrderCombineOrdersRequest, UserOrderCombineOrdersResponse>
{
public static class Types
{
public class OrderKey : UserOrderOrdersRequest.Types.OrderKey
{
}
public class SubOrder
{
public static class Types
{
public class JumpLink : UserOrderOrdersRequest.Types.Order.Types.JumpLink
{
}
public class Item : UserOrderOrdersRequest.Types.Order.Types.Item
{
}
}
/// <summary>
/// 获取或设置子订单标识信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_key")]
[System.Text.Json.Serialization.JsonPropertyName("order_key")]
public OrderKey OrderKey { get; set; } = new OrderKey();
/// <summary>
/// 获取或设置商户交易订单编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_order_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_order_no")]
public string MerchantOrderNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户交易订单详情页链接信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_detail_jump_link")]
[System.Text.Json.Serialization.JsonPropertyName("order_detail_jump_link")]
public Types.JumpLink? OrderDetailJumpLink { get; set; }
/// <summary>
/// 获取或设置订单购买的商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("item_list")]
[System.Text.Json.Serialization.JsonPropertyName("item_list")]
public IList<Types.Item> ItemList { get; set; } = new List<Types.Item>();
/// <summary>
/// 获取或设置物流形式。
/// </summary>
[Newtonsoft.Json.JsonProperty("logistics_type")]
[System.Text.Json.Serialization.JsonPropertyName("logistics_type")]
public string? LogisticsType { get; set; }
}
public class Payer : UserOrderOrdersRequest.Types.Payer
{
}
}
/// <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("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("payer")]
[System.Text.Json.Serialization.JsonPropertyName("payer")]
public Types.Payer Payer { get; set; } = new Types.Payer();
/// <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] /user-order/combine-orders 接口的响应。</para>
/// </summary>
public class UserOrderCombineOrdersResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /user-order/combine-orders/shippings 接口的请求。</para>
/// </summary>
public class UserOrderCombineOrdersShippingsRequest : WechatApiRequest, IInferable<UserOrderCombineOrdersShippingsRequest, UserOrderCombineOrdersShippingsResponse>
{
public static class Types
{
public class OrderKey : UserOrderOrdersShippingsRequest.Types.OrderKey
{
}
public class SubOrder
{
public static class Types
{
public class Shipping : UserOrderOrdersShippingsRequest.Types.Shipping
{
}
}
/// <summary>
/// 获取或设置子订单标识信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_key")]
[System.Text.Json.Serialization.JsonPropertyName("order_key")]
public OrderKey OrderKey { get; set; } = new OrderKey();
/// <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("delivery_mode")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_mode")]
public string DeliveryMode { get; set; } = string.Empty;
}
public class Payer : UserOrderOrdersShippingsRequest.Types.Payer
{
}
}
/// <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("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("payer")]
[System.Text.Json.Serialization.JsonPropertyName("payer")]
public Types.Payer Payer { get; set; } = new Types.Payer();
/// <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] /user-order/combine-orders/shippings 接口的响应。</para>
/// </summary>
public class UserOrderCombineOrdersShippingsResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,202 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /user-order/orders 接口的请求。</para>
/// </summary>
public class UserOrderOrdersRequest : WechatApiRequest, IInferable<UserOrderOrdersRequest, UserOrderOrdersResponse>
{
public static class Types
{
public class OrderKey
{
/// <summary>
/// 获取或设置订单单号类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_number_type")]
[System.Text.Json.Serialization.JsonPropertyName("order_number_type")]
public string OrderNumberType { get; set; } = string.Empty;
/// <summary>
/// 获取或设置支付下单商户的商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string? MerchantId { get; set; }
/// <summary>
/// 获取或设置原支付交易的商户订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_trade_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_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; }
}
public class Order
{
public static class Types
{
public class JumpLink
{
/// <summary>
/// 获取或设置链接类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public string Type { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string? AppId { get; set; }
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string? PagePath { get; set; }
/// <summary>
/// 获取或设置链接地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string? Url { get; set; }
}
public class Item
{
/// <summary>
/// 获取或设置商户侧商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_item_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_item_id")]
public string MerchantItemId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商品名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商品描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? Description { get; set; }
/// <summary>
/// 获取或设置商品单价(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("unit_price")]
[System.Text.Json.Serialization.JsonPropertyName("unit_price")]
public int UnitPrice { get; set; }
/// <summary>
/// 获取或设置购买数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("quantity")]
[System.Text.Json.Serialization.JsonPropertyName("quantity")]
public int Quantity { get; set; }
/// <summary>
/// 获取或设置商品图片 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("image_url")]
[System.Text.Json.Serialization.JsonPropertyName("image_url")]
public IList<string> ImageUrlList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置商户交易商品详情页链接信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("item_detail_jump_link")]
[System.Text.Json.Serialization.JsonPropertyName("item_detail_jump_link")]
public JumpLink? ItemDetailJumpLink { get; set; }
}
}
/// <summary>
/// 获取或设置商户交易订单编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_order_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_order_no")]
public string MerchantOrderNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户交易订单详情页链接信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_detail_jump_link")]
[System.Text.Json.Serialization.JsonPropertyName("order_detail_jump_link")]
public Types.JumpLink? OrderDetailJumpLink { get; set; }
/// <summary>
/// 获取或设置订单购买的商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("item_list")]
[System.Text.Json.Serialization.JsonPropertyName("item_list")]
public IList<Types.Item> ItemList { get; set; } = new List<Types.Item>();
}
public class Payer
{
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
}
}
/// <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("order_list")]
[System.Text.Json.Serialization.JsonPropertyName("order_list")]
public IList<Types.Order> OrderList { get; set; } = new List<Types.Order>();
/// <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 string? LogisticsType { get; set; }
/// <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] /user-order/orders 接口的响应。</para>
/// </summary>
public class UserOrderOrdersResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /user-order/orders/shippings 接口的请求。</para>
/// </summary>
public class UserOrderOrdersShippingsRequest : WechatApiRequest, IInferable<UserOrderOrdersShippingsRequest, UserOrderOrdersShippingsResponse>
{
public static class Types
{
public class OrderKey : UserOrderOrdersRequest.Types.OrderKey
{
}
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; }
}
public class Item
{
/// <summary>
/// 获取或设置商户侧商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_item_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_item_id")]
public string MerchantItemId { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置物流公司编码。
/// </summary>
[Newtonsoft.Json.JsonProperty("express_company")]
[System.Text.Json.Serialization.JsonPropertyName("express_company")]
public string ExpressCompanyCode { get; set; } = string.Empty;
/// <summary>
/// 获取或设置物流单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("tracking_no")]
[System.Text.Json.Serialization.JsonPropertyName("tracking_no")]
public string TrackingNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置联系方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("contact")]
[System.Text.Json.Serialization.JsonPropertyName("contact")]
public Types.Contact? Contact { get; set; }
/// <summary>
/// 获取或设置订单购买的商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("item_list")]
[System.Text.Json.Serialization.JsonPropertyName("item_list")]
public IList<Types.Item>? ItemList { get; set; }
}
public class Payer : UserOrderOrdersRequest.Types.Payer
{
}
}
/// <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("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("payer")]
[System.Text.Json.Serialization.JsonPropertyName("payer")]
public Types.Payer Payer { get; set; } = new Types.Payer();
/// <summary>
/// 获取或设置发货模式。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_mode")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_mode")]
public string DeliveryMode { get; set; } = string.Empty;
/// <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] /user-order/orders/shippings 接口的响应。</para>
/// </summary>
public class UserOrderOrdersShippingsResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,33 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /user-order/shoppinginfo/verify 接口的请求。</para>
/// </summary>
public class UserOrderShoppingInfoVerifyRequest : WechatApiRequest, IInferable<UserOrderShoppingInfoVerifyRequest, UserOrderShoppingInfoVerifyResponse>
{
public static class Types
{
public class OrderKey : UserOrderOrdersRequest.Types.OrderKey
{
}
public class Payer : UserOrderOrdersRequest.Types.Payer
{
}
}
/// <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();
}
}

View File

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

View File

@ -0,0 +1,196 @@
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"
},
"sub_orders": [
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "zlt49",
"mchid": "uqlxl",
"out_trade_no": "pzlfp"
},
"merchant_order_no": "2343454667633",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
}
],
"logistics_type": "LOCATION_BASED_LOGISTICS"
},
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"transaction_id": "27kd6",
"mchid": "44anx",
"out_trade_no": "pj396"
},
"merchant_order_no": "2343454667633",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
}
],
"logistics_type": "LOCATION_BASED_LOGISTICS"
},
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"transaction_id": "0jo3k",
"mchid": "6rcmv",
"out_trade_no": "yld2x"
},
"merchant_order_no": "2343454667633",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
}
],
"logistics_type": "LOCATION_BASED_LOGISTICS"
}
],
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
},
"upload_time": "2022-05-20T13:29:35.120"
}

View File

@ -0,0 +1,146 @@
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"
},
"sub_orders": [
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "6r6m0",
"mchid": "kzwri",
"out_trade_no": "v1rsd"
},
"delivery_mode": "SPLIT_DELIVERY",
"shipping_list": [
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "****1234",
"receiver_contact": "189****1234"
}
},
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "****1234",
"receiver_contact": "0**2-******23-10"
}
}
]
},
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "2m08y",
"mchid": "fr2db",
"out_trade_no": "m2dok"
},
"delivery_mode": "UNIFIED_DELIVERY",
"shipping_list": [
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "0**2-***1234",
"receiver_contact": "****123-8008"
}
},
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "0**2-***1234",
"receiver_contact": "189****1234"
}
}
]
},
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "dxy5d",
"mchid": "w5acd",
"out_trade_no": "tqbik"
},
"delivery_mode": "UNIFIED_DELIVERY",
"shipping_list": [
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "****123-8008",
"receiver_contact": "****1234"
}
},
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "****123-8008",
"receiver_contact": "0**2-***1234"
}
}
]
}
],
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
},
"upload_time": "2022-05-20T13:29:35.120"
}

View File

@ -0,0 +1,176 @@
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "0unu3",
"mchid": "idgsc",
"out_trade_no": "e8zef"
},
"order_list": [
{
"merchant_order_no": "232457563423",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
}
]
},
{
"merchant_order_no": "232457563423",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
}
]
},
{
"merchant_order_no": "232457563423",
"order_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
},
"item_list": [
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": [
"https://qpic.cn/xxx",
"https://qpic.cn/xxx",
"https://qpic.cn/xxx"
],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "URL"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
},
{
"merchant_item_id": "1246464644",
"name": "iPhoneX 256G",
"description": "Image形象店 - 深圳腾大 -QQ 公仔",
"unit_price": 828800,
"quantity": 2,
"image_url": ["https://qpic.cn/xxx", "https://qpic.cn/xxx"],
"item_detail_jump_link": {
"url": "https://www.weixin.qq.com/wxpay/pay.php",
"appid": "wxd678efh567hg6787",
"path": "/path/index/index",
"type": "MINI_PROGRAM"
}
}
]
}
],
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
},
"logistics_type": "LOCATION_BASED_LOGISTICS",
"upload_time": "2022-05-20T13:29:35.120"
}

View File

@ -0,0 +1,53 @@
{
"order_key": {
"order_number_type": "MERCHANT_TRADE_NUMBER",
"transaction_id": "nep9a",
"mchid": "8wu3m",
"out_trade_no": "x5mr9"
},
"delivery_mode": "UNIFIED_DELIVERY",
"shipping_list": [
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "0**2-******23-10",
"receiver_contact": "****123-8008"
}
},
{
"tracking_no": "323244567777",
"express_company": "DHL",
"item_list": [
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
},
{
"merchant_item_id": "1246464644"
}
],
"contact": {
"consignor_contact": "0**2-***1234",
"receiver_contact": "0**2-******23-10"
}
}
],
"upload_time": "2021-05-20T13:29:35.12",
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
}
}

View File

@ -0,0 +1,11 @@
{
"order_key": {
"order_number_type": "WXPAY_TRADE_NUMBER",
"transaction_id": "g2frh",
"mchid": "2qf8n",
"out_trade_no": "t6htn"
},
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
}
}