From 1b5ca083df89819b36975a6b55b979d6db4ab75f Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 18 Jun 2022 22:16:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E8=87=AA=E5=AE=9A=E4=B9=89=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=8B=89=E5=8F=96=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WechatApiClientExecuteShopExtensions.cs | 20 +++ .../Shop/Wxpay/ShopWxpayGetInfoRequest.cs | 9 ++ .../Shop/Wxpay/ShopWxpayGetInfoResponse.cs | 124 ++++++++++++++++++ .../Models/Shop/Wxpay/ShopWxpayGetResponse.cs | 2 +- .../Shop/Wxpay/ShopWxpayGetInfoResponse.json | 20 +++ 5 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Wxpay/ShopWxpayGetInfoResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs index 95b3fbfd..b234ca5b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteShopExtensions.cs @@ -1424,6 +1424,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [POST] /shop/wxpay/get_info 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/wxpay/get_info.html + /// + /// + /// + /// + /// + public static async Task ExecuteShopWxpayGetInfoAsync(this WechatApiClient client, Models.ShopWxpayGetInfoRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "shop", "wxpay", "get_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } #endregion #region Funds diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoRequest.cs new file mode 100644 index 00000000..7409df11 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/wxpay/get_info 接口的请求。 + /// + public class ShopWxpayGetInfoRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoResponse.cs new file mode 100644 index 00000000..5badc5ce --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetInfoResponse.cs @@ -0,0 +1,124 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /shop/wxpay/get_info 接口的响应。 + /// + public class ShopWxpayGetInfoResponse : WechatApiResponse + { + public static class Types + { + public class PayRequest + { + public static class Types + { + public class BusinessLicense + { + /// + /// 获取或设置商户名称。 + /// + [Newtonsoft.Json.JsonProperty("merchant_name")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_name")] + public string MerchantName { get; set; } = default!; + + /// + /// 获取或设置营业执照编号。 + /// + [Newtonsoft.Json.JsonProperty("business_license_number")] + [System.Text.Json.Serialization.JsonPropertyName("business_license_number")] + public string BusinessLicenseNumber { get; set; } = default!; + } + + public class Contact + { + /// + /// 获取或设置联系人姓名。 + /// + [Newtonsoft.Json.JsonProperty("contact_name")] + [System.Text.Json.Serialization.JsonPropertyName("contact_name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置联系人身份证号。 + /// + [Newtonsoft.Json.JsonProperty("contact_id_card_number")] + [System.Text.Json.Serialization.JsonPropertyName("contact_id_card_number")] + public string IdCardNumber { get; set; } = default!; + + /// + /// 获取或设置手机号码。 + /// + [Newtonsoft.Json.JsonProperty("mobile_phone")] + [System.Text.Json.Serialization.JsonPropertyName("mobile_phone")] + public string MobileNumber { get; set; } = default!; + } + + public class SaleScene + { + /// + /// 获取或设置店铺名称。 + /// + [Newtonsoft.Json.JsonProperty("store_name")] + [System.Text.Json.Serialization.JsonPropertyName("store_name")] + public string? StoreName { get; set; } + + /// + /// 获取或设置店铺链接。 + /// + [Newtonsoft.Json.JsonProperty("store_url")] + [System.Text.Json.Serialization.JsonPropertyName("store_url")] + public string? StoreUrl { get; set; } + + /// + /// 获取或设置子商户小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_sub_appid")] + public string? MiniProgramSubAppId { get; set; } + } + } + + /// + /// 获取或设置主体类型。 + /// + [Newtonsoft.Json.JsonProperty("organization_type")] + [System.Text.Json.Serialization.JsonPropertyName("organization_type")] + public int SubjectType { get; set; } + + /// + /// 获取或设置营业执照信息。 + /// + [Newtonsoft.Json.JsonProperty("business_license_info")] + [System.Text.Json.Serialization.JsonPropertyName("business_license_info")] + public Types.BusinessLicense BusinessLicense { get; set; } = new Types.BusinessLicense(); + + /// + /// 获取或设置联系人信息。 + /// + [Newtonsoft.Json.JsonProperty("contact_info")] + [System.Text.Json.Serialization.JsonPropertyName("contact_info")] + public Types.Contact Contact { get; set; } = default!; + + /// + /// 获取或设置商户简称。 + /// + [Newtonsoft.Json.JsonProperty("merchant_shortname")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_shortname")] + public string? MerchantShortName { get; set; } + + /// + /// 获取或设置销售场景信息。 + /// + [Newtonsoft.Json.JsonProperty("sales_scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("sales_scene_info")] + public Types.SaleScene? SaleScene { get; set; } + } + } + + /// + /// 获取或设置进件信息。 + /// + [Newtonsoft.Json.JsonProperty("pay_req")] + [System.Text.Json.Serialization.JsonPropertyName("pay_req")] + public Types.PayRequest PayRequest { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetResponse.cs index 32816fcb..cf15b641 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Shop/Wxpay/ShopWxpayGetResponse.cs @@ -159,7 +159,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("store_name")] [System.Text.Json.Serialization.JsonPropertyName("store_name")] - public string StoreName { get; set; } = default!; + public string? StoreName { get; set; } /// /// 获取或设置店铺链接。 diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Wxpay/ShopWxpayGetInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Wxpay/ShopWxpayGetInfoResponse.json new file mode 100644 index 00000000..86b8e3a1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Shop/Wxpay/ShopWxpayGetInfoResponse.json @@ -0,0 +1,20 @@ +{ + "errcode": 0, + "pay_req": { + "organization_type": "2", + "business_license_info": { + "business_license_number": "32784238MA5CN4WK0D", + "merchant_name": "魅力广州" + }, + "contact_info": { + "contact_name": "**海", + "contact_id_card_number": "43***************1", + "mobile_phone": "186******02" + }, + "sales_scene_info": { + "store_name": "魅力广州A", + "mini_program_sub_appid": "wx50808a0fa3b8abca" + }, + "merchant_shortname": "魅力广州" + } +}