feat(tenpayv3): 新增服务商优惠费率活动相关接口

This commit is contained in:
Fu Diwei
2023-03-30 22:56:22 +08:00
parent 61a5169c15
commit bdd1ccac59
15 changed files with 413 additions and 4 deletions

View File

@@ -0,0 +1,72 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
/// <summary>
/// 为 <see cref="WechatTenpayClient"/> 提供优惠费率活动相关的 API 扩展方法。
/// </summary>
public static class WechatTenpayClientExecuteRateActivityExtensions
{
/// <summary>
/// <para>异步调用 [POST] /rate-activity/applications 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_7_1.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateRateActivityApplicationResponse> ExecuteCreateRateActivityApplicationAsync(this WechatTenpayClient client, Models.CreateRateActivityApplicationRequest 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, "rate-activity", "applications");
return await client.SendRequestWithJsonAsync<Models.CreateRateActivityApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /rate-activity/applications/id/{application_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_7_2.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetRateActivityApplicationByApplicationIdResponse> ExecuteGetRateActivityApplicationByApplicationIdAsync(this WechatTenpayClient client, Models.GetRateActivityApplicationByApplicationIdRequest 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.Get, "rate-activity", "applications", "id", request.ApplicationId);
return await client.SendRequestWithJsonAsync<Models.GetRateActivityApplicationByApplicationIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [PATCH] /rate-activity/applications/id/{application_id} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_7_3.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UpdateRateActivityApplicationResponse> ExecuteUpdateRateActivityApplicationAsync(this WechatTenpayClient client, Models.UpdateRateActivityApplicationRequest 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, new HttpMethod("PATCH"), "rate-activity", "applications", "id", request.ApplicationId);
return await client.SendRequestWithJsonAsync<Models.UpdateRateActivityApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}

View File

@@ -75,7 +75,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public string? State { get; set; }
}
public class AdditionalInfo
public class AdditionalInfomation
{
public static class Types
{
@@ -237,6 +237,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_info")]
[System.Text.Json.Serialization.JsonPropertyName("additional_info")]
public Types.AdditionalInfo? AdditionalInfo { get; set; }
public Types.AdditionalInfomation? AdditionalInfomation { get; set; }
}
}

View File

@@ -26,7 +26,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
}
public class AdditionalInfo : GetMerchantServiceComplaintByComplaintIdResponse.Types.AdditionalInfo
public class AdditionalInfomation : GetMerchantServiceComplaintByComplaintIdResponse.Types.AdditionalInfomation
{
}
}
@@ -160,7 +160,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_info")]
[System.Text.Json.Serialization.JsonPropertyName("additional_info")]
public Types.AdditionalInfo? AdditionalInfo { get; set; }
public Types.AdditionalInfomation? AdditionalInfomation { get; set; }
}
}

View File

@@ -0,0 +1,109 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /rate-activity/applications 接口的请求。</para>
/// </summary>
public class CreateRateActivityApplicationRequest : WechatTenpayRequest
{
public static class Types
{
public class ActivityDetail
{
public static class Types
{
public class Material
{
/// <summary>
/// 获取或设置材料 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_material_id")]
[System.Text.Json.Serialization.JsonPropertyName("apply_material_id")]
public string? MaterialId { get; set; }
/// <summary>
/// 获取或设置材料 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("apply_material_information")]
[System.Text.Json.Serialization.JsonPropertyName("apply_material_information")]
public IList<string>? MaterialMediaIdList { get; set; }
}
}
/// <summary>
/// 获取或设置活动 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_id")]
[System.Text.Json.Serialization.JsonPropertyName("activity_id")]
public string ActivityId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置活动费率字符串。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_rate")]
[System.Text.Json.Serialization.JsonPropertyName("activity_rate")]
public string? ActivityRateString { get; set; }
/// <summary>
/// 获取或设置申请材料列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_apply_information")]
[System.Text.Json.Serialization.JsonPropertyName("activity_apply_information")]
public IList<Types.Material>? MaterialList { get; set; }
}
public class AdditionalInfomation
{
/// <summary>
/// 获取或设置补充说明。
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_message")]
[System.Text.Json.Serialization.JsonPropertyName("additional_message")]
public string? AdditionalMessage { get; set; }
/// <summary>
/// 获取或设置补充材料 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_material")]
[System.Text.Json.Serialization.JsonPropertyName("additional_material")]
public IList<string>? AdditionalMaterialMediaIdList { get; set; }
}
}
/// <summary>
/// 获取或设置从业机构号。
/// </summary>
[Newtonsoft.Json.JsonProperty("acquiring_bank_id")]
[System.Text.Json.Serialization.JsonPropertyName("acquiring_bank_id")]
public string AcquiringBankId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置渠道商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("channel_id")]
[System.Text.Json.Serialization.JsonPropertyName("channel_id")]
public string ChannelId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置从业机构特约商户号 。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置报名活动详情。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_detail")]
[System.Text.Json.Serialization.JsonPropertyName("activity_detail")]
public Types.ActivityDetail ActivityDetail { get; set; } = new Types.ActivityDetail();
/// <summary>
/// 获取或设置补充信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_information")]
[System.Text.Json.Serialization.JsonPropertyName("additional_information")]
public Types.AdditionalInfomation? AdditionalInfomation { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /rate-activity/applications 接口的响应。</para>
/// </summary>
public class CreateRateActivityApplicationResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置申请单编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("application_id")]
[System.Text.Json.Serialization.JsonPropertyName("application_id")]
public string ApplicationId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /rate-activity/applications/id/{application_id} 接口的请求。</para>
/// </summary>
public class GetRateActivityApplicationByApplicationIdRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置申请单编号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ApplicationId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,47 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /rate-activity/applications/id/{application_id} 接口的响应。</para>
/// </summary>
public class GetRateActivityApplicationByApplicationIdResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置申请单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("application_state")]
[System.Text.Json.Serialization.JsonPropertyName("application_state")]
public string ApplicationState { get; set; } = default!;
/// <summary>
/// 获取或设置从业机构特约商户号 。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置驳回参数。
/// </summary>
[Newtonsoft.Json.JsonProperty("reject_parameter")]
[System.Text.Json.Serialization.JsonPropertyName("reject_parameter")]
public string? RejectParameter { get; set; }
/// <summary>
/// 获取或设置驳回原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("reject_reason")]
[System.Text.Json.Serialization.JsonPropertyName("reject_reason")]
public string? RejectReason { get; set; }
/// <summary>
/// 获取或设置审核通过时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("pass_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("pass_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
public DateTimeOffset? PassTime { get; set; }
}
}

View File

@@ -0,0 +1,62 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [PATCH] /rate-activity/applications/id/{application_id} 接口的请求。</para>
/// </summary>
public class UpdateRateActivityApplicationRequest : WechatTenpayRequest
{
public static class Types
{
public class ActivityDetail
{
public static class Types
{
public class Material : CreateRateActivityApplicationRequest.Types.ActivityDetail.Types.Material
{
}
}
/// <summary>
/// 获取或设置活动费率字符串。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_rate")]
[System.Text.Json.Serialization.JsonPropertyName("activity_rate")]
public string? ActivityRateString { get; set; }
/// <summary>
/// 获取或设置申请材料列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_apply_information")]
[System.Text.Json.Serialization.JsonPropertyName("activity_apply_information")]
public IList<Types.Material>? MaterialList { get; set; }
}
public class AdditionalInfomation : CreateRateActivityApplicationRequest.Types.AdditionalInfomation
{
}
}
/// <summary>
/// 获取或设置申请单编号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ApplicationId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置报名活动详情。
/// </summary>
[Newtonsoft.Json.JsonProperty("activity_detail_modification")]
[System.Text.Json.Serialization.JsonPropertyName("activity_detail_modification")]
public Types.ActivityDetail? ActivityDetail { get; set; }
/// <summary>
/// 获取或设置补充信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("additional_information")]
[System.Text.Json.Serialization.JsonPropertyName("additional_information")]
public Types.AdditionalInfomation? AdditionalInfomation { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [PATCH] /rate-activity/applications/id/{application_id} 接口的响应。</para>
/// </summary>
public class UpdateRateActivityApplicationResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置申请单编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("application_id")]
[System.Text.Json.Serialization.JsonPropertyName("application_id")]
public string ApplicationId { get; set; } = default!;
}
}