From f0c89e06bdf014acad946e6eca062b162dd86048 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 11 Aug 2023 10:55:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=90=A5=E9=94=80=E8=A1=A5=E5=B7=AE=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ientExecuteMarketingBusifavorExtensions.cs | 25 ++++ ...etingBusifavorSubsidyPayReceiptsRequest.cs | 29 +++++ ...tingBusifavorSubsidyPayReceiptsResponse.cs | 118 ++++++++++++++++++ ...ngBusifavorSubsidyPayReceiptsResponse.json | 18 +++ 4 files changed, 190 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingBusifavorExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingBusifavorExtensions.cs index 3a633efb..ddf9c5fc 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingBusifavorExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingBusifavorExtensions.cs @@ -366,6 +366,31 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [GET] /marketing/busifavor/subsidy/pay-receipts 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter9_2_19.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter9_2_19.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryMarketingBusifavorSubsidyPayReceiptsAsync(this WechatTenpayClient client, Models.QueryMarketingBusifavorSubsidyPayReceiptsRequest 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.Get, "marketing", "busifavor", "subsidy", "pay-receipts") + .SetQueryParam("stock_id", request.StockId) + .SetQueryParam("coupon_code", request.CouponCode); + + if (request.OutSubsidyNumber != null) + flurlReq.SetQueryParam("out_subsidy_no", request.OutSubsidyNumber); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + /// /// 异步调用 [GET] /marketing/busifavor/subsidy/pay-receipts/{subsidy_receipt_id} 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter9_2_18.shtml diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsRequest.cs new file mode 100644 index 00000000..1ba153fd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/busifavor/subsidy/pay-receipts 接口的请求。 + /// + public class QueryMarketingBusifavorSubsidyPayReceiptsRequest : WechatTenpayRequest + { + /// + /// 获取或设置商家券批次号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置商家券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + + /// + /// 获取或设置补差请求单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? OutSubsidyNumber { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.cs new file mode 100644 index 00000000..71ee56c9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.cs @@ -0,0 +1,118 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/busifavor/subsidy/pay-receipts 接口的响应。 + /// + public class QueryMarketingBusifavorSubsidyPayReceiptsResponse : WechatTenpayResponse + { + public static class Types + { + public class PayReceipt + { + /// + /// 获取或设置补差付款单号。 + /// + [Newtonsoft.Json.JsonProperty("subsidy_receipt_id")] + [System.Text.Json.Serialization.JsonPropertyName("subsidy_receipt_id")] + public string SubsidyReceiptId { get; set; } = default!; + + /// + /// 获取或设置商家券批次号。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = default!; + + /// + /// 获取或设置商家券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string CouponCode { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("transaction_id")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_id")] + public string TransactionId { get; set; } = default!; + + /// + /// 获取或设置营销补差扣款商户号。 + /// + [Newtonsoft.Json.JsonProperty("payer_merchant")] + [System.Text.Json.Serialization.JsonPropertyName("payer_merchant")] + public string PayerMerchantId { get; set; } = default!; + + /// + /// 获取或设置营销补差入账商户号。 + /// + [Newtonsoft.Json.JsonProperty("payee_merchant")] + [System.Text.Json.Serialization.JsonPropertyName("payee_merchant")] + public string PayeeMerchantId { get; set; } = default!; + + /// + /// 获取或设置补差付款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public int Amount { get; set; } + + /// + /// 获取或设置补差付款描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置业务请求唯一单号。 + /// + [Newtonsoft.Json.JsonProperty("out_subsidy_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_subsidy_no")] + public string OutSubsidyNumber { get; set; } = default!; + + /// + /// 获取或设置补差付款单据状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public string Status { get; set; } = default!; + + /// + /// 获取或设置补差付款失败原因。 + /// + [Newtonsoft.Json.JsonProperty("fail_reason")] + [System.Text.Json.Serialization.JsonPropertyName("fail_reason")] + public string? FailReason { get; set; } + + /// + /// 获取或设置补差付款完成时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? SuccessTime { get; set; } + + /// + /// 获取或设置补差付款发起时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + } + } + + /// + /// 获取或设置补差付款单据列表。 + /// + [Newtonsoft.Json.JsonProperty("pay_receipt_list")] + [System.Text.Json.Serialization.JsonPropertyName("pay_receipt_list")] + public Types.PayReceipt[]? PayReceiptList { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.json new file mode 100644 index 00000000..9139043c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/MarketingBusifavor/Subsidy/QueryMarketingBusifavorSubsidyPayReceiptsResponse.json @@ -0,0 +1,18 @@ +{ + "pay_receipt_list": [ + { + "subsidy_receipt_id": "1120200119165100000000000001", + "stock_id": "128888000000001", + "coupon_code": "ABCD12345678", + "transaction_id": "4200000913202101152566792388", + "payer_merchant": "1900000001", + "payee_merchant": "1900000002", + "amount": 100, + "description": "20210115DESCRIPTION", + "status": "SUCCESS", + "success_time": "2021-01-20T10:29:35.120+08:00", + "out_subsidy_no": "subsidy-abcd-12345678", + "create_time": "2021-01-20T10:29:35.120+08:00" + } + ] +}