mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-15 14:04:32 +08:00
feat(wxapi): 新增微信小店换货相关接口
This commit is contained in:
parent
1dd9ebccef
commit
d2948a7e43
@ -107,6 +107,75 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECAftersaleRejectApplyResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/aftersale/acceptexchangereship 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://developers.weixin.qq.com/doc/store/shop/API/aftersale/acceptexchangereship.html ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECAftersaleAcceptExchangeReshipResponse> ExecuteChannelsECAftersaleAcceptExchangeReshipAsync(this WechatApiClient client, Models.ChannelsECAftersaleAcceptExchangeReshipRequest 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, "channels", "ec", "aftersale", "acceptexchangereship")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECAftersaleAcceptExchangeReshipResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/aftersale/rejectexchangereship 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://developers.weixin.qq.com/doc/store/shop/API/aftersale/rejectexchangereship.html ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECAftersaleRejectExchangeReshipResponse> ExecuteChannelsECAftersaleRejectExchangeReshipAsync(this WechatApiClient client, Models.ChannelsECAftersaleRejectExchangeReshipRequest 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, "channels", "ec", "aftersale", "rejectexchangereship")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECAftersaleRejectExchangeReshipResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/aftersale/merchantupdateaftersale 接口。</para>
|
||||
/// <para>
|
||||
/// REF: <br/>
|
||||
/// <![CDATA[ https://developers.weixin.qq.com/doc/store/shop/API/aftersale/merchantupdateaftersale.html ]]>
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECAftersaleMerchantUpdateAftersaleResponse> ExecuteChannelsECAftersaleMerchantUpdateAftersaleAsync(this WechatApiClient client, Models.ChannelsECAftersaleMerchantUpdateAftersaleRequest 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, "channels", "ec", "aftersale", "merchantupdateaftersale")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECAftersaleMerchantUpdateAftersaleResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/aftersale/uploadrefundcertificate 接口。</para>
|
||||
/// <para>
|
||||
|
@ -0,0 +1,29 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/acceptexchangereship 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleAcceptExchangeReshipRequest : WechatApiRequest, IInferable<ChannelsECAftersaleAcceptExchangeReshipRequest, ChannelsECAftersaleAcceptExchangeReshipResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置售后单 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("after_sale_order_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("after_sale_order_id")]
|
||||
public string AftersaleOrderId { 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("waybill_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("waybill_id")]
|
||||
public string WaybillId { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/acceptexchangereship 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleAcceptExchangeReshipResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -217,6 +217,95 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
[System.Text.Json.Serialization.JsonPropertyName("message")]
|
||||
public string? ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
public class ExchangeProductInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
|
||||
public long ProductId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置旧 SKU ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("old_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("old_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
|
||||
public long OldSKUId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置新 SKU ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("new_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("new_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
|
||||
public long NewSKUId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_count")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_count")]
|
||||
public int Count { get; set; }
|
||||
}
|
||||
|
||||
public class ExchangeDeliveryInfo
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Address : ChannelsECOrderGetResponse.Types.Order.Types.OrderDetail.Types.Delivery.Types.Address
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <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("address_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address_info")]
|
||||
public Types.Address? Address { get; set; }
|
||||
}
|
||||
|
||||
public class VirualTeleNumberInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置虚拟号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("virtual_tel_number")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("virtual_tel_number")]
|
||||
public string? VirtualTeleNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置主动兑换的虚拟号码过期时间戳。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("virtual_tel_expire_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("virtual_tel_expire_time")]
|
||||
public long? VirtualTeleNumberExpireTimestamp { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -319,6 +408,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deadline")]
|
||||
public int Deadline { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置换货相关商品信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("exchange_product_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("exchange_product_info")]
|
||||
public Types.ExchangeProductInfo? ExchangeProductInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置换货相关物流信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("exchange_delivery_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("exchange_delivery_info")]
|
||||
public Types.ExchangeDeliveryInfo? ExchangeDeliveryInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置虚拟号码信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("virtual_tel_num_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("virtual_tel_num_info")]
|
||||
public Types.VirualTeleNumberInfo? VirualTeleNumberInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置更新时间戳。
|
||||
/// </summary>
|
||||
|
@ -0,0 +1,59 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/merchantupdateaftersale 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleMerchantUpdateAftersaleRequest : WechatApiRequest, IInferable<ChannelsECAftersaleMerchantUpdateAftersaleRequest, ChannelsECAftersaleMerchantUpdateAftersaleResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置售后单 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("after_sale_order_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("after_sale_order_id")]
|
||||
public string AftersaleOrderId { 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("amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("amount")]
|
||||
public int Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置协商原因类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("update_reason_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("update_reason_type")]
|
||||
public int UpdateReasonType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置协商类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("merchant_update_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("merchant_update_type")]
|
||||
public int MerchantUpdateType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置协商描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("merchant_update_desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("merchant_update_desc")]
|
||||
public string MerchantUpdateDescription { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置协商凭证 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("media_ids")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("media_ids")]
|
||||
public IList<string>? CertificateMediaIdList { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/merchantupdateaftersale 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleMerchantUpdateAftersaleResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/rejectexchangereship 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleRejectExchangeReshipRequest : WechatApiRequest, IInferable<ChannelsECAftersaleRejectExchangeReshipRequest, ChannelsECAftersaleRejectExchangeReshipResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置售后单 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("after_sale_order_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("after_sale_order_id")]
|
||||
public string AftersaleOrderId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置拒绝原因类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reject_reason_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reject_reason_type")]
|
||||
public int RejectReasonType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置拒绝原因。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reject_reason")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reject_reason")]
|
||||
public string? RejectReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置退款凭证 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reject_certificates")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reject_certificates")]
|
||||
public IList<string>? RejectCertificateMediaIdList { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/aftersale/rejectexchangereship 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleRejectExchangeReshipResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"after_sale_order_id": "1768034782998651",
|
||||
"waybill_id": "123",
|
||||
"delivery_id": "YD"
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"after_sale_order_id": "1768034782998651",
|
||||
"type": 1,
|
||||
"amount": 100,
|
||||
"merchant_update_desc": "xxx",
|
||||
"update_reason_type": "123",
|
||||
"merchant_update_type": 6,
|
||||
"media_ids": [
|
||||
"id1",
|
||||
"id2"
|
||||
]
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"after_sale_order_id": "1768715750567651",
|
||||
"reject_reason": "123",
|
||||
"reject_reason_type": 1
|
||||
}
|
Loading…
Reference in New Issue
Block a user