From bbf970d3edce9d93717256c6855e7cd2d639cc97 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Tue, 10 Oct 2023 15:15:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E6=8E=A5=E5=85=A5=E5=AF=B9=E5=A4=96=E6=94=B6?= =?UTF-8?q?=E6=AC=BE=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatWork/Basic_ModelDefinition.md | 77 ++--- ...DomesticRefundByOutRefundNumberResponse.cs | 3 +- ...ClientExecuteCgibinMiniAppPayExtensions.cs | 158 ++++++++++ .../CgibinMiniAppPayApplyMechantRequest.cs | 0 .../CgibinMiniAppPayApplyMechantResponse.cs | 0 ...ibinMiniAppPayGetApplymentStatusRequest.cs | 0 ...binMiniAppPayGetApplymentStatusResponse.cs | 0 .../Bill/CgibinMiniAppPayGetBillRequest.cs | 36 +++ .../Bill/CgibinMiniAppPayGetBillResponse.cs | 36 +++ .../CgibinMiniAppPayCloseOrderRequest.cs | 22 ++ .../CgibinMiniAppPayCloseOrderResponse.cs | 9 + .../CgibinMiniAppPayCreateOrderRequest.cs | 251 ++++++++++++++++ .../CgibinMiniAppPayCreateOrderResponse.cs | 15 + .../Order/CgibinMiniAppPayGetOrderRequest.cs | 22 ++ .../Order/CgibinMiniAppPayGetOrderResponse.cs | 278 ++++++++++++++++++ .../Order/CgibinMiniAppPayGetSignRequest.cs | 44 +++ .../Order/CgibinMiniAppPayGetSignResponse.cs | 15 + .../CgibinMiniAppPayGetRefundDetailRequest.cs | 22 ++ ...CgibinMiniAppPayGetRefundDetailResponse.cs | 163 ++++++++++ .../Refund/CgibinMiniAppPayRefundRequest.cs | 85 ++++++ .../Refund/CgibinMiniAppPayRefundResponse.cs | 40 +++ .../CgibinMiniAppPayApplyMechantRequest.json | 0 .../CgibinMiniAppPayApplyMechantResponse.json | 0 ...inMiniAppPayGetApplymentStatusRequest.json | 0 ...nMiniAppPayGetApplymentStatusResponse.json | 0 .../Bill/CgibinMiniAppPayGetBillResponse.json | 6 + .../CgibinMiniAppPayCloseOrderRequest.json | 4 + .../CgibinMiniAppPayCreateOrderRequest.json | 40 +++ .../CgibinMiniAppPayCreateOrderResponse.json | 5 + .../CgibinMiniAppPayGetOrderRequest.json | 4 + .../CgibinMiniAppPayGetOrderResponse.json | 10 + .../Order/CgibinMiniAppPayGetSignRequest.json | 7 + .../CgibinMiniAppPayGetSignResponse.json | 5 + ...gibinMiniAppPayGetRefundDetailRequest.json | 4 + ...ibinMiniAppPayGetRefundDetailResponse.json | 17 ++ .../Refund/CgibinMiniAppPayRefundRequest.json | 13 + .../CgibinMiniAppPayRefundResponse.json | 9 + 37 files changed, 1360 insertions(+), 40 deletions(-) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayApplyMechantRequest.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayApplyMechantResponse.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayGetApplymentStatusRequest.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayGetApplymentStatusResponse.cs (100%) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.cs rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayApplyMechantRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayApplyMechantResponse.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayGetApplymentStatusRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/{ => Applyment}/CgibinMiniAppPayGetApplymentStatusResponse.json (100%) create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.json diff --git a/docs/WechatWork/Basic_ModelDefinition.md b/docs/WechatWork/Basic_ModelDefinition.md index d31d142e..1de60c48 100644 --- a/docs/WechatWork/Basic_ModelDefinition.md +++ b/docs/WechatWork/Basic_ModelDefinition.md @@ -26,43 +26,44 @@ [展开查看] -| | 微信 API | 开发模式 | 备注 | -| :-: | :-------------------------------: | :-------------------------------: | :----------------------------: | -| √ | 开发接入 | 企业 & 第三方 & 服务商 & 智慧硬件 | | -| √ | 基础:通讯录管理 | 企业 & 第三方 & 服务商 | | -| √ | 基础:身份验证 | 企业 & 第三方 & 服务商 | | -| √ | 基础:企业互联 | 企业 & 第三方 & 服务商 | | -| √ | 基础:上下游 | 企业 & 第三方 & 服务商 | | -| √ | 基础:消息推送 | 企业 & 第三方 & 服务商 | | -| √ | 基础:应用管理 | 企业 & 第三方 & 服务商 | | -| √ | 基础:素材管理 | 企业 & 第三方 & 服务商 | | -| √ | 基础:电子发票 | 企业 & 第三方 & 服务商 | | -| √ | 基础:应用授权 | 第三方 & 服务商 | | -| √ | 基础:接口调用许可 | 第三方 & 服务商 | | -| √ | 基础:收银台 | 第三方 & 服务商 | | -| √ | 基础:推广二维码 | 第三方 & 服务商 | | -| √ | 基础:账号 ID | 第三方 & 服务商 | | -| √ | 连接微信:客户联系 | 企业 & 第三方 & 服务商 | | -| √ | 连接微信:微信客服 | 企业 & 第三方 & 服务商 | | -| × | 连接微信:企业支付 | 企业 & 第三方 & 服务商 | 异构协议,请使用 TenpayV2 模块 | -| × | 连接微信:会话内容存档 | 企业 | 异构协议,需独立模块 | -| √ | 连接微信:家校沟通 | 企业 & 第三方 & 服务商 | | -| √ | 连接微信:家校应用 | 企业 & 第三方 & 服务商 | | -| √ | 连接微信:政民沟通 | 企业 & 第三方 & 服务商 | | -| √ | 办公:邮件 | 企业 & 第三方 & 服务商 | | -| √ | 办公:文档 | 企业 & 第三方 & 服务商 | | -| √ | 办公:日程 | 企业 & 第三方 & 服务商 | | -| √ | 办公:会议 | 企业 & 第三方 & 服务商 | | -| √ | 办公:微盘 | 企业 & 第三方 & 服务商 | | -| √ | 办公:直播 | 企业 & 第三方 & 服务商 | | -| √ | 办公:公费电话 | 企业 | | -| √ | 办公:打卡 | 企业 & 第三方 & 服务商 | | -| √ | 办公:审批 | 企业 & 第三方 & 服务商 | | -| √ | 办公:汇报 | 企业 | | -| √ | 办公:人事助手 | 企业 | | -| √ | 办公:会议室 | 企业 | | -| √ | 办公:紧急通知 | 企业 | | -| √ | 智慧硬件 | 第三方 | | -| √ | 硬件云端接入 | 智慧硬件 | | +| | 微信 API | 开发模式 | 备注 | +| :-: | :---------------------------: | :-------------------------------: | :----------------------------: | +| √ | 开发接入 | 企业 & 第三方 & 服务商 & 智慧硬件 | | +| √ | 基础:账号 ID | 企业 & 第三方 & 服务商 | | +| √ | 基础:通讯录管理 | 企业 & 第三方 & 服务商 | | +| √ | 基础:身份验证 | 企业 & 第三方 & 服务商 | | +| √ | 基础:企业互联 | 企业 & 第三方 & 服务商 | | +| √ | 基础:上下游 | 企业 & 第三方 & 服务商 | | +| √ | 基础:消息推送 | 企业 & 第三方 & 服务商 | | +| √ | 基础:应用管理 | 企业 & 第三方 & 服务商 | | +| √ | 基础:素材管理 | 企业 & 第三方 & 服务商 | | +| √ | 基础:电子发票 | 企业 & 第三方 & 服务商 | | +| √ | 基础:应用授权 | 第三方 & 服务商 | | +| √ | 基础:接口调用许可 | 第三方 & 服务商 | | +| √ | 基础:收银台 | 第三方 & 服务商 | | +| √ | 基础:推广二维码 | 第三方 & 服务商 | | +| √ | 连接微信:客户联系 | 企业 & 第三方 & 服务商 | | +| √ | 连接微信:微信客服 | 企业 & 第三方 & 服务商 | | +| × | 连接微信:企业支付 | 企业 & 第三方 & 服务商 | 异构协议,请使用 TenpayV2 模块 | +| √ | 连接微信:小程序接入对外收款 | 企业 | | +| √ | 连接微信:会话内容存档 | 企业 | | +| √ | 连接微信:家校沟通 | 企业 & 第三方 & 服务商 | | +| √ | 连接微信:家校应用 | 企业 & 第三方 & 服务商 | | +| √ | 连接微信:政民沟通 | 企业 & 第三方 & 服务商 | | +| √ | 办公:邮件 | 企业 & 第三方 & 服务商 | | +| √ | 办公:文档 | 企业 & 第三方 & 服务商 | | +| √ | 办公:日程 | 企业 & 第三方 & 服务商 | | +| √ | 办公:会议 | 企业 & 第三方 & 服务商 | | +| √ | 办公:微盘 | 企业 & 第三方 & 服务商 | | +| √ | 办公:直播 | 企业 & 第三方 & 服务商 | | +| √ | 办公:公费电话 | 企业 | | +| √ | 办公:打卡 | 企业 & 第三方 & 服务商 | | +| √ | 办公:审批 | 企业 & 第三方 & 服务商 | | +| √ | 办公:汇报 | 企业 | | +| √ | 办公:人事助手 | 企业 | | +| √ | 办公:会议室 | 企业 | | +| √ | 办公:紧急通知 | 企业 | | +| √ | 智慧硬件 | 第三方 | | +| √ | 硬件云端接入 | 智慧硬件 | | diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Refund/GetRefundDomesticRefundByOutRefundNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Refund/GetRefundDomesticRefundByOutRefundNumberResponse.cs index bae27fd6..c65057e3 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Refund/GetRefundDomesticRefundByOutRefundNumberResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Refund/GetRefundDomesticRefundByOutRefundNumberResponse.cs @@ -47,11 +47,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models /// /// 获取或设置退款币种。 - /// 默认值:CNY /// [Newtonsoft.Json.JsonProperty("currency")] [System.Text.Json.Serialization.JsonPropertyName("currency")] - public string Currency { get; set; } = "CNY"; + public string Currency { get; set; } = default!; /// /// 获取或设置用户支付金额(单位:分)。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs index 29c39437..e6895135 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinMiniAppPayExtensions.cs @@ -36,6 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); } + #region Applyment /// /// 异步调用 [POST] /cgi-bin/miniapppay/apply_mch 接口。 /// REF: https://developer.work.weixin.qq.com/document/path/98973 @@ -75,5 +76,162 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + #endregion + + #region Bill + /// + /// 异步调用 [GET] /cgi-bin/miniapppay/get_bill 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/98115 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayGetBillAsync(this WechatWorkClient client, Models.CgibinMiniAppPayGetBillRequest 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, "cgi-bin", "miniapppay", "get_bill") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("mchid", request.MerchantId) + .SetQueryParam("bill_date", request.BillDateString) + .SetQueryParam("bill_type", request.BillType) + .SetQueryParam("tar_type", request.TarType); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Order + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/create_order 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97322 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayCreateOrderAsync(this WechatWorkClient client, Models.CgibinMiniAppPayCreateOrderRequest 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, "cgi-bin", "miniapppay", "create_order") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/get_order 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97323 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayGetOrderAsync(this WechatWorkClient client, Models.CgibinMiniAppPayGetOrderRequest 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, "cgi-bin", "miniapppay", "get_order") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/close_order 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97324 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayCloseOrderAsync(this WechatWorkClient client, Models.CgibinMiniAppPayCloseOrderRequest 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, "cgi-bin", "miniapppay", "close_order") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/get_sign 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/98130 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayGetSignAsync(this WechatWorkClient client, Models.CgibinMiniAppPayGetSignRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.Nonce == null) + request.Nonce = Guid.NewGuid().ToString("N"); + + if (request.Timestamp == null) + request.Timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds(); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "miniapppay", "get_sign") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region Refund + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/refund 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97333 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayRefundAsync(this WechatWorkClient client, Models.CgibinMiniAppPayRefundRequest 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, "cgi-bin", "miniapppay", "refund") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/miniapppay/get_refund_detail 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97352 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMiniAppPayGetRefundDetailAsync(this WechatWorkClient client, Models.CgibinMiniAppPayGetRefundDetailRequest 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, "cgi-bin", "miniapppay", "get_refund_detail") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillRequest.cs new file mode 100644 index 00000000..079219c2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/miniapppay/get_bill 接口的请求。 + /// + public class CgibinMiniAppPayGetBillRequest : WechatWorkRequest + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置账单日期字符串(格式:yyyy-MM-dd)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BillDateString { get; set; } = string.Empty; + + /// + /// 获取或设置账单类型。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? BillType { get; set; } + + /// + /// 获取或设置压缩类型。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? TarType { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.cs new file mode 100644 index 00000000..362392a7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [GET] /cgi-bin/miniapppay/get_bill 接口的响应。 + /// + public class CgibinMiniAppPayGetBillResponse : WechatWorkResponse + { + /// + /// 获取或设置哈希类型。 + /// + [Newtonsoft.Json.JsonProperty("hash_type")] + [System.Text.Json.Serialization.JsonPropertyName("hash_type")] + public string HashType { get; set; } = default!; + + /// + /// 获取或设置哈希值。 + /// + [Newtonsoft.Json.JsonProperty("hash_value")] + [System.Text.Json.Serialization.JsonPropertyName("hash_value")] + public string HashValue { get; set; } = default!; + + /// + /// 获取或设置账单下载地址。 + /// + [Newtonsoft.Json.JsonProperty("download_url")] + [System.Text.Json.Serialization.JsonPropertyName("download_url")] + public string DownloadUrl { get; set; } = default!; + + /// + /// 获取或设置校验头。 + /// + [Newtonsoft.Json.JsonProperty("auth")] + [System.Text.Json.Serialization.JsonPropertyName("auth")] + public string Authorization { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.cs new file mode 100644 index 00000000..80b7af55 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/close_order 接口的请求。 + /// + public class CgibinMiniAppPayCloseOrderRequest : WechatWorkRequest + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderResponse.cs new file mode 100644 index 00000000..466a9b4e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/close_order 接口的响应。 + /// + public class CgibinMiniAppPayCloseOrderResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.cs new file mode 100644 index 00000000..983a85ed --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.cs @@ -0,0 +1,251 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/create_order 接口的请求。 + /// + public class CgibinMiniAppPayCreateOrderRequest : WechatWorkRequest + { + public static class Types + { + public class Amount + { + /// + /// 获取或设置订单总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + + /// + /// 获取或设置币种。 + /// 默认值:CNY + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string Currency { get; set; } = "CNY"; + } + + public class Payer + { + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + } + + public class Scene + { + public static class Types + { + public class Store + { + /// + /// 获取或设置门店编号。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string Id { get; set; } = string.Empty; + + /// + /// 获取或设置门店名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置地区编码。 + /// + [Newtonsoft.Json.JsonProperty("area_code")] + [System.Text.Json.Serialization.JsonPropertyName("area_code")] + public string? AreaCode { get; set; } + + /// + /// 获取或设置详细地址。 + /// + [Newtonsoft.Json.JsonProperty("address")] + [System.Text.Json.Serialization.JsonPropertyName("address")] + public string? Address { get; set; } + } + } + + /// + /// 获取或设置用户终端 IP。 + /// + [Newtonsoft.Json.JsonProperty("payer_client_ip")] + [System.Text.Json.Serialization.JsonPropertyName("payer_client_ip")] + public string ClientIp { get; set; } = string.Empty; + + /// + /// 获取或设置商户端设备号。 + /// + [Newtonsoft.Json.JsonProperty("device_id")] + [System.Text.Json.Serialization.JsonPropertyName("device_id")] + public string? DeviceId { get; set; } + + /// + /// 获取或设置商户门店信息。 + /// + [Newtonsoft.Json.JsonProperty("store_info")] + [System.Text.Json.Serialization.JsonPropertyName("store_info")] + public Types.Store? Store { get; set; } + } + + public class Detail + { + public static class Types + { + public class GoodsDetail + { + /// + /// 获取或设置商户侧商品编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_goods_id")] + public string MerchantGoodsId { get; set; } = string.Empty; + + /// + /// 获取或设置微信侧商品编码。 + /// + [Newtonsoft.Json.JsonProperty("wechatpay_goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("wechatpay_goods_id")] + public string? WechatpayGoodsId { get; set; } + + /// + /// 获取或设置商品名称。 + /// + [Newtonsoft.Json.JsonProperty("goods_name")] + [System.Text.Json.Serialization.JsonPropertyName("goods_name")] + public string? GoodsName { get; set; } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("quantity")] + [System.Text.Json.Serialization.JsonPropertyName("quantity")] + public int Quantity { get; set; } + + /// + /// 获取或设置商品单价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("unit_price")] + [System.Text.Json.Serialization.JsonPropertyName("unit_price")] + public int UnitPrice { get; set; } + } + } + + /// + /// 获取或设置订单原价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("cost_price")] + [System.Text.Json.Serialization.JsonPropertyName("cost_price")] + public int? CostPrice { get; set; } + + /// + /// 获取或设置商品小票 ID。 + /// + [Newtonsoft.Json.JsonProperty("invoice_id")] + [System.Text.Json.Serialization.JsonPropertyName("invoice_id")] + public string? InvoiceId { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("goods_detail")] + [System.Text.Json.Serialization.JsonPropertyName("goods_detail")] + public List? GoodsList { get; set; } + } + } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置下单场景 Key。 + /// + [Newtonsoft.Json.JsonProperty("scenekey")] + [System.Text.Json.Serialization.JsonPropertyName("scenekey")] + public string? SceneKey { get; set; } + + /// + /// 获取或设置订单金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene Scene { get; set; } = new Types.Scene(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.cs new file mode 100644 index 00000000..ce2cf472 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/create_order 接口的响应。 + /// + public class CgibinMiniAppPayCreateOrderResponse : WechatWorkResponse + { + /// + /// 获取或设置预支付交易会话标识 。 + /// + [Newtonsoft.Json.JsonProperty("prepay_id")] + [System.Text.Json.Serialization.JsonPropertyName("prepay_id")] + public string PrepayId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.cs new file mode 100644 index 00000000..08a48c2a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_order 接口的请求。 + /// + public class CgibinMiniAppPayGetOrderRequest : WechatWorkRequest + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.cs new file mode 100644 index 00000000..ade69297 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.cs @@ -0,0 +1,278 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_order 接口的响应。 + /// + public class CgibinMiniAppPayGetOrderResponse : WechatWorkResponse + { + public static class Types + { + public class Payer + { + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + } + + public class Amount + { + /// + /// 获取或设置总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + + /// + /// 获取或设置币种。 + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string? Currency { get; set; } + + /// + /// 获取或设置用户支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("payer_total")] + [System.Text.Json.Serialization.JsonPropertyName("payer_total")] + public int? PayerTotal { get; set; } + + /// + /// 获取或设置用户支付币种。 + /// + [Newtonsoft.Json.JsonProperty("payer_currency")] + [System.Text.Json.Serialization.JsonPropertyName("payer_currency")] + public string? PayerCurrency { get; set; } + } + + public class Scene + { + /// + /// 获取或设置商户端设备号。 + /// + [Newtonsoft.Json.JsonProperty("device_id")] + [System.Text.Json.Serialization.JsonPropertyName("device_id")] + public string? DeviceId { get; set; } + } + + public class Promotion + { + public static class Types + { + public class GoodsDetail + { + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("goods_id")] + public string GoodsId { get; set; } = default!; + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("quantity")] + [System.Text.Json.Serialization.JsonPropertyName("quantity")] + public int Quantity { get; set; } + + /// + /// 获取或设置商品单价(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("unit_price")] + [System.Text.Json.Serialization.JsonPropertyName("unit_price")] + public int UnitPrice { get; set; } + + /// + /// 获取或设置商品优惠金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_amount")] + [System.Text.Json.Serialization.JsonPropertyName("discount_amount")] + public int DiscountAmount { get; set; } + + /// + /// 获取或设置商品备注。 + /// + [Newtonsoft.Json.JsonProperty("goods_remark")] + [System.Text.Json.Serialization.JsonPropertyName("goods_remark")] + public string? GoodsRemark { get; set; } + } + } + + /// + /// 获取或设置券 ID。 + /// + [Newtonsoft.Json.JsonProperty("coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_id")] + public string CouponId { get; set; } = default!; + + /// + /// 获取或设置优惠名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string Scope { get; set; } = default!; + + /// + /// 获取或设置优惠类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置优惠券面额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public int Amount { get; set; } + + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string? StockId { get; set; } + + /// + /// 获取或设置微信出资(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("wechatpay_contribute")] + [System.Text.Json.Serialization.JsonPropertyName("wechatpay_contribute")] + public int? WechatpayContribute { get; set; } + + /// + /// 获取或设置商户出资(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("merchant_contribute")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_contribute")] + public int? MerchantContribute { get; set; } + + /// + /// 获取或设置其他出资(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("other_contribute")] + [System.Text.Json.Serialization.JsonPropertyName("other_contribute")] + public int? OtherContribute { get; set; } + + /// + /// 获取或设置优惠币种。 + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string? Currency { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("goods_detail")] + [System.Text.Json.Serialization.JsonPropertyName("goods_detail")] + public Types.GoodsDetail[]? GoodsList { get; set; } + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("transaction_id")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_id")] + public string? TransactionId { get; set; } + + /// + /// 获取或设置交易类型。 + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = default!; + + /// + /// 获取或设置交易状态。 + /// + [Newtonsoft.Json.JsonProperty("trade_state")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state")] + public string TradeState { get; set; } = default!; + + /// + /// 获取或设置交易状态描述。 + /// + [Newtonsoft.Json.JsonProperty("trade_state_desc")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state_desc")] + public string TradeStateDescription { get; set; } = default!; + + /// + /// 获取或设置付款银行类型。 + /// + [Newtonsoft.Json.JsonProperty("bank_type")] + [System.Text.Json.Serialization.JsonPropertyName("bank_type")] + public string? BankType { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { 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("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.cs new file mode 100644 index 00000000..49966b11 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.cs @@ -0,0 +1,44 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_sign 接口的请求。 + /// + public class CgibinMiniAppPayGetSignRequest : WechatWorkRequest + { + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置预支付交易会话标识 。 + /// + [Newtonsoft.Json.JsonProperty("prepay_id")] + [System.Text.Json.Serialization.JsonPropertyName("prepay_id")] + public string PrepayId { get; set; } = string.Empty; + + /// + /// 获取或设置签名方式。 + /// 默认值:RSA + /// + [Newtonsoft.Json.JsonProperty("sign_type")] + [System.Text.Json.Serialization.JsonPropertyName("sign_type")] + public string SignType { get; set; } = "RSA"; + + /// + /// 获取或设置随机字符串。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonProperty("nonce")] + [System.Text.Json.Serialization.JsonPropertyName("nonce")] + public string? Nonce { get; set; } + + /// + /// 获取或设置当前时间戳。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonProperty("timestamp")] + [System.Text.Json.Serialization.JsonPropertyName("timestamp")] + public long? Timestamp { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.cs new file mode 100644 index 00000000..f946609a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_sign 接口的响应。 + /// + public class CgibinMiniAppPayGetSignResponse : WechatWorkResponse + { + /// + /// 获取或设置签名值。 + /// + [Newtonsoft.Json.JsonProperty("pay_sign")] + [System.Text.Json.Serialization.JsonPropertyName("pay_sign")] + public string PaySign { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.cs new file mode 100644 index 00000000..10f111f0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_refund_detail 接口的请求。 + /// + public class CgibinMiniAppPayGetRefundDetailRequest : WechatWorkRequest + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置商户退款单号。 + /// + [Newtonsoft.Json.JsonProperty("out_refund_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_refund_no")] + public string OutRefundNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.cs new file mode 100644 index 00000000..edd45a4d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.cs @@ -0,0 +1,163 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/get_refund_detail 接口的响应。 + /// + public class CgibinMiniAppPayGetRefundDetailResponse : WechatWorkResponse + { + public static class Types + { + public class Amount + { + /// + /// 获取或设置退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("refund")] + [System.Text.Json.Serialization.JsonPropertyName("refund")] + public int Refund { get; set; } + + /// + /// 获取或设置退款币种。 + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string Currency { get; set; } = default!; + + /// + /// 获取或设置用户退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("payer_refund")] + [System.Text.Json.Serialization.JsonPropertyName("payer_refund")] + public int? PayerRefund { get; set; } + + /// + /// 获取或设置优惠退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_refund")] + [System.Text.Json.Serialization.JsonPropertyName("discount_refund")] + public int? DiscountRefund { get; set; } + } + + public class Promotion + { + /// + /// 获取或设置券 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotion_id")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_id")] + public string PromotionId { get; set; } = default!; + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string Scope { get; set; } = default!; + + /// + /// 获取或设置优惠类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置优惠券面额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public int Amount { get; set; } + + /// + /// 获取或设置优惠退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("refund_amount")] + [System.Text.Json.Serialization.JsonPropertyName("refund_amount")] + public int RefundAmount { get; set; } + } + } + + /// + /// 获取或设置微信支付退款号。 + /// + [Newtonsoft.Json.JsonProperty("refund_id")] + [System.Text.Json.Serialization.JsonPropertyName("refund_id")] + public string RefundId { get; set; } = default!; + + /// + /// 获取或设置商户退款单号。 + /// + [Newtonsoft.Json.JsonProperty("out_refund_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_refund_no")] + public string OutRefundNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("transaction_id")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_id")] + public string TransactionId { get; set; } = default!; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置退款渠道。 + /// + [Newtonsoft.Json.JsonProperty("channel")] + [System.Text.Json.Serialization.JsonPropertyName("channel")] + public string Channel { get; set; } = default!; + + /// + /// 获取或设置退款入账账户。 + /// + [Newtonsoft.Json.JsonProperty("user_received_account")] + [System.Text.Json.Serialization.JsonPropertyName("user_received_account")] + public string UserReceivedAccount { get; set; } = default!; + + /// + /// 获取或设置退款状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public string Status { get; set; } = default!; + + /// + /// 获取或设置退款成功时间。 + /// + [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("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠退款信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.cs new file mode 100644 index 00000000..bf8e61ee --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.cs @@ -0,0 +1,85 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/refund 接口的请求。 + /// + public class CgibinMiniAppPayRefundRequest : WechatWorkRequest + { + public static class Types + { + public class Amount + { + /// + /// 获取或设置原订单金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + + /// + /// 获取或设置退款金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("refund")] + [System.Text.Json.Serialization.JsonPropertyName("refund")] + public int Refund { get; set; } + + /// + /// 获取或设置退款币种。 + /// 默认值:CNY + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string Currency { get; set; } = "CNY"; + } + } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置商户退款单号。 + /// + [Newtonsoft.Json.JsonProperty("out_refund_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_refund_no")] + public string OutRefundNumber { get; set; } = string.Empty; + + /// + /// 获取或设置退款原因。 + /// + [Newtonsoft.Json.JsonProperty("reason")] + [System.Text.Json.Serialization.JsonPropertyName("reason")] + public string? Reason { get; set; } + + /// + /// 获取或设置退款资金来源。 + /// + [Newtonsoft.Json.JsonProperty("funds_account")] + [System.Text.Json.Serialization.JsonPropertyName("funds_account")] + public string? FundsAccount { get; set; } + + /// + /// 获取或设置退款金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.cs new file mode 100644 index 00000000..6940df20 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.cs @@ -0,0 +1,40 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/miniapppay/refund 接口的响应。 + /// + public class CgibinMiniAppPayRefundResponse : WechatWorkResponse + { + public static class Types + { + public class Amount : CgibinMiniAppPayGetRefundDetailResponse.Types.Amount + { + } + + public class Promotion : CgibinMiniAppPayGetRefundDetailResponse.Types.Promotion + { + } + } + + /// + /// 获取或设置商户退款单号。 + /// + [Newtonsoft.Json.JsonProperty("out_refund_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_refund_no")] + public string OutRefundNumber { get; set; } = default!; + + /// + /// 获取或设置退款金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠退款信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayApplyMechantResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayApplyMechantResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/CgibinMiniAppPayGetApplymentStatusResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Applyment/CgibinMiniAppPayGetApplymentStatusResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.json new file mode 100644 index 00000000..d442a8a4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Bill/CgibinMiniAppPayGetBillResponse.json @@ -0,0 +1,6 @@ +{ + "download_url": "xxx", + "hash_type": "xxx", + "hash_value": "xxx", + "auth": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.json new file mode 100644 index 00000000..ec085283 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCloseOrderRequest.json @@ -0,0 +1,4 @@ +{ + "mchid": "xxx", + "out_trade_no": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.json new file mode 100644 index 00000000..0cb8fbdf --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderRequest.json @@ -0,0 +1,40 @@ +{ + "appid": "xx", + "mchid": "xx", + "out_trade_no": "xxxx", + "description": "xxxxx", + "scenekey": "xxxx", + "amount": { + "total": 100, + "currency": "CNY" + }, + "payer": { + "openid": "xxx" + }, + "time_expire": "2015-05-20T13:29:35+08:00", + "attach": "xxxxx", + "goods_tag": "xxxxxxx", + "scene_info": { + "payer_client_ip": "127.0.0.1", + "device_id": "xxxxxxx", + "store_info": { + "id": "xxxx", + "name": "xxxx", + "area_code": "xxxx", + "address": "xxxxx" + } + }, + "detail": { + "cost_price": 123, + "invoice_id": "asdfasdfasdf", + "goods_detail": [ + { + "merchant_goods_id": "xxxx", + "wechatpay_goods_id": "xxxx", + "goods_name": "iPhoneX 256G", + "quantity": 1, + "unit_price": 828800 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.json new file mode 100644 index 00000000..651dee02 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayCreateOrderResponse.json @@ -0,0 +1,5 @@ +{ + "prepay_id": "xxxxxx", + "errcode": 0, + "errmsg": "ok" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.json new file mode 100644 index 00000000..ec085283 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderRequest.json @@ -0,0 +1,4 @@ +{ + "mchid": "xxx", + "out_trade_no": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.json new file mode 100644 index 00000000..4105020f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetOrderResponse.json @@ -0,0 +1,10 @@ +{ + "mchid": "xxx", + "out_trade_no": "xxxx", + "trade_state": "xxx", + "trade_state_desc": "xxx", + "payer": { + "openid": "xxxxxx" + }, + "transaction_id": "xxxxxxxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.json new file mode 100644 index 00000000..76cf2670 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignRequest.json @@ -0,0 +1,7 @@ +{ + "appid": "wx1cce664e7cdcf31a", + "prepay_id": "wx111925097328382762a266f5cefb640000", + "sign_type": "RSA", + "nonce": "fqDdjLywAmNDZleCWfPsfhlInxnwnOLK", + "timestamp": 1675219608 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.json new file mode 100644 index 00000000..580053fd --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Order/CgibinMiniAppPayGetSignResponse.json @@ -0,0 +1,5 @@ +{ + "pay_sign": "mHIpSqqf1EnBHAOZ5EE3CJRmgHeRcEsfHg0zhOWs+recA6LrHiHZwWT1M6/+ZvzztOkwjnnx8We4n/xX0mNWM5A6eUQYXE9CEgQKVKPIHVXmsheJqPUIiOXXoRaFY7byLzjkQXcGrNG9iDXdhzwCFeQSNXs072uN+2QRoA+mk0pBiY/uPdFXPBPx8nd5FJshrsnzEGmS+nLbyOfJjTH7SkJPCHuxaDPsf24LD5HRT8bjxMzt/92PZY07NQIQhgcCSqpm758xvEnw43iMNsR2ieUNjwkWyQo+SHvDxr2jn/zmT6JmWhtF+ull+jdptfoRPm/oZsPoqGZfHpc2VSrzMA==", + "errcode": 0, + "errmsg": "ok" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.json new file mode 100644 index 00000000..40db9abd --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailRequest.json @@ -0,0 +1,4 @@ +{ + "mchid": "xxx", + "out_refund_no": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.json new file mode 100644 index 00000000..076008c1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayGetRefundDetailResponse.json @@ -0,0 +1,17 @@ +{ + "out_refund_no": "1217752501201407033233368018", + "out_trade_no": "1217752501201407033233368018", + "channel": "ORIGINAL", + "user_received_account": "招商银行信用卡0403", + "success_time": "2018-06-08T10:34:56+08:00", + "create_time": "2018-06-08T10:34:56+08:00", + "status": "SUCCESS", + "amount": { + "refund": 888, + "payer_refund": 888, + "discount_refund": 888, + "currency": "CNY" + }, + "errcode": 0, + "errmsg": "ok" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.json new file mode 100644 index 00000000..fb9a8108 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundRequest.json @@ -0,0 +1,13 @@ +{ + "mchid": "1900000109", + "appid": "wx8888888888888888", + "out_trade_no": "1217752501201407033233368018", + "out_refund_no": "1217752501201407033233368018", + "reason": "商品已售完", + "funds_account": "AVAILABLE", + "amount": { + "refund": 888, + "total": 888, + "currency": "CNY" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.json new file mode 100644 index 00000000..f6bae525 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinMiniAppPay/Refund/CgibinMiniAppPayRefundResponse.json @@ -0,0 +1,9 @@ +{ + "out_refund_no": "1217752501201407033233368018", + "amount": { + "refund": 888, + "currency": "CNY" + }, + "errcode": 0, + "errmsg": "ok" +}