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": "魅力广州" + } +}