Skip to content

Commit 048a51a

Browse files
committed
feat(tenpayv3): 新增个人收款二手交易场景相关接口
1 parent 49a89ee commit 048a51a

47 files changed

Lines changed: 1304 additions & 30 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/WechatTenpayV3/Basic_ModelDefinition.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
|| 经营能力:微信支付分签约计划 | 直连商户 & 合作伙伴 | |
4949
|| 经营能力:平台收付通 | 合作伙伴 | |
5050
|| 经营能力:平台保证金 | 合作伙伴 | |
51+
|| 经营能力:个人收款(二手交易) | 合作伙伴 | |
5152
|| 运营工具:代金券 | 直连商户 & 合作伙伴 | |
5253
|| 运营工具:商家券 | 直连商户 & 合作伙伴 | |
5354
|| 运营工具:消费金 | 直连商户 | |
@@ -82,7 +83,7 @@
8283
|| 其他:微信点餐订单 | 合作伙伴 | |
8384
|| 其他:微信寄快递 | 合作伙伴 | |
8485
|| 其他:品牌小店营销 | 合作伙伴 | |
85-
|| 其他:银行多笔立减 | 直连商户 | |
86+
|| 其他:银行多笔立减 | 直连商户 | |
8687
|| 其他:银行定向促活 | 直连商户 & 合作伙伴 | |
8788
|| 其他:银行提现免费券 | 合作伙伴 | |
8889
|| 其他:银行周周惠 | 合作伙伴 | |

src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/CombineTransactions/CombineTransactionResource.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
55
/// <para>
66
/// REF: <br/>
77
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/merchant/4012158598 ]]> <br/>
8-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012231898 ]]>
8+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012231898 ]]> <br/>
9+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015124358 ]]>
910
/// </para>
1011
/// </summary>
1112
public class CombineTransactionResource : WechatTenpayEvent.Types.IDecryptedResource
@@ -46,6 +47,13 @@ public class Payer : Models.GetCombineTransactionByCombineOutTradeNumberResponse
4647
[System.Text.Json.Serialization.JsonPropertyName("combine_out_trade_no")]
4748
public string CombineOutTradeNumber { get; set; } = default!;
4849

50+
/// <summary>
51+
/// 获取或设置合单微信支付订单号。
52+
/// </summary>
53+
[Newtonsoft.Json.JsonProperty("combine_transaction_id")]
54+
[System.Text.Json.Serialization.JsonPropertyName("combine_transaction_id")]
55+
public string CombineTransactionId { get; set; } = default!;
56+
4957
/// <summary>
5058
/// 获取或设置子单列表。
5159
/// </summary>

src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/Refund/PartnerRefundResource.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
1616
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012124635 ]]> <br/>
1717
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012231901 ]]> <br/>
1818
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4013080628 ]]> <br/>
19-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4013080241 ]]>
19+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4013080241 ]]> <br/>
20+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012650317 ]]>
2021
/// </para>
2122
/// </summary>
2223
public class PartnerRefundResource : WechatTenpayEvent.Types.IDecryptedResource
@@ -56,6 +57,13 @@ public class Amount : Models.GetRefundDomesticRefundByOutRefundNumberResponse.Ty
5657
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
5758
public string TransactionId { get; set; } = default!;
5859

60+
/// <summary>
61+
/// 获取或设置个人收款方受理授权 ID。
62+
/// </summary>
63+
[Newtonsoft.Json.JsonProperty("individual_auth_id")]
64+
[System.Text.Json.Serialization.JsonPropertyName("individual_auth_id")]
65+
public string? IndividualAuthId { get; set; }
66+
5967
/// <summary>
6068
/// 获取或设置商户退款单号。
6169
/// </summary>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
using System;
2+
using System.Net.Http;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using Flurl;
6+
using Flurl.Http;
7+
8+
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
9+
{
10+
public static class WechatTenpayClientExecuteAbnormalFundProcessingExtensions
11+
{
12+
/// <summary>
13+
/// <para>异步调用 [POST] /abnormal-fund-processing/receipts/{receipt_id}/transfer-instructions 接口。</para>
14+
/// <para>
15+
/// REF: <br/>
16+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015408022 ]]>
17+
/// </para>
18+
/// </summary>
19+
/// <param name="client"></param>
20+
/// <param name="request"></param>
21+
/// <param name="cancellationToken"></param>
22+
/// <returns></returns>
23+
public static async Task<Models.CreateAbnormalFundProcessingReceiptTransferInstructionResponse> ExecuteCreateAbnormalFundProcessingReceiptTransferInstructionAsync(this WechatTenpayClient client, Models.CreateAbnormalFundProcessingReceiptTransferInstructionRequest request, CancellationToken cancellationToken = default)
24+
{
25+
if (client is null) throw new ArgumentNullException(nameof(client));
26+
if (request is null) throw new ArgumentNullException(nameof(request));
27+
28+
IFlurlRequest flurlReq = client
29+
.CreateFlurlRequest(request, HttpMethod.Post, "abnormal-fund-processing", "receipts", request.ReceiptId, "transfer-instructions");
30+
31+
return await client.SendFlurlRequestAsJsonAsync<Models.CreateAbnormalFundProcessingReceiptTransferInstructionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
32+
}
33+
34+
/// <summary>
35+
/// <para>异步调用 [GET] /abnormal-fund-processing/receipts/{receipt_id} 接口。</para>
36+
/// <para>
37+
/// REF: <br/>
38+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015408031 ]]>
39+
/// </para>
40+
/// </summary>
41+
/// <param name="client"></param>
42+
/// <param name="request"></param>
43+
/// <param name="cancellationToken"></param>
44+
/// <returns></returns>
45+
public static async Task<Models.GetAbnormalFundProcessingReceiptByReceiptIdResponse> ExecuteGetAbnormalFundProcessingReceiptByReceiptIdAsync(this WechatTenpayClient client, Models.GetAbnormalFundProcessingReceiptByReceiptIdRequest request, CancellationToken cancellationToken = default)
46+
{
47+
if (client is null) throw new ArgumentNullException(nameof(client));
48+
if (request is null) throw new ArgumentNullException(nameof(request));
49+
50+
IFlurlRequest flurlReq = client
51+
.CreateFlurlRequest(request, HttpMethod.Get, "abnormal-fund-processing", "receipts", request.ReceiptId);
52+
53+
return await client.SendFlurlRequestAsJsonAsync<Models.GetAbnormalFundProcessingReceiptByReceiptIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
54+
}
55+
}
56+
}

src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCombineTransactionExtensions.cs

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public static class WechatTenpayClientExecuteCombineTransactionExtensions
1414
/// REF: <br/>
1515
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/merchant/4012556944 ]]> <br/>
1616
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012758021 ]]> <br/>
17-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012760622 ]]>
17+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012760622 ]]> <br/>
18+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015001933 ]]>
1819
/// </para>
1920
/// </summary>
2021
/// <param name="client"></param>
@@ -155,13 +156,48 @@ public static class WechatTenpayClientExecuteCombineTransactionExtensions
155156
return await client.SendFlurlRequestAsJsonAsync<Models.CreateCombineTransactionNativeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
156157
}
157158

159+
/// <summary>
160+
/// <para>异步调用 [POST] /combine-transactions/miniprogram 接口。</para>
161+
/// <para>
162+
/// REF: <br/>
163+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012602225 ]]>
164+
/// </para>
165+
/// </summary>
166+
/// <param name="client"></param>
167+
/// <param name="request"></param>
168+
/// <param name="cancellationToken"></param>
169+
/// <returns></returns>
170+
public static async Task<Models.CreateCombineTransactionMiniProgramResponse> ExecuteCreateCombineTransactionMiniProgramAsync(this WechatTenpayClient client, Models.CreateCombineTransactionMiniProgramRequest request, CancellationToken cancellationToken = default)
171+
{
172+
if (client is null) throw new ArgumentNullException(nameof(client));
173+
if (request is null) throw new ArgumentNullException(nameof(request));
174+
175+
if (request.CombineMerchantId is null)
176+
request.CombineMerchantId = client.Credentials.MerchantId;
177+
178+
if (request.SubOrderList is not null)
179+
{
180+
foreach (var subOrder in request.SubOrderList)
181+
{
182+
if (subOrder.MerchantId is null)
183+
subOrder.MerchantId = request.CombineMerchantId;
184+
}
185+
}
186+
187+
IFlurlRequest flurlReq = client
188+
.CreateFlurlRequest(request, HttpMethod.Post, "combine-transactions", "miniprogram");
189+
190+
return await client.SendFlurlRequestAsJsonAsync<Models.CreateCombineTransactionMiniProgramResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
191+
}
192+
158193
/// <summary>
159194
/// <para>异步调用 [GET] /combine-transactions/out-trade-no/{combine_out_trade_no} 接口。</para>
160195
/// <para>
161196
/// REF: <br/>
162197
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/merchant/4012557006 ]]> <br/>
163198
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012761049 ]]> <br/>
164-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012761057 ]]>
199+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012761057 ]]> <br/>
200+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012602253 ]]>
165201
/// </para>
166202
/// </summary>
167203
/// <param name="client"></param>
@@ -179,6 +215,28 @@ public static class WechatTenpayClientExecuteCombineTransactionExtensions
179215
return await client.SendFlurlRequestAsJsonAsync<Models.GetCombineTransactionByCombineOutTradeNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
180216
}
181217

218+
/// <summary>
219+
/// <para>异步调用 [GET] /combine-transactions/id/{combine_transaction_id} 接口。</para>
220+
/// <para>
221+
/// REF: <br/>
222+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012602242 ]]>
223+
/// </para>
224+
/// </summary>
225+
/// <param name="client"></param>
226+
/// <param name="request"></param>
227+
/// <param name="cancellationToken"></param>
228+
/// <returns></returns>
229+
public static async Task<Models.GetCombineTransactionByCombineTransactionIdResponse> ExecuteGetCombineTransactionByCombineTransactionIdAsync(this WechatTenpayClient client, Models.GetCombineTransactionByCombineTransactionIdRequest request, CancellationToken cancellationToken = default)
230+
{
231+
if (client is null) throw new ArgumentNullException(nameof(client));
232+
if (request is null) throw new ArgumentNullException(nameof(request));
233+
234+
IFlurlRequest flurlReq = client
235+
.CreateFlurlRequest(request, HttpMethod.Get, "combine-transactions", "id", request.CombineTransactionId);
236+
237+
return await client.SendFlurlRequestAsJsonAsync<Models.GetCombineTransactionByCombineTransactionIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
238+
}
239+
182240
/// <summary>
183241
/// <para>异步调用 [POST] /combine-transactions/out-trade-no/{combine_out_trade_no}/close 接口。</para>
184242
/// <para>

src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteEcommerceExtensions.cs

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,30 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
303303
}
304304
#endregion
305305

306+
#region IndividualContracts
307+
/// <summary>
308+
/// <para>异步调用 [GET] /ecommerce/individual-contracts/{openid} 接口。</para>
309+
/// <para>
310+
/// REF: <br/>
311+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012739528 ]]>
312+
/// </para>
313+
/// </summary>
314+
/// <param name="client"></param>
315+
/// <param name="request"></param>
316+
/// <param name="cancellationToken"></param>
317+
/// <returns></returns>
318+
public static async Task<Models.GetEcommerceIndividualContractByOpenIdResponse> ExecuteGetEcommerceIndividualContractByOpenIdAsync(this WechatTenpayClient client, Models.GetEcommerceIndividualContractByOpenIdRequest request, CancellationToken cancellationToken = default)
319+
{
320+
if (client is null) throw new ArgumentNullException(nameof(client));
321+
if (request is null) throw new ArgumentNullException(nameof(request));
322+
323+
IFlurlRequest flurlReq = client
324+
.CreateFlurlRequest(request, HttpMethod.Get, "ecommerce", "individual-contracts", request.OpenId);
325+
326+
return await client.SendFlurlRequestAsJsonAsync<Models.GetEcommerceIndividualContractByOpenIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
327+
}
328+
#endregion
329+
306330
#region MerchantTransfer
307331
/// <summary>
308332
/// <para>异步调用 [POST] /ecommerce/mch-transfer/authorizations 接口。</para>
@@ -691,7 +715,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
691715
/// <para>异步调用 [POST] /ecommerce/refunds/apply 接口。</para>
692716
/// <para>
693717
/// REF: <br/>
694-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476892 ]]>
718+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476892 ]]> <br/>
719+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012649457 ]]>
695720
/// </para>
696721
/// </summary>
697722
/// <param name="client"></param>
@@ -713,7 +738,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
713738
/// <para>异步调用 [GET] /ecommerce/refunds/out-refund-no/{out_refund_no} 接口。</para>
714739
/// <para>
715740
/// REF: <br/>
716-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476911 ]]>
741+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476911 ]]> <br/>
742+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012650314 ]]>
717743
/// </para>
718744
/// </summary>
719745
/// <param name="client"></param>
@@ -727,7 +753,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
727753

728754
IFlurlRequest flurlReq = client
729755
.CreateFlurlRequest(request, HttpMethod.Get, "ecommerce", "refunds", "out-refund-no", request.OutRefundNumber)
730-
.SetQueryParam("sub_mchid", request.SubMerchantId);
756+
.SetQueryParam("sub_mchid", request.SubMerchantId)
757+
.SetQueryParam("individual_auth_id", request.IndividualAuthId);
731758

732759
return await client.SendFlurlRequestAsJsonAsync<Models.GetEcommerceRefundByOutRefundNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
733760
}
@@ -736,7 +763,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
736763
/// <para>异步调用 [GET] /ecommerce/refunds/id/{refund_id} 接口。</para>
737764
/// <para>
738765
/// REF: <br/>
739-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476908 ]]>
766+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012476908 ]]> <br/>
767+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012650253 ]]>
740768
/// </para>
741769
/// </summary>
742770
/// <param name="client"></param>
@@ -750,7 +778,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
750778

751779
IFlurlRequest flurlReq = client
752780
.CreateFlurlRequest(request, HttpMethod.Get, "ecommerce", "refunds", "id", request.RefundId)
753-
.SetQueryParam("sub_mchid", request.SubMerchantId);
781+
.SetQueryParam("sub_mchid", request.SubMerchantId)
782+
.SetQueryParam("individual_auth_id", request.IndividualAuthId);
754783

755784
return await client.SendFlurlRequestAsJsonAsync<Models.GetEcommerceRefundByRefundIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
756785
}
@@ -804,7 +833,8 @@ public static class WechatTenpayClientExecuteEcommerceExtensions
804833
/// <para>异步调用 [POST] /ecommerce/refunds/{refund_id}/apply-abnormal-refund 接口。</para>
805834
/// <para>
806835
/// REF: <br/>
807-
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4013080627 ]]>
836+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4013080627 ]]> <br/>
837+
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4012649274 ]]>
808838
/// </para>
809839
/// </summary>
810840
/// <param name="client"></param>

0 commit comments

Comments
 (0)