diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs
index 0ad693a8..e6e639c0 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs
@@ -1446,88 +1446,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
}
#endregion
- #region Pay
- ///
- /// 异步调用 [POST] /shop/pay/createorder 接口。
- /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/create_order.html
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteShopPayCreateOrderAsync(this WechatApiClient client, Models.ShopPayCreateOrderRequest 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", "pay", "createorder")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
-
- ///
- /// 异步调用 [POST] /shop/pay/closeorder 接口。
- /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/close_order.html
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteShopPayCloseOrderAsync(this WechatApiClient client, Models.ShopPayCloseOrderRequest 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", "pay", "closeorder")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
-
- ///
- /// 异步调用 [POST] /shop/pay/getorderlist 接口。
- /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/get_order_detail.html
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteShopPayGetOrderListAsync(this WechatApiClient client, Models.ShopPayGetOrderListRequest 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", "pay", "getorderlist")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
-
- ///
- /// 异步调用 [POST] /shop/pay/getorder 接口。
- /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/get_order_detail.html
- ///
- ///
- ///
- ///
- ///
- public static async Task ExecuteShopPayGetOrderAsync(this WechatApiClient client, Models.ShopPayGetOrderRequest 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", "pay", "getorder")
- .SetQueryParam("access_token", request.AccessToken);
-
- return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
- }
- #endregion
-
#region Funds
///
/// 异步调用 [POST] /shop/funds/scanorderflow 接口。
@@ -1911,5 +1829,107 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
+
+ #region Pay
+ ///
+ /// 异步调用 [POST] /shop/pay/createorder 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/create_order.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteShopPayCreateOrderAsync(this WechatApiClient client, Models.ShopPayCreateOrderRequest 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", "pay", "createorder")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /shop/pay/closeorder 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/close_order.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteShopPayCloseOrderAsync(this WechatApiClient client, Models.ShopPayCloseOrderRequest 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", "pay", "closeorder")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /shop/pay/getorderlist 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/get_order_detail.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteShopPayGetOrderListAsync(this WechatApiClient client, Models.ShopPayGetOrderListRequest 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", "pay", "getorderlist")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /shop/pay/getorder 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/get_order_detail.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteShopPayGetOrderAsync(this WechatApiClient client, Models.ShopPayGetOrderRequest 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", "pay", "getorder")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /shop/pay/profitsharingorder 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/profitsharing_order.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteShopPayProfitSharingOrderAsync(this WechatApiClient client, Models.ShopPayProfitSharingOrderRequest 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", "pay", "profitsharingorder")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderRequest.cs
new file mode 100644
index 00000000..76ebdf1d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderRequest.cs
@@ -0,0 +1,43 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /shop/pay/profitsharingorder 接口的请求。
+ ///
+ public class ShopPayProfitSharingOrderRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置微信商户号。
+ ///
+ [Newtonsoft.Json.JsonProperty("mchid")]
+ [System.Text.Json.Serialization.JsonPropertyName("mchid")]
+ public string MerchantId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置用户的 OpenId。
+ ///
+ [Newtonsoft.Json.JsonProperty("openid")]
+ [System.Text.Json.Serialization.JsonPropertyName("openid")]
+ public string OpenId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置商户订单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("trade_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("trade_no")]
+ public string? OutTradeNumber { get; set; }
+
+ ///
+ /// 获取或设置微信支付交易单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("transaction_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
+ public string? TransactionId { get; set; }
+
+ ///
+ /// 获取或设置商户分账单号。
+ ///
+ [Newtonsoft.Json.JsonProperty("profit_sharing_no")]
+ [System.Text.Json.Serialization.JsonPropertyName("profit_sharing_no")]
+ public string OutProfitSharingNumber { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderResponse.cs
new file mode 100644
index 00000000..e2fb3bfd
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Pay/ShopPayProfitSharingOrderResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /shop/pay/profitsharingorder 接口的响应。
+ ///
+ public class ShopPayProfitSharingOrderResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Pay/ShopPayProfitSharingOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Pay/ShopPayProfitSharingOrderRequest.json
new file mode 100644
index 00000000..665a287c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Pay/ShopPayProfitSharingOrderRequest.json
@@ -0,0 +1,7 @@
+{
+ "openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
+ "mchid": "1230000109",
+ "trade_no": "1217752501201407033233368018",
+ "transaction_id": "4208450740201411110007820472",
+ "profit_sharing_no": "P20150806125346"
+}