feat(wxapi): 新增自定义交易组件售后相关接口

This commit is contained in:
Fu Diwei 2022-04-12 16:22:42 +08:00
parent 46fc9ae69f
commit 919fa0b529
37 changed files with 1131 additions and 50 deletions

View File

@ -824,6 +824,208 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
}
#endregion
#region ECAftersale
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/add 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/add_new.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleAddResponse> ExecuteShopECAftersaleAddAsync(this WechatApiClient client, Models.ShopECAftersaleAddRequest 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, "shop", "ecaftersale", "add")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/cancel 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/add_new.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleCancelResponse> ExecuteShopECAftersaleCancelAsync(this WechatApiClient client, Models.ShopECAftersaleCancelRequest 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, "shop", "ecaftersale", "cancel")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleCancelResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/uploadreturninfo 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/uploadreturninfo.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleUploadReturnInfoResponse> ExecuteShopECAftersaleUploadReturnInfoAsync(this WechatApiClient client, Models.ShopECAftersaleUploadReturnInfoRequest 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, "shop", "ecaftersale", "uploadreturninfo")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleUploadReturnInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/get_list 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/get_list.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleGetListResponse> ExecuteShopECAftersaleGetListAsync(this WechatApiClient client, Models.ShopECAftersaleGetListRequest 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, "shop", "ecaftersale", "get_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleGetListResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/get 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/get_new.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleGetResponse> ExecuteShopECAftersaleGetAsync(this WechatApiClient client, Models.ShopECAftersaleGetRequest 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, "shop", "ecaftersale", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/update 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/aftersale_update.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleUpdateResponse> ExecuteShopECAftersaleUpdateAsync(this WechatApiClient client, Models.ShopECAftersaleUpdateRequest 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, "shop", "ecaftersale", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/acceptrefund 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/acceptrefund.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleAcceptRefundResponse> ExecuteShopECAftersaleAcceptRefundAsync(this WechatApiClient client, Models.ShopECAftersaleAcceptRefundRequest 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, "shop", "ecaftersale", "acceptrefund")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleAcceptRefundResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/acceptreturn 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/acceptreturn.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleAcceptReturnResponse> ExecuteShopECAftersaleAcceptReturnAsync(this WechatApiClient client, Models.ShopECAftersaleAcceptReturnRequest 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, "shop", "ecaftersale", "acceptreturn")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleAcceptReturnResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/reject 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/reject.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleRejectResponse> ExecuteShopECAftersaleRejectAsync(this WechatApiClient client, Models.ShopECAftersaleRejectRequest 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, "shop", "ecaftersale", "reject")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleRejectResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /shop/ecaftersale/upload_certificates 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/aftersale/upload_certificates.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ShopECAftersaleUploadCertificatesResponse> ExecuteShopECAftersaleUploadCertificatesAsync(this WechatApiClient client, Models.ShopECAftersaleUploadCertificatesRequest 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, "shop", "ecaftersale", "upload_certificates")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.ShopECAftersaleUploadCertificatesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Coupon
/// <summary>
/// <para>异步调用 [POST] /shop/coupon/add 接口。</para>

View File

@ -24,7 +24,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("out_sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
public string OutSKUId { get; set; } = string.Empty;
public string? OutSKUId { get; set; }
/// <summary>
/// 获取或设置参与售后的商品数量。

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/acceptrefund 接口的请求。</para>
/// </summary>
public class ShopECAftersaleAcceptRefundRequest : WechatApiRequest, IInferable<ShopECAftersaleAcceptRefundRequest, ShopECAftersaleAcceptRefundResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/acceptrefund 接口的响应。</para>
/// </summary>
public class ShopECAftersaleAcceptRefundResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/acceptreturn 接口的请求。</para>
/// </summary>
public class ShopECAftersaleAcceptReturnRequest : WechatApiRequest, IInferable<ShopECAftersaleAcceptReturnRequest, ShopECAftersaleAcceptReturnResponse>
{
public static class Types
{
public class Address : ShopAccountUpdateInfoRequest.Types.Address
{
}
}
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家收货地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("address_info")]
[System.Text.Json.Serialization.JsonPropertyName("address_info")]
public Types.Address Address { get; set; } = new Types.Address();
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/acceptreturn 接口的响应。</para>
/// </summary>
public class ShopECAftersaleAcceptReturnResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,124 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/add 接口的请求。</para>
/// </summary>
public class ShopECAftersaleAddRequest : WechatApiRequest, IInferable<ShopECAftersaleAddRequest, ShopECAftersaleAddResponse>
{
public static class Types
{
public class Product
{
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_product_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
public string? OutSKUId { get; set; }
/// <summary>
/// 获取或设置参与售后的商品数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_cnt")]
[System.Text.Json.Serialization.JsonPropertyName("product_cnt")]
public int Count { get; set; }
}
public class Media
{
/// <summary>
/// 获取或设置类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public int Type { get; set; }
/// <summary>
/// 获取或设置 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("url")]
[System.Text.Json.Serialization.JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置订单号。与字段 <see cref="OutOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public long? OrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义订单号。与字段 <see cref="OrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_order_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_order_id")]
public string? OutOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置售后类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public int Type { get; set; }
/// <summary>
/// 获取或设置退款金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("orderamt")]
[System.Text.Json.Serialization.JsonPropertyName("orderamt")]
public int RefundAmount { get; set; }
/// <summary>
/// 获取或设置退款原因类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason_type")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason_type")]
public int RefundReasonType { get; set; }
/// <summary>
/// 获取或设置退款原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason")]
public string RefundReason { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_info")]
[System.Text.Json.Serialization.JsonPropertyName("product_info")]
public Types.Product Product { get; set; } = new Types.Product();
/// <summary>
/// 获取或设置附件列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_list")]
[System.Text.Json.Serialization.JsonPropertyName("media_list")]
public IList<Types.Media>? MediaList { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/add 接口的响应。</para>
/// </summary>
public class ShopECAftersaleAddResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置售后单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long AftersaleOrderId { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/cancel 接口的请求。</para>
/// </summary>
public class ShopECAftersaleCancelRequest : WechatApiRequest, IInferable<ShopECAftersaleCancelRequest, ShopECAftersaleCancelResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/cancel 接口的响应。</para>
/// </summary>
public class ShopECAftersaleCancelResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,64 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/get_list 接口的请求。</para>
/// </summary>
public class ShopECAftersaleGetListRequest : WechatApiRequest, IInferable<ShopECAftersaleGetListRequest, ShopECAftersaleGetListResponse>
{
/// <summary>
/// 获取或设置售后单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int? Status { get; set; }
/// <summary>
/// 获取或设置申请时间开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("begin_create_time")]
[System.Text.Json.Serialization.JsonPropertyName("begin_create_time")]
public long? BeginCreateTimestamp { get; set; }
/// <summary>
/// 获取或设置申请时间截止时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_create_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_create_time")]
public long? EndCreateTimestamp { get; set; }
/// <summary>
/// 获取或设置关联商家自定义订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_order_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_order_id")]
public string? OutOrderId { get; set; }
/// <summary>
/// 获取或设置关联订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public long? OrderId { get; set; }
/// <summary>
/// 获取或设置用户 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string? OpenId { get; set; }
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int Limit { get; set; } = 10;
}
}

View File

@ -0,0 +1,180 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/get_list 接口的响应。</para>
/// </summary>
public class ShopECAftersaleGetListResponse : WechatApiResponse
{
public static class Types
{
public class AftersaleOrder
{
public static class Types
{
public class Product
{
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_product_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
public string? OutSKUId { get; set; }
/// <summary>
/// 获取或设置参与售后的商品数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_cnt")]
[System.Text.Json.Serialization.JsonPropertyName("product_cnt")]
public int Count { get; set; }
}
public class Return
{
/// <summary>
/// 获取或设置快递公司 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_id")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_id")]
public string DeliveryId { get; set; } = default!;
/// <summary>
/// 获取或设置快递公司名字。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_name")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_name")]
public string DeliveryName { get; set; } = default!;
/// <summary>
/// 获取或设置快递单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("waybill_id")]
[System.Text.Json.Serialization.JsonPropertyName("waybill_id")]
public string WaybillId { get; set; } = default!;
/// <summary>
/// 获取或设置退货时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_return_time")]
[System.Text.Json.Serialization.JsonPropertyName("order_return_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long ReturnTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置售后单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string OutAftersaleOrderId { get; set; } = default!;
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public long OrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_order_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_order_id")]
public string OutOrderId { get; set; } = default!;
/// <summary>
/// 获取或设置类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public int Type { get; set; }
/// <summary>
/// 获取或设置状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int Status { get; set; }
/// <summary>
/// 获取或设置退款金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("orderamt")]
[System.Text.Json.Serialization.JsonPropertyName("orderamt")]
public int RefundAmount { get; set; }
/// <summary>
/// 获取或设置退款原因类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason_type")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason_type")]
public int RefundReasonType { get; set; }
/// <summary>
/// 获取或设置退款原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason")]
public string RefundReason { get; set; } = default!;
/// <summary>
/// 获取或设置创建时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long CreateTimeTimestamp { get; set; }
/// <summary>
/// 获取或设置更新时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long UpdateTimeTimestamp { get; set; }
/// <summary>
/// 获取或设置商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_info")]
[System.Text.Json.Serialization.JsonPropertyName("product_info")]
public Types.Product Product { get; set; } = default!;
/// <summary>
/// 获取或设置退货信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("return_info")]
[System.Text.Json.Serialization.JsonPropertyName("return_info")]
public Types.Return? Return { get; set; }
}
}
/// <summary>
/// 获取或设置售后单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("after_sales_orders")]
[System.Text.Json.Serialization.JsonPropertyName("after_sales_orders")]
public Types.AftersaleOrder[] AftersaleOrderList { get; set; } = default!;
/// <summary>
/// 获取或设置是否还有更多。
/// </summary>
[Newtonsoft.Json.JsonProperty("has_more")]
[System.Text.Json.Serialization.JsonPropertyName("has_more")]
public bool HasMore { get; set; }
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/get 接口的请求。</para>
/// </summary>
public class ShopECAftersaleGetRequest : WechatApiRequest, IInferable<ShopECAftersaleGetRequest, ShopECAftersaleGetResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/get 接口的响应。</para>
/// </summary>
public class ShopECAftersaleGetResponse : WechatApiResponse
{
public static class Types
{
public class AftersaleOrder : ShopECAftersaleGetListResponse.Types.AftersaleOrder
{
}
}
/// <summary>
/// 获取或设置售后单信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("after_sales_order")]
[System.Text.Json.Serialization.JsonPropertyName("after_sales_order")]
public Types.AftersaleOrder AftersaleOrder { get; set; } = default!;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/reject 接口的请求。</para>
/// </summary>
public class ShopECAftersaleRejectRequest : WechatApiRequest, IInferable<ShopECAftersaleRejectRequest, ShopECAftersaleRejectResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/reject 接口的响应。</para>
/// </summary>
public class ShopECAftersaleRejectResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,73 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/update 接口的请求。</para>
/// </summary>
public class ShopECAftersaleUpdateRequest : WechatApiRequest, IInferable<ShopECAftersaleUpdateRequest, ShopECAftersaleUpdateResponse>
{
public static class Types
{
public class Media : ShopECAftersaleAddRequest.Types.Media
{
}
}
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置售后类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("type")]
[System.Text.Json.Serialization.JsonPropertyName("type")]
public int Type { get; set; }
/// <summary>
/// 获取或设置退款金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("orderamt")]
[System.Text.Json.Serialization.JsonPropertyName("orderamt")]
public int RefundAmount { get; set; }
/// <summary>
/// 获取或设置退款原因类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason_type")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason_type")]
public int RefundReasonType { get; set; }
/// <summary>
/// 获取或设置退款原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_reason")]
[System.Text.Json.Serialization.JsonPropertyName("refund_reason")]
public string RefundReason { get; set; } = string.Empty;
/// <summary>
/// 获取或设置附件列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_list")]
[System.Text.Json.Serialization.JsonPropertyName("media_list")]
public IList<Types.Media>? MediaList { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/update 接口的响应。</para>
/// </summary>
public class ShopECAftersaleUpdateResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,38 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/upload_certificates 接口的请求。</para>
/// </summary>
public class ShopECAftersaleUploadCertificatesRequest : WechatApiRequest, IInferable<ShopECAftersaleUploadCertificatesRequest, ShopECAftersaleUploadCertificatesResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置协商文本内容。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_desc")]
[System.Text.Json.Serialization.JsonPropertyName("refund_desc")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 获取或设置凭证图片 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("certificates")]
[System.Text.Json.Serialization.JsonPropertyName("certificates")]
public IList<string> CertificateUrlList { get; set; } = new List<string>();
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/upload_certificates 接口的响应。</para>
/// </summary>
public class ShopECAftersaleUploadCertificatesResponse : WechatApiResponse
{
}
}

View File

@ -0,0 +1,50 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/uploadreturninfo 接口的请求。</para>
/// </summary>
public class ShopECAftersaleUploadReturnInfoRequest : WechatApiRequest, IInferable<ShopECAftersaleUploadReturnInfoRequest, ShopECAftersaleUploadReturnInfoResponse>
{
/// <summary>
/// 获取或设置售后单号。与字段 <see cref="OutAftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
public long? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置商家自定义售后单号。与字段 <see cref="AftersaleOrderId"/> 二选一。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_aftersale_id")]
public string? OutAftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置快递公司 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_id")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_id")]
public string DeliveryId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置快递公司名字。
/// </summary>
[Newtonsoft.Json.JsonProperty("delivery_name")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_name")]
public string DeliveryName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置快递单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("waybill_id")]
[System.Text.Json.Serialization.JsonPropertyName("waybill_id")]
public string WaybillId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /shop/ecaftersale/uploadreturninfo 接口的响应。</para>
/// </summary>
public class ShopECAftersaleUploadReturnInfoResponse : WechatApiResponse
{
}
}

View File

@ -171,56 +171,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
public int DeliveryType { get; set; } = 1;
}
public class Address
public class Address : ShopAccountUpdateInfoRequest.Types.Address
{
/// <summary>
/// 获取或设置收件人姓名。
/// </summary>
[Newtonsoft.Json.JsonProperty("receiver_name")]
[System.Text.Json.Serialization.JsonPropertyName("receiver_name")]
public string ReceiverName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置国家。
/// </summary>
[Newtonsoft.Json.JsonProperty("country")]
[System.Text.Json.Serialization.JsonPropertyName("country")]
public string? Country { get; set; }
/// <summary>
/// 获取或设置省份。
/// </summary>
[Newtonsoft.Json.JsonProperty("province")]
[System.Text.Json.Serialization.JsonPropertyName("province")]
public string? Province { get; set; }
/// <summary>
/// 获取或设置城市。
/// </summary>
[Newtonsoft.Json.JsonProperty("city")]
[System.Text.Json.Serialization.JsonPropertyName("city")]
public string? City { get; set; }
/// <summary>
/// 获取或设置区县。
/// </summary>
[Newtonsoft.Json.JsonProperty("town")]
[System.Text.Json.Serialization.JsonPropertyName("town")]
public string? District { get; set; }
/// <summary>
/// 获取或设置详细地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("detailed_address")]
[System.Text.Json.Serialization.JsonPropertyName("detailed_address")]
public string Detail { get; set; } = string.Empty;
/// <summary>
/// 获取或设置联系电话。
/// </summary>
[Newtonsoft.Json.JsonProperty("tel_number")]
[System.Text.Json.Serialization.JsonPropertyName("tel_number")]
public string TeleNumber { get; set; } = string.Empty;
}
}

View File

@ -49,6 +49,42 @@
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsSendDeliverySuccessful { get; set; }
/// <summary>
/// 获取或设置发起一笔订单并支付是否完成。
/// </summary>
[Newtonsoft.Json.JsonProperty("pay_order_success")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("pay_order_success")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsPayOrderFinished { get; set; }
/// <summary>
/// 获取或设置发起一笔订单并支付是否成功。
/// </summary>
[Newtonsoft.Json.JsonProperty("pay_order_finished")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("pay_order_finished")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsPayOrderSuccessful { get; set; }
/// <summary>
/// 获取或设置售后接口调用是否完成。
/// </summary>
[Newtonsoft.Json.JsonProperty("add_aftersale_success")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("add_aftersale_success")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsAddAftersaleFinished { get; set; }
/// <summary>
/// 获取或设置售后接口调用是否成功。
/// </summary>
[Newtonsoft.Json.JsonProperty("add_aftersale_finished")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("add_aftersale_finished")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
public bool IsAddAftersaleSuccessful { get; set; }
/// <summary>
/// 获取或设置发起一笔订单并支付是否完成。
/// </summary>
@ -126,6 +162,13 @@
[System.Text.Json.Serialization.JsonPropertyName("ext_id")]
public int ExtraId { get; set; }
/// <summary>
/// 获取或设置审核项目名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置审核项目状态。
/// </summary>

View File

@ -0,0 +1,12 @@
{
"aftersale_id": "123",
"address_info": {
"receiver_name": "张三",
"detailed_address": "详细收货地址信息",
"tel_number": "收货人手机号码",
"country": "国家,选填",
"province": "省份,选填",
"city": "城市,选填",
"town": "乡镇,选填"
}
}

View File

@ -0,0 +1,21 @@
{
"order_id": 32434234,
"out_order_id": "xxxxx",
"out_aftersale_id": "xxxxxx",
"openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
"type": 1,
"product_info": {
"out_product_id": "234245",
"out_sku_id": "23424",
"product_cnt": 5
},
"orderamt": 123,
"refund_reason": "xxx",
"refund_reason_type": 1,
"media_list": [
{
"type": 1,
"url": "xxx"
}
]
}

View File

@ -0,0 +1,5 @@
{
"out_aftersale_id": "xxx",
"aftersale_id": 123,
"openid": "oTVP50O53a7jgmawAmxKukNlq3XI"
}

View File

@ -0,0 +1,9 @@
{
"status": 2,
"out_order_id": "12345678",
"openid": "abcdef123",
"begin_create_time": 1636300800000,
"end_create_time": 1636300900000,
"offset": 0,
"limit": 10
}

View File

@ -0,0 +1,6 @@
{
"errcode": 0,
"errmsg": "ok",
"after_sales_orders": [],
"has_more": false
}

View File

@ -0,0 +1,4 @@
{
"aftersale_id": 123,
"out_aftersale_id": "aso_123124341"
}

View File

@ -0,0 +1,28 @@
{
"errcode": 0,
"errmsg": "ok",
"after_sales_order": {
"out_aftersale_id": "aso_123124341",
"aftersale_id": 123,
"out_order_id": "order_312312",
"order_id": 456,
"product_info": {
"out_product_id": "123",
"out_sku_id": "12345",
"product_cnt": 1
},
"type": 1,
"return_info": {
"order_return_time": "1628480465",
"delivery_id": "sf",
"waybill_id": "sf12314789",
"delivery_name": "顺丰"
},
"orderamt": 100,
"refund_reason_type": 1,
"refund_reason": "买错码数",
"status": 1,
"create_time": "1628480465",
"update_time": "1628480465"
}
}

View File

@ -0,0 +1,14 @@
{
"out_aftersale_id": "xxxxxx",
"openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
"type": 1,
"orderamt": 123,
"refund_reason": "xxx",
"refund_reason_type": 1,
"media_list": [
{
"type": 1,
"url": "xxx"
}
]
}

View File

@ -0,0 +1,8 @@
{
"aftersale_id": 123,
"refund_desc": "已协商退款",
"certificates": [
"url1",
"url2"
]
}

View File

@ -0,0 +1,8 @@
{
"out_aftersale_id": "xxx",
"aftersale_id": 123,
"openid": "oTVP50O53a7jgmawAmxKukNlq3XI",
"delivery_id": "SF",
"waybill_id": "123456789",
"delivery_name": "顺丰"
}