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
{
}
}