From 89fd0a658bf96a3e4b776a0aa4c021e577b9d414 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 30 Sep 2025 12:01:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv2):=20=E6=96=B0=E5=A2=9E=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=BE=AE=E4=BF=A1=E6=9F=A5=E8=AF=A2=E7=BA=A2=E5=8C=85?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatTenpayV2/Basic_ModelDefinition.md | 2 + .../WxaMiniShop/ComplaintCallbackEvent.cs | 1 - ...ePayMarketingTransfersRedPackExtensions.cs | 22 +++ ...PayMarketingTransfersRedPackInfoRequest.cs | 4 +- ...ayMarketingTransfersRedPackInfoResponse.cs | 8 +- ...yMarketingTransfersWeWorkRedPackRequest.cs | 29 ++++ ...MarketingTransfersWeWorkRedPackResponse.cs | 159 ++++++++++++++++++ ...arketingTransfersWeWorkRedPackRequest.json | 7 + ...rketingTransfersWeWorkRedPackResponse.json | 22 +++ 9 files changed, 247 insertions(+), 7 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.json diff --git a/docs/WechatTenpayV2/Basic_ModelDefinition.md b/docs/WechatTenpayV2/Basic_ModelDefinition.md index 428a9f06..f1c370a7 100644 --- a/docs/WechatTenpayV2/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV2/Basic_ModelDefinition.md @@ -651,6 +651,8 @@ - 发放企业红包:`SendPayMarketingTransfersWeWorkRedPack` + - 查询红包记录:`GetPayMarketingTransfersWeWorkRedPack` + - 向员工付款: - 向员工付款:`CreatePayMarketingTransfersPromotionWeWorkTransfer` diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaMiniShop/ComplaintCallbackEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaMiniShop/ComplaintCallbackEvent.cs index fa1fe270..72a65591 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaMiniShop/ComplaintCallbackEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaMiniShop/ComplaintCallbackEvent.cs @@ -562,7 +562,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events /// /// 获取或设置投诉进度列表。 - /// 等效于 /// [Newtonsoft.Json.JsonProperty("history")] [Newtonsoft.Json.JsonConverter(typeof(Converters.EventPropertyComplaintHistoryListNewtonsoftJsonConverter))] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientExecutePayMarketingTransfersRedPackExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientExecutePayMarketingTransfersRedPackExtensions.cs index 407606f2..e7ce8622 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientExecutePayMarketingTransfersRedPackExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientExecutePayMarketingTransfersRedPackExtensions.cs @@ -136,6 +136,28 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2 return await client.SendFlurlRequestAsXmlAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + + /// + /// 异步调用 [POST] /mmpaymkttransfers/queryworkwxredpack 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetPayMarketingTransfersWeWorkRedPackAsync(this WechatTenpayClient client, Models.GetPayMarketingTransfersWeWorkRedPackRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "mmpaymkttransfers", "queryworkwxredpack"); + + return await client.SendFlurlRequestAsXmlAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoRequest.cs index e671fd7d..c0ee35b5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoRequest.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models +namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models { /// /// 表示 [POST] /mmpaymkttransfers/gethbinfo 接口的请求。 @@ -24,7 +24,7 @@ /// [Newtonsoft.Json.JsonProperty("mch_billno")] [System.Text.Json.Serialization.JsonPropertyName("mch_billno")] - public string MerchantBillId { get; set; } = string.Empty; + public string MerchantBillNumber { get; set; } = string.Empty; /// /// 获取或设置订单类型。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoResponse.cs index a089344b..2a2bcd77 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/GetPayMarketingTransfersRedPackInfoResponse.cs @@ -22,14 +22,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models public class ReceiverItem { /// - /// 获取或设置用户的 OpenId。 + /// 获取或设置领取用户的 OpenId。 /// [Newtonsoft.Json.JsonProperty("openid")] [System.Text.Json.Serialization.JsonPropertyName("openid")] public string OpenId { get; set; } = default!; /// - /// 获取或设置金额(单位:分)。 + /// 获取或设置领取金额(单位:分)。 /// [Newtonsoft.Json.JsonProperty("amount")] [System.Text.Json.Serialization.JsonPropertyName("amount")] @@ -70,11 +70,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models #pragma warning restore CS8618 /// - /// 获取或设置商户定单号。 + /// 获取或设置商户订单号。 /// [Newtonsoft.Json.JsonProperty("mch_billno")] [System.Text.Json.Serialization.JsonPropertyName("mch_billno")] - public string PartnerTradeNumber { get; set; } = default!; + public string MerchantBillNumber { get; set; } = default!; /// /// 获取或设置微信红包订单号。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.cs new file mode 100644 index 00000000..43a9e7ac --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models +{ + /// + /// 表示 [POST] /mmpaymkttransfers/queryworkwxredpack 接口的请求。 + /// + public class GetPayMarketingTransfersWeWorkRedPackRequest : WechatTenpaySignableRequest + { + /// + /// + /// + [Newtonsoft.Json.JsonProperty("mch_id")] + [System.Text.Json.Serialization.JsonPropertyName("mch_id")] + public override string? MerchantId { get; set; } + + /// + /// + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public override string? AppId { get; set; } + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("mch_billno")] + [System.Text.Json.Serialization.JsonPropertyName("mch_billno")] + public string MerchantBillNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.cs new file mode 100644 index 00000000..b9d04d21 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.cs @@ -0,0 +1,159 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Models +{ + /// + /// 表示 [POST] /mmpaymkttransfers/queryworkwxredpack 接口的响应。 + /// + public class GetPayMarketingTransfersWeWorkRedPackResponse : WechatTenpaySignableResponse + { + /// + /// + /// + [Newtonsoft.Json.JsonProperty("mch_id")] + [System.Text.Json.Serialization.JsonPropertyName("mch_id")] +#pragma warning disable CS8618 +#pragma warning disable CS8765 + public override string MerchantId { get; set; } +#pragma warning restore CS8765 +#pragma warning restore CS8618 + + /// + /// + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] +#pragma warning disable CS8618 +#pragma warning disable CS8765 + public override string AppId { get; set; } +#pragma warning restore CS8765 +#pragma warning restore CS8618 + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("mch_billno")] + [System.Text.Json.Serialization.JsonPropertyName("mch_billno")] + public string MerchantBillNumber { get; set; } = default!; + + /// + /// 获取或设置红包单号。 + /// + [Newtonsoft.Json.JsonProperty("detail_id")] + [System.Text.Json.Serialization.JsonPropertyName("detail_id")] + public string DetailId { get; set; } = default!; + + /// + /// 获取或设置红包状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public string Status { get; set; } = default!; + + /// + /// 获取或设置发放类型。 + /// + [Newtonsoft.Json.JsonProperty("send_type")] + [System.Text.Json.Serialization.JsonPropertyName("send_type")] + public string SendType { get; set; } = default!; + + /// + /// 获取或设置红包金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_amount")] + [System.Text.Json.Serialization.JsonPropertyName("total_amount")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int TotalAmount { get; set; } + + /// + /// 获取或设置红包祝福语。 + /// + [Newtonsoft.Json.JsonProperty("wishing")] + [System.Text.Json.Serialization.JsonPropertyName("wishing")] + public string? Wishing { get; set; } + + /// + /// 获取或设置活动名称。 + /// + [Newtonsoft.Json.JsonProperty("act_name")] + [System.Text.Json.Serialization.JsonPropertyName("act_name")] + public string? ActivityName { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + + /// + /// 获取或设置红包发送时间。 + /// + [Newtonsoft.Json.JsonProperty("send_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("send_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] + public DateTimeOffset SendTime { get; set; } + + /// + /// 获取或设置红包退款时间。 + /// + [Newtonsoft.Json.JsonProperty("refund_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("refund_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] + public DateTimeOffset? RefundTime { get; set; } + + /// + /// 获取或设置红包退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("refund_amount")] + [System.Text.Json.Serialization.JsonPropertyName("refund_amount")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int RefundAmount { get; set; } + + /// + /// 获取或设置失败原因。 + /// + [Newtonsoft.Json.JsonProperty("reason")] + [System.Text.Json.Serialization.JsonPropertyName("reason")] + public string? FailReason { get; set; } + + /// + /// 获取或设置红包发送者名称。 + /// + [Newtonsoft.Json.JsonProperty("sender_name")] + [System.Text.Json.Serialization.JsonPropertyName("sender_name")] + public string? SenderName { get; set; } + + /// + /// 获取或设置红包发送者头像 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("sender_header_media_id")] + [System.Text.Json.Serialization.JsonPropertyName("sender_header_media_id")] + public string? SenderHeadImageMediaId { get; set; } + + /// + /// 获取或设置领取红包的用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置领取金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public int Amount { get; set; } + + /// + /// 获取或设置领取时间。 + /// + [Newtonsoft.Json.JsonProperty("rcv_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("rcv_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))] + public DateTimeOffset ReceiveTime { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.json new file mode 100644 index 00000000..07388e82 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackRequest.json @@ -0,0 +1,7 @@ +{ + "nonce_str": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS", + "sign": "C380BEC2BFD727A4B6845133519F3AD6", + "mch_billno": "123456", + "mch_id": "10000098", + "appid": "wx8888888888888888" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.json new file mode 100644 index 00000000..7d967f0a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV2.UnitTests/ModelSamples/PayMarketingTransfersRedPack/WeWork/GetPayMarketingTransfersWeWorkRedPackResponse.json @@ -0,0 +1,22 @@ +{ + "return_code": "SUCCESS", + "return_msg": "ok", + "sign": "C380BEC2BFD727A4B6845133519F3AD6", + "result_code": "SUCCESS", + "mch_billno": "123456", + "mch_id": "10000098", + "detail_id": "43235678654322356", + "status": "RECEIVED", + "send_type": "API", + "total_amount": "5000", + "reason": "余额不足", + "send_time": "2017-07-20 22:45:12", + "wishing": "新年快乐", + "remark": "新年红包", + "act_name": "新年红包", + "openid": "ohO4GtzOAAYMp2yapORH3dQB3W18", + "amount": "100", + "rcv_time": "2017-07-20 22:46:59", + "sender_name": "XX活动", + "sender_header_media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0" +}