feat(tenpayv3): 新增微信支付分查询用户分层对应建议先享金额接口

This commit is contained in:
Fu Diwei 2024-05-15 16:32:25 +08:00
parent 31ba9c30ae
commit 943f076729
4 changed files with 174 additions and 12 deletions

View File

@ -14,7 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/permissions 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter5_1.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-auth/apply-partner-permissions.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -36,7 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [GET] /payscore/partner/permissions/authorization-code/{authorization_code} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter5_2.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-auth/get-partner-permissions-by-code.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -60,7 +60,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/permissions/authorization-code/{authorization_code}/terminate 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter5_4.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-auth/terminate-partner-permissions-by-code.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -82,7 +82,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [GET] /payscore/partner/permissions/search 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter5_3.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-auth/get-partner-permissions-by-open-id.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -114,7 +114,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/permissions/terminate 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter5_5.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-auth/terminate-partner-permissions-by-open-id.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -138,7 +138,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/serviceorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_1.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/create-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -160,7 +160,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [GET] /payscore/partner/serviceorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_2.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/get-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -185,7 +185,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [GET] /payscore/partner/serviceorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_2.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/get-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -210,7 +210,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/serviceorder/{out_order_no}/cancel 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_3.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/cancel-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -232,7 +232,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/serviceorder/{out_order_no}/modify 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_4.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/modify-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -254,7 +254,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/serviceorder/{out_order_no}/complete 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_5.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/complete-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -298,7 +298,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// <para>异步调用 [POST] /payscore/partner/serviceorder/{out_order_no}/sync 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/payscore_partner/chapter3_7.shtml ]]>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/partner-service-order/sync-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@ -317,5 +317,33 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
}
#endregion
#region ServiceQuota
/// <summary>
/// <para>异步调用 [GET] /payscore/partner/servicequotas/service-id/{service_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-weixin-pay-score/service-quota/get-partner-user-risk-level-quota.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPayScorePartnerServiceQuotasByServiceIdResponse> ExecuteGetPayScorePartnerServiceQuotasByServiceIdAsync(this WechatTenpayClient client, Models.GetPayScorePartnerServiceQuotasByServiceIdRequest 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.Get, "payscore", "partner", "servicequotas", "service-id", request.ServiceId)
.SetQueryParam("sub_mchid", request.SubMerchantId)
.SetQueryParam("appid", request.AppId)
.SetQueryParam("sub_appid", request.SubAppId)
.SetQueryParam("risk_level_version", request.RiskLevelVersion);
return await client.SendFlurlRequestAsJsonAsync<Models.GetPayScorePartnerServiceQuotasByServiceIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}

View File

@ -0,0 +1,43 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/partner/servicequotas/service-id/{service_id} 接口的请求。</para>
/// </summary>
public class GetPayScorePartnerServiceQuotasByServiceIdRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置服务商 AppId。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ServiceId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置分层版本。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int RiskLevelVersion { get; set; }
}
}

View File

@ -0,0 +1,77 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/partner/servicequotas/service-id/{service_id} 接口的响应。</para>
/// </summary>
public class GetPayScorePartnerServiceQuotasByServiceIdResponse : WechatTenpayResponse
{
public static class Types
{
public class Quota
{
/// <summary>
/// 获取或设置用户分层。
/// </summary>
[Newtonsoft.Json.JsonProperty("risk_level")]
[System.Text.Json.Serialization.JsonPropertyName("risk_level")]
public int RiskLevel { get; set; }
/// <summary>
/// 获取或设置建议先享金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("suggested_quota")]
[System.Text.Json.Serialization.JsonPropertyName("suggested_quota")]
public int SuggestedQuota { get; set; }
}
}
/// <summary>
/// 获取或设置服务商商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置服务商 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置分层版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("risk_level_version")]
[System.Text.Json.Serialization.JsonPropertyName("risk_level_version")]
public int RiskLevelVersion { get; set; }
/// <summary>
/// 获取或设置先享金额列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("quotas")]
[System.Text.Json.Serialization.JsonPropertyName("quotas")]
public Types.Quota[] QuotaList { get; set; } = default!;
}
}

View File

@ -0,0 +1,14 @@
{
"service_id": "2002000000000558128851361561536",
"mchid": "1230000109",
"sub_mchid": "1230000109",
"appid": "wxd678efh567hg6787",
"sub_appid": "wxd678efh567hg6787",
"risk_level_version": 1,
"quotas": [
{
"risk_level": 1,
"suggested_quota": 1000
}
]
}