mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-12-29 18:04:42 +08:00
feat(tenpayv3): 新增商户尽职调查相关接口
This commit is contained in:
@@ -6,6 +6,8 @@ using Flurl.Http;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
||||
{
|
||||
using SKIT.FlurlHttpClient.Primitives;
|
||||
|
||||
public static class WechatTenpayClientExecuteMerchantOperationManageExtensions
|
||||
{
|
||||
/// <summary>
|
||||
@@ -29,5 +31,84 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantOperationManageMerchantLimitationsBySubMerchantIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
#region EnhancedDueDiligence
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/submit 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015631033 ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CreateMerchantOperationManageEnhancedDueDiligenceSubmitResponse> ExecuteCreateMerchantOperationManageEnhancedDueDiligenceSubmitAsync(this WechatTenpayClient client, Models.CreateMerchantOperationManageEnhancedDueDiligenceSubmitRequest 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, "mch-operation-manage", "enhanced-due-diligence", request.DueDiligenceId, "submit");
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.CreateMerchantOperationManageEnhancedDueDiligenceSubmitResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/upload 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015631033 ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.UploadMerchantOperationManageEnhancedDueDiligenceFileResponse> ExecuteUploadMerchantOperationManageEnhancedDueDiligenceFileAsync(this WechatTenpayClient client, Models.UploadMerchantOperationManageEnhancedDueDiligenceFileRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
|
||||
if (request.FileName is null)
|
||||
request.FileName = Guid.NewGuid().ToString("N").ToLower() + ".png";
|
||||
|
||||
if (request.FileDigest is null)
|
||||
request.FileDigest = EncodedString.ToHexString(Utilities.SHA256Utility.Hash(request.FileBytes)).Value!.ToUpper();
|
||||
|
||||
if (request.FileContentType is null)
|
||||
request.FileContentType = MimeTypes.GetMimeMapping(request.FileName!);
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateFlurlRequest(request, HttpMethod.Post, "mch-operation-manage", "enhanced-due-diligence", request.DueDiligenceId, "upload");
|
||||
|
||||
using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, fileMetaJson: client.JsonSerializer.Serialize(request), formDataName: "due_diligence_file");
|
||||
return await client.SendFlurlRequestAsync<Models.UploadMerchantOperationManageEnhancedDueDiligenceFileResponse>(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id} 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4015631048 ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdResponse> ExecuteGetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdAsync(this WechatTenpayClient client, Models.GetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdRequest 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, "mch-operation-manage", "enhanced-due-diligence", request.DueDiligenceId);
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/submit 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class CreateMerchantOperationManageEnhancedDueDiligenceSubmitRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置尽调单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string DueDiligenceId { 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>
|
||||
/// 获取或设置提交资料 JSON 内容。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submit_data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submit_data")]
|
||||
public string SubmitDataJson { get; set; } = "{}";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/submit 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CreateMerchantOperationManageEnhancedDueDiligenceSubmitResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置尽调单状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("due_diligence_state")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("due_diligence_state")]
|
||||
public string DueDiligenceState { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置提交时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submit_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submit_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset? SubmitTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置要求提交的资料。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submission_template")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submission_template")]
|
||||
public string SubmissionTemplateJson { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置已提交的资料 JSON 内容。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submission_data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submission_data")]
|
||||
public string? SubmissionDataJson { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id} 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置尽调单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string DueDiligenceId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置子商户号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string SubMerchantId { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id} 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetMerchantOperationManageEnhancedDueDiligenceByDueDiligenceIdResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <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("due_diligence_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("due_diligence_id")]
|
||||
public string DueDiligenceId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置尽调单状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("due_diligence_state")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("due_diligence_state")]
|
||||
public string DueDiligenceState { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置截止时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("deadline_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deadline_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset DeadlineTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置提交时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submit_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submit_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset? SubmitTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置终止时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("terminal_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("terminal_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset? TerminalTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置驳回时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reject_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reject_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset? RejectTime { 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("complete_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("complete_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset? CompleteTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置要求提交的资料。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submission_template")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submission_template")]
|
||||
public string SubmissionTemplateJson { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置已提交的资料 JSON 内容。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("submission_data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("submission_data")]
|
||||
public string? SubmissionDataJson { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/upload 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class UploadMerchantOperationManageEnhancedDueDiligenceFileRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置尽调单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string DueDiligenceId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件字节数组。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public byte[] FileBytes { get; set; } = Array.Empty<byte>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件名。如果不指定将由系统自动生成。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("file_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("file_name")]
|
||||
public string? FileName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件摘要。如果不指定将由系统自动生成。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("file_digest")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("file_digest")]
|
||||
public string? FileDigest { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件 Conent-Type。如果不指定将由系统自动生成。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string? FileContentType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置子商户号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sub_mchid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
|
||||
public string SubMerchantId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置资料项 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("item_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("item_id")]
|
||||
public int ItemId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /mch-operation-manage/enhanced-due-diligence/{due_diligence_id}/upload 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class UploadMerchantOperationManageEnhancedDueDiligenceFileResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置文件标识 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("file_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("file_id")]
|
||||
public string FileId { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user