From ceb6b1012cffd2e703772e1a9bf50797addc4800 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 3 Mar 2022 11:52:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E5=BE=AE=E5=95=86=E6=88=B7=E8=BF=9B=E4=BB=B6=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...entExecuteApplyForSubMerchantExtensions.cs | 5 + ...eateApplyForSubMerchantApplymentRequest.cs | 168 +++++++++++++++++- ...KIT.FlurlHttpClient.Wechat.TenpayV3.csproj | 2 +- .../WechatTenpayClientOptions.cs | 4 +- ...teApplyForSubMerchantApplymentRequest.json | 27 +++ 5 files changed, 201 insertions(+), 5 deletions(-) diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteApplyForSubMerchantExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteApplyForSubMerchantExtensions.cs index bad1ccdb..97999cc6 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteApplyForSubMerchantExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteApplyForSubMerchantExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [POST] /applyment4sub/applyment/ 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_6_1.shtml /// /// /// @@ -34,6 +35,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [GET] /applyment4sub/applyment/business_code/{business_code} 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_2.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_6_2.shtml /// /// /// @@ -53,6 +55,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [GET] /applyment4sub/applyment/applyment_id/{applyment_id} 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_2.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_6_2.shtml /// /// /// @@ -73,6 +76,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// 异步调用 [POST] /apply4sub/sub_merchants/{sub_mchid}/modify-settlement 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_3.shtml /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter7_1_4.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_6_3.shtml /// /// /// @@ -93,6 +97,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// 异步调用 [GET] /apply4sub/sub_merchants/{sub_mchid}/settlement 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter11_1_4.shtml /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter7_1_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_6_5.shtml /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.cs index fe260c88..5aa22f3b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { @@ -164,6 +163,162 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public IList FinanceLicensePictureMediaIdList { get; set; } = new List(); } + public class MicroBusinessProof + { + public static class Types + { + public class MicroStoreInfo + { + /// + /// 获取或设置门店名称。 + /// + [Newtonsoft.Json.JsonProperty("micro_name")] + [System.Text.Json.Serialization.JsonPropertyName("micro_name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置门店省市编码。 + /// + [Newtonsoft.Json.JsonProperty("micro_address_code")] + [System.Text.Json.Serialization.JsonPropertyName("micro_address_code")] + public string CityCode { get; set; } = string.Empty; + + /// + /// 获取或设置门店地址。 + /// + [Newtonsoft.Json.JsonProperty("micro_address")] + [System.Text.Json.Serialization.JsonPropertyName("micro_address")] + public string Address { get; set; } = string.Empty; + + /// + /// 获取或设置门店门头照片媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("store_entrance_pic")] + [System.Text.Json.Serialization.JsonPropertyName("store_entrance_pic")] + public string StoreEntrancePictureMediaId { get; set; } = string.Empty; + + /// + /// 获取或设置店内环境照片媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("micro_indoor_copy")] + [System.Text.Json.Serialization.JsonPropertyName("micro_indoor_copy")] + public string StoreIndoorPictureMediaId { get; set; } = string.Empty; + + /// + /// 获取或设置门店经度。 + /// + [Newtonsoft.Json.JsonProperty("store_longitude")] + [System.Text.Json.Serialization.JsonPropertyName("store_longitude")] + public string? Longitude { get; set; } + + /// + /// 获取或设置门店纬度。 + /// + [Newtonsoft.Json.JsonProperty("store_latitude")] + [System.Text.Json.Serialization.JsonPropertyName("store_latitude")] + public string? Latitude { get; set; } + + /// + /// 获取或设置门店证明文件媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("address_certification")] + [System.Text.Json.Serialization.JsonPropertyName("address_certification")] + public string? CertificateMediaId { get; set; } + } + + public class MicroMobileInfo + { + /// + /// 获取或设置经营服务名称。 + /// + [Newtonsoft.Json.JsonProperty("micro_mobile_name")] + [System.Text.Json.Serialization.JsonPropertyName("micro_mobile_name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置经营服务所在地省市编码。 + /// + [Newtonsoft.Json.JsonProperty("micro_mobile_city")] + [System.Text.Json.Serialization.JsonPropertyName("micro_mobile_city")] + public string CityCode { get; set; } = string.Empty; + + /// + /// 获取或设置经营服务地址。 + /// 默认值:无 + /// + [Newtonsoft.Json.JsonProperty("micro_mobile_address")] + [System.Text.Json.Serialization.JsonPropertyName("micro_mobile_address")] + public string Address { get; set; } = "无"; + + /// + /// 获取或设置经营服务现场照片媒体文件标识列表。 + /// + [Newtonsoft.Json.JsonProperty("micro_mobile_pics")] + [System.Text.Json.Serialization.JsonPropertyName("micro_mobile_pics")] + public IList PictureMediaIdList { get; set; } = new List(); + } + + public class MicroOnlineInfo + { + /// + /// 获取或设置线上店铺名称。 + /// + [Newtonsoft.Json.JsonProperty("micro_online_store")] + [System.Text.Json.Serialization.JsonPropertyName("micro_online_store")] + public string StoreName { get; set; } = string.Empty; + + /// + /// 获取或设置电商平台名称。 + /// + [Newtonsoft.Json.JsonProperty("micro_ec_name")] + [System.Text.Json.Serialization.JsonPropertyName("micro_ec_name")] + public string ECName { get; set; } = string.Empty; + + /// + /// 获取或设置店铺二维码媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("micro_qrcode")] + [System.Text.Json.Serialization.JsonPropertyName("micro_qrcode")] + public string? StoreQrcodeMediaId { get; set; } + + /// + /// 获取或设置店铺链接。 + /// + [Newtonsoft.Json.JsonProperty("micro_link")] + [System.Text.Json.Serialization.JsonPropertyName("micro_link")] + public string? StoreLink { get; set; } + } + } + + /// + /// 获取或设置小微经营类型。 + /// + [Newtonsoft.Json.JsonProperty("micro_biz_type")] + [System.Text.Json.Serialization.JsonPropertyName("micro_biz_type")] + public string MicroBusinessType { get; set; } = string.Empty; + + /// + /// 获取或设置门店场所信息。 + /// + [Newtonsoft.Json.JsonProperty("micro_store_info")] + [System.Text.Json.Serialization.JsonPropertyName("micro_store_info")] + public Types.MicroStoreInfo? MicroStoreInfo { get; set; } + + /// + /// 获取或设置流动经营便民服务信息。 + /// + [Newtonsoft.Json.JsonProperty("micro_mobile_info")] + [System.Text.Json.Serialization.JsonPropertyName("micro_mobile_info")] + public Types.MicroMobileInfo? MicroMobileInfo { get; set; } + + /// + /// 获取或设置线上商品服务交易信息。 + /// + [Newtonsoft.Json.JsonProperty("micro_online_info")] + [System.Text.Json.Serialization.JsonPropertyName("micro_online_info")] + public Types.MicroOnlineInfo? MicroOnlineInfo { get; set; } + } + public class Identity { public static class Types @@ -403,6 +558,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models [System.Text.Json.Serialization.JsonPropertyName("finance_institution_info")] public Types.FinanceInstitutionLicense? FinanceInstitutionLicense { get; set; } + /// + /// 获取或设置小微商户证明材料信息。 + /// + [Newtonsoft.Json.JsonProperty("micro_biz_info")] + [System.Text.Json.Serialization.JsonPropertyName("micro_biz_info")] + public Types.MicroBusinessProof? MicroBusinessProof { get; set; } + /// /// 获取或设置法人身份证件信息。 /// @@ -674,7 +836,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualIntegerConverter))] [System.Text.Json.Serialization.JsonPropertyName("settlement_id")] [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString | System.Text.Json.Serialization.JsonNumberHandling.WriteAsString)] - public int SettlementId { get; set; } + public int SettlementId { get; set; } /// /// 获取或设置所属行业类型。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj index 04847fb9..f916ab3d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj @@ -15,7 +15,7 @@ https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat Flurl.Http Wechat Weixin MicroMessage Tenpay WechatPay WeixinPay Wxpay 微信 微信支付 微信商户 2.6.0 - 基于 Flurl.Http 的微信支付 API v3 版客户端,支持直连商户、服务商模式,支持基础支付、代金券、商家券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、消费者投诉、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包等功能。 + 基于 Flurl.Http 的微信支付 API v3 版客户端,支持直连商户、服务商模式,支持基础支付、代金券、商家券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、二级商户进件、小微商户进件、消费者投诉、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包等功能。 Fu Diwei git https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/WechatTenpayClientOptions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/WechatTenpayClientOptions.cs index 13fc713b..2cd50c41 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/WechatTenpayClientOptions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/WechatTenpayClientOptions.cs @@ -72,11 +72,13 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 获取或设置是否自动加密请求中的敏感字段数据。 + /// 注意:启用该功能需配合 使用。 /// public bool AutoEncryptRequestSensitiveProperty { get; set; } /// - /// 获取或设置是否自动解密请求中的敏感字段数据。 + /// 获取或设置是否自动解密响应中的敏感字段数据。 + /// 注意:启用该功能需配合 使用。 /// public bool AutoDecryptResponseSensitiveProperty { get; set; } diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.json index 5443ca92..13b5b162 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.json +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/Apply4SubMerchant/CreateApplyForSubMerchantApplymentRequest.json @@ -33,6 +33,33 @@ "0P3ng6KTIW4-Q_l2FjmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo" ] }, + "micro_biz_info": { + "micro_biz_type": "MICRO_TYPE_STORE", + "micro_store_info": { + "micro_name": "大郎烧饼", + "micro_address_code": "440305", + "micro_address": "南山区xx大厦x层xxxx室", + "store_entrance_pic": "0P3ng6KTIW4-Q_l2FjKLZuhHFwczhJehHhAZN6BKXQPcs-VvdSo", + "micro_indoor_copy": "0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMwczhJehHhAZN6BKXQPcs-VvdSo", + "store_longitude": "113.941355", + "store_latitude": "22.546245", + "address_certification": "0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMAzhJehHhAZN6BKXQPcs-VvdSo" + }, + "micro_mobile_info": { + "micro_mobile_name": "早餐车", + "micro_mobile_city": "440305", + "micro_mobile_address": "无", + "micro_mobile_pics": [ + "0P3ng6KTIW4-Q_l2FjKLZuhHjBWoMAO_XXqK5dE5YdOmFJBZR9FwczhJehHhAZN6BKXQPcs-VvdSo" + ] + }, + "micro_online_info": { + "micro_online_store": "李三服装店", + "micro_ec_name": "XX购物平台", + "micro_qrcode": "https://www.qq.com", + "micro_link": "https://www.qq.com" + } + }, "identity_info": { "id_holder_type": "LEGAL", "id_doc_type": "IDENTIFICATION_TYPE_IDCARD",