From 0e8f123907623adecf7bf17884749936bf9be36e Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 31 Jul 2024 15:34:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=94=AF=E4=BB=98=E5=88=86=E6=9C=8D=E5=8A=A1=E5=95=86?= =?UTF-8?q?=E5=9C=BA=E6=99=AF=E4=B8=AD=E9=A2=84=E6=8E=88=E6=9D=83=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatTenpayV3/Basic_ModelDefinition.md | 2 + ...yClientExecutePayScorePartnerExtensions.cs | 22 ++++++++++ ...yScorePartnerPermissionsForSceneRequest.cs | 42 +++++++++++++++++++ ...ScorePartnerPermissionsForSceneResponse.cs | 22 ++++++++++ ...corePartnerPermissionsForSceneRequest.json | 13 ++++++ ...orePartnerPermissionsForSceneResponse.json | 4 ++ 6 files changed, 105 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.json diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index a4a0ffcb..aca6d259 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -757,6 +757,8 @@ - 商户预授权:`ApplyPayScorePartnerPermissions` + - 场景中预授权:`ApplyPayScorePartnerPermissionsForScene` + - 查询用户授权记录(授权协议号):`GetPayScorePartnerPermissionsByAuthorizationCode` - 解除用户授权关系(授权协议号):`TerminatePayScorePartnerPermissionsByAuthorizationCode` diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs index 8bec126a..53991ae0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs @@ -32,6 +32,28 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + /// + /// 异步调用 [POST] /payscore/partner/permissions/apply-for-scene 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteApplyPayScorePartnerPermissionsForSceneAsync(this WechatTenpayClient client, Models.ApplyPayScorePartnerPermissionsForSceneRequest 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, "payscore", "partner", "permissions", "apply-for-scene"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + /// /// 异步调用 [GET] /payscore/partner/permissions/authorization-code/{authorization_code} 接口。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.cs new file mode 100644 index 00000000..4c8a55be --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/partner/permissions/apply-for-scene 接口的请求。 + /// + public class ApplyPayScorePartnerPermissionsForSceneRequest : ApplyPayScorePartnerPermissionsRequest + { + public static class Types + { + public class TransactionSceneInfo + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置授权场景。 + /// + [Newtonsoft.Json.JsonProperty("scene")] + [System.Text.Json.Serialization.JsonPropertyName("scene")] + public string Scene { get; set; } = string.Empty; + + /// + /// 获取或设置微信支付交易中授权附带的参数信息。 + /// + [Newtonsoft.Json.JsonProperty("transaction_scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_scene_info")] + public Types.TransactionSceneInfo? TransactionSceneInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.cs new file mode 100644 index 00000000..b617e13a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/partner/permissions/apply-for-scene 接口的响应。 + /// + public class ApplyPayScorePartnerPermissionsForSceneResponse : WechatTenpayResponse + { + /// + /// 获取或设置授权场景。 + /// + [Newtonsoft.Json.JsonProperty("scene")] + [System.Text.Json.Serialization.JsonPropertyName("scene")] + public string Scene { get; set; } = default!; + + /// + /// 获取或设置微信支付交易中授权 Token。 + /// + [Newtonsoft.Json.JsonProperty("transaction_permissions_token")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_permissions_token")] + public string? TransactionPermissionsToken { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.json new file mode 100644 index 00000000..8c7ca01e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneRequest.json @@ -0,0 +1,13 @@ +{ + "service_id": "500001", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "sub_mchid": "1230000109", + "authorization_code": "实例1234323JKHDFE1243252", + "notify_url": "http://www.qq.com", + "scene": "TRANSACTION", + "transaction_scene_info": { + "mchid": "1230000109", + "sub_mchid": "1230000109" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.json new file mode 100644 index 00000000..1a038af5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Permissions/ApplyPayScorePartnerPermissionsForSceneResponse.json @@ -0,0 +1,4 @@ +{ + "scene": "TRANSACTION", + "transaction_permissions_token": "transaction_permissions_token" +}