feat(wxapi): 新增自定义交易组件按推广员或分享者获取订单相关接口

This commit is contained in:
Fu Diwei 2021-09-18 14:33:31 +08:00
parent 07c3d4d5b9
commit 877c998e48
10 changed files with 427 additions and 0 deletions

View File

@ -485,6 +485,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <summary>
/// <para>异步调用 [POST] /shop/scene/check 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/check_scene.html </para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/check_scene.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -505,6 +506,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <summary>
/// <para>异步调用 [POST] /shop/order/add 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/add_order.html </para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/add_order.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -525,6 +527,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <summary>
/// <para>异步调用 [POST] /shop/order/pay 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/pay_order.html </para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/pay_order.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -545,6 +548,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <summary>
/// <para>异步调用 [POST] /shop/order/get 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/ministore/minishopopencomponent2/API/order/get_order.html </para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/get_order.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
@ -561,6 +565,46 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync<Models.ShopOrderGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/order/get_list_by_finder 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/get_order_list_by_finder.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopOrderGetListByFinderResponse> ExecuteShopOrderGetListByFinderAsync(this WechatApiClient client, Models.ShopOrderGetListByFinderRequest 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, "shop", "order", "get_list_by_finder")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopOrderGetListByFinderResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/order/get_list_by_sharer 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/order/get_order_list_by_sharer.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopOrderGetListBySharerResponse> ExecuteShopOrderGetListBySharerAsync(this WechatApiClient client, Models.ShopOrderGetListBySharerRequest 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, "shop", "order", "get_list_by_sharer")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopOrderGetListBySharerResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Delivery

View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/order/get_list_by_finder 接口的请求。</para>
/// </summary>
public class ShopOrderGetListByFinderRequest : WechatApiRequest
{
/// <summary>
/// 获取或设置支付时间的开始时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("start_pay_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("start_pay_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
public DateTimeOffset? StartPayTime { get; set; }
/// <summary>
/// 获取或设置支付时间的结束时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_pay_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("end_pay_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
public DateTimeOffset? EndPayTime { get; set; }
/// <summary>
/// 获取或设置推广员用户名。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_username")]
[System.Text.Json.Serialization.JsonPropertyName("finder_username")]
public string? FinderUsername { get; set; }
/// <summary>
/// 获取或设置推广员备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_remark")]
[System.Text.Json.Serialization.JsonPropertyName("finder_remark")]
public string? FinderRemark { get; set; }
/// <summary>
/// 获取或设置分页页数(从 1 开始)。
/// </summary>
[Newtonsoft.Json.JsonProperty("page")]
[System.Text.Json.Serialization.JsonPropertyName("page")]
public int Page { get; set; } = 1;
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
}
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/order/get_list_by_finder 接口的响应。</para>
/// </summary>
public class ShopOrderGetListByFinderResponse : WechatApiResponse
{
public static class Types
{
public class Order : ShopOrderGetResponse.Types.Order
{
}
}
/// <summary>
/// 获取或设置订单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("orders")]
[System.Text.Json.Serialization.JsonPropertyName("orders")]
public Types.Order[] OrderList { get; set; } = default!;
/// <summary>
/// 获取或设置订单总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_num")]
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
public int TotalCount { get; set; }
}
}

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/order/get_list_by_sharer 接口的请求。</para>
/// </summary>
public class ShopOrderGetListBySharerRequest : WechatApiRequest
{
/// <summary>
/// 获取或设置支付时间的开始时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("start_pay_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("start_pay_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
public DateTimeOffset? StartPayTime { get; set; }
/// <summary>
/// 获取或设置支付时间的结束时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_pay_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("end_pay_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
public DateTimeOffset? EndPayTime { get; set; }
/// <summary>
/// 获取或设置分享者的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sharer_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sharer_openid")]
public string? SharerOpenId { get; set; }
/// <summary>
/// 获取或设置分页页数(从 1 开始)。
/// </summary>
[Newtonsoft.Json.JsonProperty("page")]
[System.Text.Json.Serialization.JsonPropertyName("page")]
public int Page { get; set; } = 1;
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
}
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/order/get_list_by_sharer 接口的响应。</para>
/// </summary>
public class ShopOrderGetListBySharerResponse : WechatApiResponse
{
public static class Types
{
public class Order : ShopOrderGetResponse.Types.Order
{
}
}
/// <summary>
/// 获取或设置订单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("orders")]
[System.Text.Json.Serialization.JsonPropertyName("orders")]
public Types.Order[] OrderList { get; set; } = default!;
/// <summary>
/// 获取或设置订单总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_num")]
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
public int TotalCount { get; set; }
}
}

View File

@ -61,6 +61,34 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("sale_price")]
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
public int SalePrice { get; set; }
/// <summary>
/// 获取或设置均摊价格(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("real_price")]
[System.Text.Json.Serialization.JsonPropertyName("real_price")]
public int RealPrice { get; set; }
/// <summary>
/// 获取或设置小程序商品页面标题。
/// </summary>
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string Title { get; set; } = default!;
/// <summary>
/// 获取或设置小程序商品页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string PagePath { get; set; } = default!;
/// <summary>
/// 获取或设置商品头图 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("head_image")]
[System.Text.Json.Serialization.JsonPropertyName("head_image")]
public string HeadImageUrl { get; set; } = default!;
}
public class Payment
@ -72,6 +100,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[System.Text.Json.Serialization.JsonPropertyName("pay_method")]
public string PayMethod { get; set; } = default!;
/// <summary>
/// 获取或设置支付方式类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("pay_method_type")]
[System.Text.Json.Serialization.JsonPropertyName("pay_method_type")]
public int PayMethodType { get; set; }
/// <summary>
/// 获取或设置预支付单号。
/// </summary>
@ -188,6 +223,46 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[System.Text.Json.Serialization.JsonPropertyName("delivery_list")]
public Types.DeliveryDetail[]? DeliveryDetailList { get; set; }
}
public class Promotion
{
/// <summary>
/// 获取或设置推广员用户名。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_username")]
[System.Text.Json.Serialization.JsonPropertyName("finder_username")]
public string? FinderUsername { get; set; }
/// <summary>
/// 获取或设置推广员昵称。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_nickname")]
[System.Text.Json.Serialization.JsonPropertyName("finder_nickname")]
public string? FinderNickname { get; set; }
/// <summary>
/// 获取或设置推广员备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_remark")]
[System.Text.Json.Serialization.JsonPropertyName("finder_remark")]
public string? FinderRemark { get; set; }
/// <summary>
/// 获取或设置分享者的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sharer_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sharer_openid")]
public string? SharerOpenId { get; set; }
/// <summary>
/// 获取或设置直播开始时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("live_start_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularNullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("live_start_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularNullableDateTimeOffsetConverter))]
public DateTimeOffset? LiveStartTime { get; set; }
}
}
/// <summary>
@ -224,6 +299,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("delivery_detail")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_detail")]
public Types.Delivery? Delivery { get; set; }
/// <summary>
/// 获取或设置推广信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("promotion_info")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_info")]
public Types.Promotion? Promotion { get; set; }
}
}

View File

@ -0,0 +1,8 @@
{
"start_pay_time": "2020-03-25 12:05:25",
"end_pay_time": "2020-04-25 12:05:25",
"finder_username": "FINDER_USERNAME",
"finder_remark": "REMARK",
"page": 1,
"page_size": 10
}

View File

@ -0,0 +1,57 @@
{
"errcode": 0,
"errmsg": "ok",
"orders": [
{
"order_id": 123455,
"out_order_id": "xxxxx",
"status": 20,
"path": "/pages/order.html?out_order_id=xxxxx",
"order_detail": {
"promotion_info": {
"finder_username": "FINDER_USERNAME",
"finder_nickname": "FINDER_NICKNAME",
"finder_remark": "FINDER_REMARK"
},
"product_infos": [
{
"out_product_id": "12345",
"out_sku_id": "23456",
"product_cnt": 10,
"sale_price": 200,
"path": "pages/productDetail/productDetail?productId=2176180",
"title": "标题",
"head_image": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/85865/39/13611/488083/5e590a40E4bdf69c0/55c9bf645ea2b727.jpg",
"real_price": 200
}
],
"pay_info": {
"pay_method": "微信支付",
"prepay_id": "42526234625",
"prepay_time": "2020-03-25 14:04:25",
"transaction_id": "131456479687",
"pay_time": "2020-03-25 14:05:25",
"pay_method_type": 0
},
"price_info": {
"order_price": 1600,
"freight": 500,
"discounted_price": 1000,
"additional_price": 100,
"additional_remarks": "税费"
},
"delivery_detail": {
"delivery_type": 1,
"finish_all_delivery": 1,
"delivery_list": [
{
"waybill_id": "SFXXXX",
"delivery_id": "SF"
}
]
}
}
}
],
"total_num": 20
}

View File

@ -0,0 +1,7 @@
{
"start_pay_time": "2020-03-25 12:05:25",
"end_pay_time": "2020-04-25 12:05:25",
"sharer_openid": "OPENID",
"page": 1,
"page_size": 10
}

View File

@ -0,0 +1,58 @@
{
"errcode": 0,
"errmsg": "ok",
"orders": [
{
"order_id": 123455,
"out_order_id": "xxxxx",
"status": 20,
"path": "/pages/order.html?out_order_id=xxxxx",
"order_detail": {
"promotion_info": {
"finder_username": "FINDER_USERNAME",
"finder_nickname": "FINDER_NICKNAME",
"sharer_openid": "OPENID",
"live_start_time": "2020-04-25 12:05:25"
},
"product_infos": [
{
"out_product_id": "12345",
"out_sku_id": "23456",
"product_cnt": 10,
"sale_price": 200,
"path": "pages/productDetail/productDetail?productId=2176180",
"title": "标题",
"head_image": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/85865/39/13611/488083/5e590a40E4bdf69c0/55c9bf645ea2b727.jpg",
"real_price": 200
}
],
"pay_info": {
"pay_method": "微信支付",
"prepay_id": "42526234625",
"prepay_time": "2020-03-25 14:04:25",
"transaction_id": "131456479687",
"pay_time": "2020-03-25 14:05:25",
"pay_method_type": 0
},
"price_info": {
"order_price": 1600,
"freight": 500,
"discounted_price": 1000,
"additional_price": 100,
"additional_remarks": "税费"
},
"delivery_detail": {
"delivery_type": 1,
"finish_all_delivery": 1,
"delivery_list": [
{
"waybill_id": "SFXXXX",
"delivery_id": "SF"
}
]
}
}
}
],
"total_num": 20
}