feat(tenpayv3): 新增商户管理与交易拦截记录相关接口
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeLint / Lint (push) Has been cancelled

This commit is contained in:
Fu Diwei
2025-10-10 09:32:07 +08:00
parent 442708063b
commit fbf21c20b1
30 changed files with 1125 additions and 0 deletions

View File

@@ -70,6 +70,7 @@
| √ | 商户管理:商户开户意愿确认 | 合作伙伴 | | | √ | 商户管理:商户开户意愿确认 | 合作伙伴 | |
| √ | 商户管理:商户平台处置通知 | 合作伙伴 | | | √ | 商户管理:商户平台处置通知 | 合作伙伴 | |
| √ | 商户管理:不活跃商户身份核实 | 合作伙伴 | | | √ | 商户管理:不活跃商户身份核实 | 合作伙伴 | |
| √ | 商户管理:商户管理记录 | 合作伙伴 | |
| √ | 其他:消费卡 | 直连商户 & 合作伙伴 | | | √ | 其他:消费卡 | 直连商户 & 合作伙伴 | |
| √ | 其他:代扣服务切卡组件 | 直连商户 & 合作伙伴 | | | √ | 其他:代扣服务切卡组件 | 直连商户 & 合作伙伴 | |
| √ | 其他:图片上传(营销专用) | 直连商户 & 合作伙伴 | | | √ | 其他:图片上传(营销专用) | 直连商户 & 合作伙伴 | |
@@ -1524,6 +1525,24 @@
- 查询不活跃商户身份核实结果:`GetComplianceInactiveMerchantIdentityVerificationByVerificationId` - 查询不活跃商户身份核实结果:`GetComplianceInactiveMerchantIdentityVerificationByVerificationId`
- 商户管理记录
- 分页查询子商户名下的商户管理记录:`QueryMerchantManageRecords`
- 查询子商户下指定商户管理记录:`GetMerchantManageRecord`
- 对指定商户管理记录提交资料:`CreateMerchantManageRecordSubmission`
- 上传商户提交资料文件:`UploadMerchantManageSubmissionFile`
- 分页查询子商户名下的交易拦截记录:`QueryTransactionBlockRecords`
- 查询子商户交易拦截记录详情:`GetTransactionBlockRecord`
- 发起交易拦截申诉:`CreateTransactionBlockSubmission`
- 查询交易拦截申诉详情:`GetTransactionBlockSubmission`
- 扩展工具 - 扩展工具
- 电商订单实名校验 - 电商订单实名校验

View File

@@ -0,0 +1,117 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
using SKIT.FlurlHttpClient.Primitives;
public static class WechatTenpayClientExecuteMerchantManageExtensions
{
/// <summary>
/// <para>异步调用 [GET] /mch-manage/mch-manage-records/sub-mchid/{sub_mchid} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940381 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.QueryMerchantManageRecordsResponse> ExecuteQueryMerchantManageRecordsAsync(this WechatTenpayClient client, Models.QueryMerchantManageRecordsRequest 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-manage", "mch-manage-records", "sub-mchid", request.SubMerchantId)
.SetQueryParam("manage_record_type", request.ManageRecordType)
.SetQueryParam("manage_record_state", request.ManageRecordState)
.SetQueryParam("limit", request.Limit)
.SetQueryParam("offset", request.Offset);
return await client.SendFlurlRequestAsJsonAsync<Models.QueryMerchantManageRecordsResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /mch-manage/mch-manage-records/{manage_record_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940383 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetMerchantManageRecordResponse> ExecuteGetMerchantManageRecordAsync(this WechatTenpayClient client, Models.GetMerchantManageRecordRequest 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-manage", "mch-manage-records", request.ManageRecordId)
.SetQueryParam("sub_mchid", request.SubMerchantId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantManageRecordResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /mch-manage/mch-manage-records/{manage_record_id}/mch-manage-submissions 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940417 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateMerchantManageRecordSubmissionResponse> ExecuteCreateMerchantManageRecordSubmissionAsync(this WechatTenpayClient client, Models.CreateMerchantManageRecordSubmissionRequest 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-manage", "mch-manage-records", request.ManageRecordId, "mch-manage-submissions");
return await client.SendFlurlRequestAsJsonAsync<Models.CreateMerchantManageRecordSubmissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /mch-manage/submission-files/sub-mchid/{sub_mchid}/upload 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940425 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UploadMerchantManageSubmissionFileResponse> ExecuteUploadMerchantManageSubmissionFileAsync(this WechatTenpayClient client, Models.UploadMerchantManageSubmissionFileRequest 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();
if (request.FileHash is null)
request.FileHash = EncodedString.ToHexString(Utilities.SHA256Utility.Hash(request.FileBytes)).Value!.ToLower();
if (request.FileContentType is null)
request.FileContentType = MimeTypes.GetMimeMapping(request.FileName!);
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "mch-manage", "submission-files", "sub-mchid", request.SubMerchantId, "upload");
using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, fileMetaJson: client.JsonSerializer.Serialize(request), formDataName: "submission_file");
httpContent.Add(new StringContent(request.ItemId), "item_id");
return await client.SendFlurlRequestAsync<Models.UploadMerchantManageSubmissionFileResponse>(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@@ -0,0 +1,104 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
using SKIT.FlurlHttpClient.Primitives;
public static class WechatTenpayClientExecuteTransactionBlockExtensions
{
/// <summary>
/// <para>异步调用 [GET] /transaction-block/transaction-block-records/sub-mchid/{sub_mchid} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940432 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.QueryTransactionBlockRecordsResponse> ExecuteQueryTransactionBlockRecordsAsync(this WechatTenpayClient client, Models.QueryTransactionBlockRecordsRequest 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, "transaction-block", "transaction-block-records", "sub-mchid", request.SubMerchantId)
.SetQueryParam("limit", request.Limit)
.SetQueryParam("offset", request.Offset);
return await client.SendFlurlRequestAsJsonAsync<Models.QueryTransactionBlockRecordsResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /transaction-block/transaction-block-records/{block_record_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940435 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransactionBlockRecordResponse> ExecuteGetTransactionBlockRecordAsync(this WechatTenpayClient client, Models.GetTransactionBlockRecordRequest 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, "transaction-block", "transaction-block-records", request.BlockRecordId)
.SetQueryParam("sub_mchid", request.SubMerchantId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetTransactionBlockRecordResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /transaction-block/transaction-block-submissions/sub-mchid/{sub_mchid} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940446 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateTransactionBlockSubmissionResponse> ExecuteCreateTransactionBlockSubmissionAsync(this WechatTenpayClient client, Models.CreateTransactionBlockSubmissionRequest 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, "transaction-block", "transaction-block-submissions", "sub-mchid", request.SubMerchantId);
return await client.SendFlurlRequestAsJsonAsync<Models.CreateTransactionBlockSubmissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /transaction-block/transaction-block-submissions/{block_submission_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/doc/v3/partner/4014940449 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetTransactionBlockSubmissionResponse> ExecuteGetTransactionBlockSubmissionAsync(this WechatTenpayClient client, Models.GetTransactionBlockSubmissionRequest 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, "transaction-block", "transaction-block-submissions", request.BlockSubmissionId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetTransactionBlockSubmissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /mch-manage/mch-manage-records/{manage_record_id}/mch-manage-submissions 接口的请求。</para>
/// </summary>
public class CreateMerchantManageRecordSubmissionRequest : WechatTenpayRequest
{
/// <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.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ManageRecordId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置提交数据JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_data")]
[System.Text.Json.Serialization.JsonPropertyName("submit_data")]
public string SubmitData { get; set; } = "{}";
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /mch-manage/mch-manage-records/{manage_record_id}/mch-manage-submissions 接口的响应。</para>
/// </summary>
public class CreateMerchantManageRecordSubmissionResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置商户管理提交资料记录 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_submission_id")]
[System.Text.Json.Serialization.JsonPropertyName("manage_submission_id")]
public string ManageSubmissionId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /mch-manage/mch-manage-records/{manage_record_id} 接口的请求。</para>
/// </summary>
public class GetMerchantManageRecordRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户管理记录 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ManageRecordId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,139 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /mch-manage/mch-manage-records/{manage_record_id} 接口的响应。</para>
/// </summary>
public class GetMerchantManageRecordResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_id")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_id")]
public string ManageRecordId { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_type")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_type")]
public string ManageRecordType { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_state")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_state")]
public string ManageRecordState { get; set; } = default!;
/// <summary>
/// 获取或设置管控时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("manage_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset ManageTime { get; set; }
/// <summary>
/// 获取或设置管控原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_reason")]
[System.Text.Json.Serialization.JsonPropertyName("manage_reason")]
public string ManageReason { get; set; } = default!;
/// <summary>
/// 获取或设置限制功能。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit_ability")]
[System.Text.Json.Serialization.JsonPropertyName("limit_ability")]
public string? LimitAbility { get; set; }
/// <summary>
/// 获取或设置解除管控方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_way")]
[System.Text.Json.Serialization.JsonPropertyName("recover_way")]
public string? RecoverWay { get; set; }
/// <summary>
/// 获取或设置是否允许提交资料。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_submit")]
[System.Text.Json.Serialization.JsonPropertyName("allow_submit")]
public bool IsAllowSubmit { get; set; }
/// <summary>
/// 获取或设置禁止提交资料原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("forbid_submit_reason")]
[System.Text.Json.Serialization.JsonPropertyName("forbid_submit_reason")]
public string? ForbidSubmitReason { get; set; }
/// <summary>
/// 获取或设置可提交资料开始时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_start_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("submit_start_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? SubmitStartTime { get; set; }
/// <summary>
/// 获取或设置可提交资料结束时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_end_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("submit_end_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? SubmitEndTime { get; set; }
/// <summary>
/// 获取或设置要求提交的资料JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("requested_item_info")]
[System.Text.Json.Serialization.JsonPropertyName("requested_item_info")]
public string? RequestedData { get; set; }
/// <summary>
/// 获取或设置解除管控原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_reason")]
[System.Text.Json.Serialization.JsonPropertyName("recover_reason")]
public string? RecoverReason { get; set; }
/// <summary>
/// 获取或设置解除管控时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("recover_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? RecoverTime { 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("approve_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("approve_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? ApproveTime { get; set; }
}
}

View File

@@ -0,0 +1,44 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /mch-manage/mch-manage-records/sub-mchid/{sub_mchid} 接口的请求。</para>
/// </summary>
public class QueryMerchantManageRecordsRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户管理记录类型。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? ManageRecordType { get; set; }
/// <summary>
/// 获取或设置商户管理记录状态。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? ManageRecordState { get; set; }
/// <summary>
/// 获取或设置分页大小。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int? Offset { get; set; }
}
}

View File

@@ -0,0 +1,173 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /mch-manage/mch-manage-records/sub-mchid/{sub_mchid} 接口的响应。</para>
/// </summary>
public class QueryMerchantManageRecordsResponse : WechatTenpayResponse
{
public static class Types
{
public class Record
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_id")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_id")]
public string ManageRecordId { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_type")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_type")]
public string ManageRecordType { get; set; } = default!;
/// <summary>
/// 获取或设置商户管理记录状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_record_state")]
[System.Text.Json.Serialization.JsonPropertyName("manage_record_state")]
public string ManageRecordState { get; set; } = default!;
/// <summary>
/// 获取或设置管控时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("manage_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset ManageTime { get; set; }
/// <summary>
/// 获取或设置管控原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("manage_reason")]
[System.Text.Json.Serialization.JsonPropertyName("manage_reason")]
public string ManageReason { get; set; } = default!;
/// <summary>
/// 获取或设置限制功能。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit_ability")]
[System.Text.Json.Serialization.JsonPropertyName("limit_ability")]
public string? LimitAbility { get; set; }
/// <summary>
/// 获取或设置解除管控方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_way")]
[System.Text.Json.Serialization.JsonPropertyName("recover_way")]
public string? RecoverWay { get; set; }
/// <summary>
/// 获取或设置是否允许提交资料。
/// </summary>
[Newtonsoft.Json.JsonProperty("allow_submit")]
[System.Text.Json.Serialization.JsonPropertyName("allow_submit")]
public bool IsAllowSubmit { get; set; }
/// <summary>
/// 获取或设置禁止提交资料原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("forbid_submit_reason")]
[System.Text.Json.Serialization.JsonPropertyName("forbid_submit_reason")]
public string? ForbidSubmitReason { get; set; }
/// <summary>
/// 获取或设置可提交资料开始时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_start_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("submit_start_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? SubmitStartTime { get; set; }
/// <summary>
/// 获取或设置可提交资料结束时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_end_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("submit_end_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? SubmitEndTime { get; set; }
/// <summary>
/// 获取或设置要求提交的资料JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("requested_item_info")]
[System.Text.Json.Serialization.JsonPropertyName("requested_item_info")]
public string? RequestedData { get; set; }
/// <summary>
/// 获取或设置解除管控原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_reason")]
[System.Text.Json.Serialization.JsonPropertyName("recover_reason")]
public string? RecoverReason { get; set; }
/// <summary>
/// 获取或设置解除管控时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("recover_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? RecoverTime { 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("approve_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("approve_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? ApproveTime { get; set; }
}
}
/// <summary>
/// 获取或设置商户管理记录列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Record[] RecordList { get; set; } = default!;
/// <summary>
/// 获取或设置分页大小。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int Offset { get; set; }
/// <summary>
/// 获取或设置券总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,52 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /mch-manage/submission-files/sub-mchid/{sub_mchid}/upload 接口的请求。</para>
/// </summary>
public class UploadMerchantManageSubmissionFileRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置资料项 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ItemId { 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? FileHash { get; set; }
/// <summary>
/// 获取或设置文件 Conent-Type。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? FileContentType { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /mch-manage/submission-files/sub-mchid/{sub_mchid}/upload 接口的响应。</para>
/// </summary>
public class UploadMerchantManageSubmissionFileResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置文件 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("file_id")]
[System.Text.Json.Serialization.JsonPropertyName("file_id")]
public string FileId { get; set; } = default!;
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /transaction-block/transaction-block-submissions/sub-mchid/{sub_mchid} 接口的请求。</para>
/// </summary>
public class CreateTransactionBlockSubmissionRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户申诉单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_submit_id")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_submit_id")]
public string MerchantSubmitId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置提交数据JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("submit_data")]
[System.Text.Json.Serialization.JsonPropertyName("submit_data")]
public string SubmitData { get; set; } = "{}";
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /transaction-block/transaction-block-submissions/sub-mchid/{sub_mchid} 接口的响应。</para>
/// </summary>
public class CreateTransactionBlockSubmissionResponse : GetTransactionBlockSubmissionResponse
{
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-records/{block_record_id} 接口的请求。</para>
/// </summary>
public class GetTransactionBlockRecordRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置交易拦截记录 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string BlockRecordId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,54 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-records/{block_record_id} 接口的响应。</para>
/// </summary>
public class GetTransactionBlockRecordResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置交易拦截记录 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_record_id")]
[System.Text.Json.Serialization.JsonPropertyName("block_record_id")]
public string BlockRecordId { get; set; } = default!;
/// <summary>
/// 获取或设置拦截时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("block_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset BlockTime { get; set; }
/// <summary>
/// 获取或设置拦截原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_reason")]
[System.Text.Json.Serialization.JsonPropertyName("block_reason")]
public string BlockReason { get; set; } = default!;
/// <summary>
/// 获取或设置拦截笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("number_of_block")]
[System.Text.Json.Serialization.JsonPropertyName("number_of_block")]
public string? NumberOfBlock { get; set; }
/// <summary>
/// 获取或设置解除管控方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_way")]
[System.Text.Json.Serialization.JsonPropertyName("recover_way")]
public string? RecoverWay { get; set; }
/// <summary>
/// 获取或设置要求提交的资料JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("requested_item_info")]
[System.Text.Json.Serialization.JsonPropertyName("requested_item_info")]
public string? RequestedData { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-submissions/{block_submission_id} 接口的请求。</para>
/// </summary>
public class GetTransactionBlockSubmissionRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置交易拦截申诉 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string BlockSubmissionId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,49 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-submissions/{block_submission_id} 接口的响应。</para>
/// </summary>
public class GetTransactionBlockSubmissionResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置交易拦截申诉 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_submission_id")]
[System.Text.Json.Serialization.JsonPropertyName("block_submission_id")]
public string BlockSubmissionId { 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("review_result")]
[System.Text.Json.Serialization.JsonPropertyName("review_result")]
public string? ReviewResult { get; set; }
/// <summary>
/// 获取或设置审核时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("review_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("review_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset? ReviewTime { get; set; }
/// <summary>
/// 获取或设置审核驳回原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("review_reject_reason")]
[System.Text.Json.Serialization.JsonPropertyName("review_reject_reason")]
public string? ReviewRejectReason { get; set; }
}
}

View File

@@ -0,0 +1,30 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-records/sub-mchid/{sub_mchid} 接口的请求。</para>
/// </summary>
public class QueryTransactionBlockRecordsRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置分页大小。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int? Offset { get; set; }
}
}

View File

@@ -0,0 +1,88 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /transaction-block/transaction-block-records/sub-mchid/{sub_mchid} 接口的响应。</para>
/// </summary>
public class QueryTransactionBlockRecordsResponse : WechatTenpayResponse
{
public static class Types
{
public class Record
{
/// <summary>
/// 获取或设置交易拦截记录 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_record_id")]
[System.Text.Json.Serialization.JsonPropertyName("block_record_id")]
public string BlockRecordId { get; set; } = default!;
/// <summary>
/// 获取或设置拦截时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("block_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))]
public DateTimeOffset BlockTime { get; set; }
/// <summary>
/// 获取或设置拦截原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("block_reason")]
[System.Text.Json.Serialization.JsonPropertyName("block_reason")]
public string BlockReason { get; set; } = default!;
/// <summary>
/// 获取或设置拦截笔数。
/// </summary>
[Newtonsoft.Json.JsonProperty("number_of_block")]
[System.Text.Json.Serialization.JsonPropertyName("number_of_block")]
public string? NumberOfBlock { get; set; }
/// <summary>
/// 获取或设置解除管控方式。
/// </summary>
[Newtonsoft.Json.JsonProperty("recover_way")]
[System.Text.Json.Serialization.JsonPropertyName("recover_way")]
public string? RecoverWay { get; set; }
/// <summary>
/// 获取或设置要求提交的资料JSON 格式)。
/// </summary>
[Newtonsoft.Json.JsonProperty("requested_item_info")]
[System.Text.Json.Serialization.JsonPropertyName("requested_item_info")]
public string? RequestedData { get; set; }
}
}
/// <summary>
/// 获取或设置交易拦截记录列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Record[] RecordList { get; set; } = default!;
/// <summary>
/// 获取或设置分页大小。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int Offset { get; set; }
/// <summary>
/// 获取或设置券总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,4 @@
{
"submit_data": "{ \t\"record_fields\": [{ \t\t\"item_id\": 100001, \t\t\"name\": \"身份证号\", \t\t\"type\": 1, \t\t\"field_name\": \"FCertCardId\", \t\t\"repeated_field_data\": [\"ri8U5FUSmHh1peGNBUvG+VwGHl31ymiLms5V1yhTbBWUApJDInme1b+ndtrlAielJYpQE41sSxj46ePMto2mySBIJjgCIyChLCTQ580M5pNKglAkjTnXwzJXyPhpyzkpdeFfUDjWc+qd6G4UwrL70br/EEqfQbGNaUKX6jAGjB8wd8wndImMB3iB2vUuAOL+6giLWCBBaC50QRfCTDlGi0c41Gt92tCrRSI7pWzU1cxxJwng7M53/J5PhI+eikLqbhUYlRPHYl6j0ouRItWHCRORYKuz6enluXyFwUCaaR3IeINSM8CwjHp6spnTIo70UaRJWAcZ0jQp/lwX2JVxaw==\"] \t}, { \t\t\"item_id\": 100002, \t\t\"name\": \"门店照片\", \t\t\"type\": 2, \t\t\"field_name\": \"FImages\", \t\t\"repeated_field_data\": [\"xxx1.jpg\"] \t}, { \t\t\"item_id\": 100003, \t\t\"name\": \"身份证照片\", \t\t\"type\": 2, \t\t\"field_name\": \"FImages\", \t\t\"repeated_field_data\": [\"xxx1.jpg\", \"xxx2.jpg\"] \t}, { \t\t\"item_id\": 100004, \t\t\"name\": \"店铺地址\", \t\t\"type\": 3, \t\t\"field_name\": \"FAddRess\", \t\t\"repeated_field_data\": [\"{\\\"longitude\\\":\\\"37.5\\\",\\\"latitude\\\":\\\"123.5\\\",\\\"province\\\":\\\"广东省\\\",\\\"city\\\":\\\"深圳市\\\",\\\"area\\\":\\\"南山区\\\",\\\"street\\\":\\\"XX街道\\\",\\\"address\\\":\\\"XX路XX号\\\",\\\"name\\\":\\\"XXXX公司\\\"}\"] \t}, { \t\t\"item_id\": 100005, \t\t\"name\": \"经营场景\", \t\t\"type\": 4, \t\t\"field_name\": \"FBusinessScenarios\", \t\t\"repeated_field_data\": [\"线上经营\", \"线上线下经营\"] \t}, { \t\t\"item_id\": 100006, \t\t\"name\": \"营业时间\", \t\t\"type\": 4, \t\t\"field_name\": \"FOpeningHours\", \t\t\"repeated_field_data\": [\"09:00:00\", \"20:00:00\"] \t}] }",
"sub_mchid": "123000110"
}

View File

@@ -0,0 +1,3 @@
{
"manage_submission_id": "S0120190217140201012345672111223"
}

View File

@@ -0,0 +1,19 @@
{
"sub_mchid": "123000110",
"manage_record_id": "M1210999900435123451697535102441",
"manage_record_type": "FUNCTIONAL_LIMIT_RECORD",
"manage_time": "2018-06-08T10:34:56+08:00",
"manage_reason": "涉嫌信用卡套现",
"limit_ability": "关闭支付权限,关闭体现权限",
"recover_way": "SUBMIT_INFORMATION",
"allow_submit": true,
"forbid_submit_reason": "应平台管理要求,此单据不支持申诉",
"submit_start_time": "2018-06-08T10:34:56+08:00",
"submit_end_time": "2018-06-08T10:34:56+08:00",
"requested_item_info": "{ \t\"record_fields\": [{ \t\t\t\"item_id\": \"100004\", \t\t\t\"field_name\": \"legal_person_card_id\", \t\t\t\"name\": \"企业法人身份证号\", \t\t\t\"type\": 1, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请输入企业法人身份证号\", \t\t\t\"tooltip\": \"需要填写完整身份证号\", \t\t\t\"required\": 1, \t\t\t\"string_check_rule\": { \t\t\t\t\"min_string_length\": 1, \t\t\t\t\"max_string_length\": 50, \t\t\t\t\"validator\": \"idcard\" \t\t\t}, \t\t\t\"need_encrypt\": true \t\t}, \t\t{ \t\t\t\"item_id\": \"100005\", \t\t\t\"field_name\": \"legal_person_cert_type\", \t\t\t\"name\": \"企业法人证件类型\", \t\t\t\"type\": 4, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请选择证件类型\", \t\t\t\"tooltip\": \"\", \t\t\t\"required\": 0, \t\t\t\"enum_check_rule\": { \t\t\t\t\"min_list_length\": 1, \t\t\t\t\"max_list_length\": 1, \t\t\t\t\"enum_values\": [\"大陆居民身份证\", \"港澳台通行证\"] \t\t\t}, \t\t\t\"need_encrypt\": false \t\t}, \t\t{ \t\t\t\"item_id\": \"100006\", \t\t\t\"field_name\": \"inland_cert_card_image\", \t\t\t\"name\": \"大陆居民身份证照片\", \t\t\t\"type\": 2, \t\t\t\"tips\": \"请上传图片\", \t\t\t\"placeholder\": \"\", \t\t\t\"tooltip\": \"需要正面和反面两张照片\", \t\t\t\"required\": 1, \t\t\t\"need_encrypt\": false, \t\t\t\"file_check_rule\": { \t\t\t\t\"min_list_length\": 2, \t\t\t\t\"max_list_length\": 2, \t\t\t\t\"enum_file_exts\": [\"png\", \"jpg\", \"jpeg\"], \t\t\t\t\"max_file_size\": 5 \t\t\t}, \t\t\t\"relations\": [{ \t\t\t\t\"source_key\": 100005, \t\t\t\t\"source_value\": \"大陆居民身份证\" \t\t\t}] \t\t} \t] }",
"manage_record_state": "PENDING",
"recover_time": "2018-06-08T10:34:56+08:00",
"recover_reason": "MERCHANT_SUBMIT_RECOVER",
"reject_reason": "身份证信息遮挡,请上传清晰的身份证图片",
"approve_time": "2018-06-08T10:34:56+08:00"
}

View File

@@ -0,0 +1,26 @@
{
"data": [
{
"sub_mchid": "123000110",
"manage_record_id": "M1210999900435123451697535102441",
"manage_record_type": "FUNCTIONAL_LIMIT_RECORD",
"manage_time": "2018-06-08T10:34:56+08:00",
"manage_reason": "涉嫌信用卡套现",
"limit_ability": "关闭支付权限,关闭体现权限",
"recover_way": "SUBMIT_INFORMATION",
"allow_submit": true,
"forbid_submit_reason": "应平台管理要求,此单据不支持申诉",
"submit_start_time": "2018-06-08T10:34:56+08:00",
"submit_end_time": "2018-06-08T10:34:56+08:00",
"requested_item_info": "{ \t\"record_fields\": [{ \t\t\t\"item_id\": \"100004\", \t\t\t\"field_name\": \"legal_person_card_id\", \t\t\t\"name\": \"企业法人身份证号\", \t\t\t\"type\": 1, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请输入企业法人身份证号\", \t\t\t\"tooltip\": \"需要填写完整身份证号\", \t\t\t\"required\": 1, \t\t\t\"string_check_rule\": { \t\t\t\t\"min_string_length\": 1, \t\t\t\t\"max_string_length\": 50, \t\t\t\t\"validator\": \"idcard\" \t\t\t}, \t\t\t\"need_encrypt\": true \t\t}, \t\t{ \t\t\t\"item_id\": \"100005\", \t\t\t\"field_name\": \"legal_person_cert_type\", \t\t\t\"name\": \"企业法人证件类型\", \t\t\t\"type\": 4, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请选择证件类型\", \t\t\t\"tooltip\": \"\", \t\t\t\"required\": 0, \t\t\t\"enum_check_rule\": { \t\t\t\t\"min_list_length\": 1, \t\t\t\t\"max_list_length\": 1, \t\t\t\t\"enum_values\": [\"大陆居民身份证\", \"港澳台通行证\"] \t\t\t}, \t\t\t\"need_encrypt\": false \t\t}, \t\t{ \t\t\t\"item_id\": \"100006\", \t\t\t\"field_name\": \"inland_cert_card_image\", \t\t\t\"name\": \"大陆居民身份证照片\", \t\t\t\"type\": 2, \t\t\t\"tips\": \"请上传图片\", \t\t\t\"placeholder\": \"\", \t\t\t\"tooltip\": \"需要正面和反面两张照片\", \t\t\t\"required\": 1, \t\t\t\"need_encrypt\": false, \t\t\t\"file_check_rule\": { \t\t\t\t\"min_list_length\": 2, \t\t\t\t\"max_list_length\": 2, \t\t\t\t\"enum_file_exts\": [\"png\", \"jpg\", \"jpeg\"], \t\t\t\t\"max_file_size\": 5 \t\t\t}, \t\t\t\"relations\": [{ \t\t\t\t\"source_key\": 100005, \t\t\t\t\"source_value\": \"大陆居民身份证\" \t\t\t}] \t\t} \t] }",
"manage_record_state": "PENDING",
"recover_time": "2018-06-08T10:34:56+08:00",
"recover_reason": "MERCHANT_SUBMIT_RECOVER",
"reject_reason": "身份证信息遮挡,请上传清晰的身份证图片",
"approve_time": "2018-06-08T10:34:56+08:00"
}
],
"offset": 10,
"limit": 5,
"total_count": 1234
}

View File

@@ -0,0 +1,4 @@
{
"file_name": "filea.jpg",
"file_digest": "B94D27B9934D3E08A52E52D7DA7DABFAC484EFE37A5380EE9088F7ACE2EFCDE9"
}

View File

@@ -0,0 +1,4 @@
{
"submit_data": "{ \t\"record_fields\": [{ \t\t\"item_id\": 100001, \t\t\"name\": \"身份证号\", \t\t\"type\": 1, \t\t\"field_name\": \"FCertCardId\", \t\t\"repeated_field_data\": [\"ri8U5FUSmHh1peGNBUvG+VwGHl31ymiLms5V1yhTbBWUApJDInme1b+ndtrlAielJYpQE41sSxj46ePMto2mySBIJjgCIyChLCTQ580M5pNKglAkjTnXwzJXyPhpyzkpdeFfUDjWc+qd6G4UwrL70br/EEqfQbGNaUKX6jAGjB8wd8wndImMB3iB2vUuAOL+6giLWCBBaC50QRfCTDlGi0c41Gt92tCrRSI7pWzU1cxxJwng7M53/J5PhI+eikLqbhUYlRPHYl6j0ouRItWHCRORYKuz6enluXyFwUCaaR3IeINSM8CwjHp6spnTIo70UaRJWAcZ0jQp/lwX2JVxaw==\"] \t}, { \t\t\"item_id\": 100002, \t\t\"name\": \"门店照片\", \t\t\"type\": 2, \t\t\"field_name\": \"FImages\", \t\t\"repeated_field_data\": [\"xxx1.jpg\"] \t}, { \t\t\"item_id\": 100003, \t\t\"name\": \"身份证照片\", \t\t\"type\": 2, \t\t\"field_name\": \"FImages\", \t\t\"repeated_field_data\": [\"xxx1.jpg\", \"xxx2.jpg\"] \t}, { \t\t\"item_id\": 100004, \t\t\"name\": \"店铺地址\", \t\t\"type\": 3, \t\t\"field_name\": \"FAddRess\", \t\t\"repeated_field_data\": [\"{\\\"longitude\\\":\\\"37.5\\\",\\\"latitude\\\":\\\"123.5\\\",\\\"province\\\":\\\"广东省\\\",\\\"city\\\":\\\"深圳市\\\",\\\"area\\\":\\\"南山区\\\",\\\"street\\\":\\\"XX街道\\\",\\\"address\\\":\\\"XX路XX号\\\",\\\"name\\\":\\\"XXXX公司\\\"}\"] \t}, { \t\t\"item_id\": 100005, \t\t\"name\": \"经营场景\", \t\t\"type\": 4, \t\t\"field_name\": \"FBusinessScenarios\", \t\t\"repeated_field_data\": [\"线上经营\", \"线上线下经营\"] \t}, { \t\t\"item_id\": 100006, \t\t\"name\": \"营业时间\", \t\t\"type\": 4, \t\t\"field_name\": \"FOpeningHours\", \t\t\"repeated_field_data\": [\"09:00:00\", \"20:00:00\"] \t}] }",
"merchant_submit_id": "ABC123456789"
}

View File

@@ -0,0 +1,7 @@
{
"block_submission_id": "B021234566799876aacsecd",
"submit_time": "2018-06-08T10:34:56+08:00",
"review_result": "EMPTY",
"review_time": "2018-06-08T10:34:56+08:00",
"review_reject_reason": "身份证图片有遮挡,请上传清晰的身份证图片"
}

View File

@@ -0,0 +1,8 @@
{
"block_record_id": "23400",
"block_time": "2018-06-08T10:34:56+08:00",
"block_reason": "涉嫌信用卡套现",
"number_of_block": "LESS_THAN_TWENTY",
"recover_way": "SUBMIT_INFORMATION",
"requested_item_info": "{ \t\"record_fields\": [{ \t\t\t\"item_id\": \"100004\", \t\t\t\"field_name\": \"legal_person_card_id\", \t\t\t\"name\": \"企业法人身份证号\", \t\t\t\"type\": 1, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请输入企业法人身份证号\", \t\t\t\"tooltip\": \"需要填写完整身份证号\", \t\t\t\"required\": 1, \t\t\t\"string_check_rule\": { \t\t\t\t\"min_string_length\": 1, \t\t\t\t\"max_string_length\": 50, \t\t\t\t\"validator\": \"idcard\" \t\t\t}, \t\t\t\"need_encrypt\": true \t\t}, \t\t{ \t\t\t\"item_id\": \"100005\", \t\t\t\"field_name\": \"legal_person_cert_type\", \t\t\t\"name\": \"企业法人证件类型\", \t\t\t\"type\": 4, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请选择证件类型\", \t\t\t\"tooltip\": \"\", \t\t\t\"required\": 0, \t\t\t\"enum_check_rule\": { \t\t\t\t\"min_list_length\": 1, \t\t\t\t\"max_list_length\": 1, \t\t\t\t\"enum_values\": [\"大陆居民身份证\", \"港澳台通行证\"] \t\t\t}, \t\t\t\"need_encrypt\": false \t\t}, \t\t{ \t\t\t\"item_id\": \"100006\", \t\t\t\"field_name\": \"inland_cert_card_image\", \t\t\t\"name\": \"大陆居民身份证照片\", \t\t\t\"type\": 2, \t\t\t\"tips\": \"请上传图片\", \t\t\t\"placeholder\": \"\", \t\t\t\"tooltip\": \"需要正面和反面两张照片\", \t\t\t\"required\": 1, \t\t\t\"need_encrypt\": false, \t\t\t\"file_check_rule\": { \t\t\t\t\"min_list_length\": 2, \t\t\t\t\"max_list_length\": 2, \t\t\t\t\"enum_file_exts\": [\"png\", \"jpg\", \"jpeg\"], \t\t\t\t\"max_file_size\": 5 \t\t\t}, \t\t\t\"relations\": [{ \t\t\t\t\"source_key\": 100005, \t\t\t\t\"source_value\": \"大陆居民身份证\" \t\t\t}] \t\t} \t] }"
}

View File

@@ -0,0 +1,7 @@
{
"block_submission_id": "B021234566799876aacsecd",
"submit_time": "2018-06-08T10:34:56+08:00",
"review_result": "EMPTY",
"review_time": "2018-06-08T10:34:56+08:00",
"review_reject_reason": "身份证图片有遮挡,请上传清晰的身份证图片"
}

View File

@@ -0,0 +1,15 @@
{
"data": [
{
"block_record_id": "23400",
"block_time": "2018-06-08T10:34:56+08:00",
"block_reason": "涉嫌信用卡套现",
"number_of_block": "LESS_THAN_TWENTY",
"recover_way": "SUBMIT_INFORMATION",
"requested_item_info": "{ \t\"record_fields\": [{ \t\t\t\"item_id\": \"100004\", \t\t\t\"field_name\": \"legal_person_card_id\", \t\t\t\"name\": \"企业法人身份证号\", \t\t\t\"type\": 1, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请输入企业法人身份证号\", \t\t\t\"tooltip\": \"需要填写完整身份证号\", \t\t\t\"required\": 1, \t\t\t\"string_check_rule\": { \t\t\t\t\"min_string_length\": 1, \t\t\t\t\"max_string_length\": 50, \t\t\t\t\"validator\": \"idcard\" \t\t\t}, \t\t\t\"need_encrypt\": true \t\t}, \t\t{ \t\t\t\"item_id\": \"100005\", \t\t\t\"field_name\": \"legal_person_cert_type\", \t\t\t\"name\": \"企业法人证件类型\", \t\t\t\"type\": 4, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请选择证件类型\", \t\t\t\"tooltip\": \"\", \t\t\t\"required\": 0, \t\t\t\"enum_check_rule\": { \t\t\t\t\"min_list_length\": 1, \t\t\t\t\"max_list_length\": 1, \t\t\t\t\"enum_values\": [\"大陆居民身份证\", \"港澳台通行证\"] \t\t\t}, \t\t\t\"need_encrypt\": false \t\t}, \t\t{ \t\t\t\"item_id\": \"100006\", \t\t\t\"field_name\": \"inland_cert_card_image\", \t\t\t\"name\": \"大陆居民身份证照片\", \t\t\t\"type\": 2, \t\t\t\"tips\": \"请上传图片\", \t\t\t\"placeholder\": \"\", \t\t\t\"tooltip\": \"需要正面和反面两张照片\", \t\t\t\"required\": 1, \t\t\t\"need_encrypt\": false, \t\t\t\"file_check_rule\": { \t\t\t\t\"min_list_length\": 2, \t\t\t\t\"max_list_length\": 2, \t\t\t\t\"enum_file_exts\": [\"png\", \"jpg\", \"jpeg\"], \t\t\t\t\"max_file_size\": 5 \t\t\t}, \t\t\t\"relations\": [{ \t\t\t\t\"source_key\": 100005, \t\t\t\t\"source_value\": \"大陆居民身份证\" \t\t\t}] \t\t} \t] }"
}
],
"offset": 10,
"limit": 5,
"total_count": 1234
}