feat(wxapi): 新增视频号本地生活相关接口

This commit is contained in:
Fu Diwei
2024-07-15 18:59:23 +08:00
parent 6c33157d31
commit acd0b44f08
71 changed files with 2618 additions and 38 deletions

View File

@@ -159,11 +159,11 @@
<summary>[展开查看]</summary>
| | 微信 API | 备注 |
| :-: | :----------------: | :--: |
| √ | 视频号小店开放接口 | |
| √ | 视频号助手开放接口 | |
| √ | 接口管理 | |
| | 微信 API | 备注 |
| :-: | :--------: | :--: |
| √ | 视频号小店 | |
| √ | 视频号助手 | |
| √ | 本地生活 | |
</details>

View File

@@ -4,7 +4,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
/// <para>表示 EVENT.channels_ec_order_pay 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_pay.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_pay.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/callback_success.html ]]>
/// </para>
/// </summary>
public class ChannelsECOrderPayEvent : WechatApiEvent

View File

@@ -2,7 +2,10 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
{
/// <summary>
/// <para>表示 EVENT.product_order_status_update 事件的数据。</para>
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/product_order_status_update.html </para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/order/callback/product_order_status_update.html ]]>
/// </para>
/// </summary>
public class ChannelsECProductOrderStatusUpdateEvent : WechatApiEvent
{

View File

@@ -4,7 +4,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
/// <para>表示 EVENT.product_spu_audit 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuAudit.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuAudit.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/callback2.html ]]>
/// </para>
/// </summary>
public class ChannelsECProductSPUAuditEvent : WechatApiEvent

View File

@@ -4,7 +4,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
/// <para>表示 EVENT.product_spu_listing 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuListing.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuListing.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/callback1.html ]]>
/// </para>
/// </summary>
public class ChannelsECProductSPUListingEvent : WechatApiEvent

View File

@@ -2,7 +2,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
{
/// <summary>
/// <para>表示 EVENT.product_spu_update 事件的数据。</para>
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuUpdate.html </para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuUpdate.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/group_purchase_discount_callback.html ]]>
/// </para>
/// </summary>
public class ChannelsECProductSPUUpdateEvent : WechatApiEvent
{

View File

@@ -2,7 +2,10 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
{
/// <summary>
/// <para>表示 EVENT.channels_ec_sharer_change 事件的数据。</para>
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/sharer/bindsharer.html </para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/sharer/bindsharer.html ]]>
/// </para>
/// </summary>
public class ChannelsECSharerChangeEvent : WechatApiEvent
{

View File

@@ -0,0 +1,62 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
{
/// <summary>
/// <para>表示 EVENT.channels_ec_stock_no_enough 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/callback_inventory.html ]]>
/// </para>
/// </summary>
public class ChannelsECStockNoEnoughEvent : WechatApiEvent
{
public static class Types
{
public class StockInfo
{
/// <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)]
[System.Xml.Serialization.XmlElement("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
[System.Xml.Serialization.XmlElement("sku_id")]
public long SKUId { get; set; }
/// <summary>
/// 获取或设置剩余库存数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("remaining_stock_amount")]
[System.Text.Json.Serialization.JsonPropertyName("remaining_stock_amount")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
[System.Xml.Serialization.XmlElement("remaining_stock_amount")]
public int RemainingStockAmount { get; set; }
/// <summary>
/// 获取或设置剩余预存券码数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("remaining_code_amount")]
[System.Text.Json.Serialization.JsonPropertyName("remaining_code_amount")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
[System.Xml.Serialization.XmlElement("remaining_code_amount")]
public int RemainingCodeAmount { get; set; }
}
}
/// <summary>
/// 获取或设置库存信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("channels_ec_stock_no_enough")]
[System.Text.Json.Serialization.JsonPropertyName("channels_ec_stock_no_enough")]
[System.Xml.Serialization.XmlElement("channels_ec_stock_no_enough")]
public Types.StockInfo StockInfo { get; set; } = default!;
}
}

View File

@@ -37,7 +37,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/aftersale/getaftersaleorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/aftersale/getaftersaleorder.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/aftersale/getaftersaleorder.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query_after-sales.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -970,6 +971,53 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECFundsGetBalanceResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/funds/getfundsflowlist 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/funds/getfundsflowlist.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/Fund.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECFundsGetFundsFlowListResponse> ExecuteChannelsECFundsGetFundsFlowListAsync(this WechatApiClient client, Models.ChannelsECFundsGetFundsFlowListRequest 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", "funds", "getfundsflowlist")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECFundsGetFundsFlowListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/funds/getfundsflowdetail 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/funds/getfundsflowdetail.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECFundsGetFundsFlowDetailResponse> ExecuteChannelsECFundsGetFundsFlowDetailAsync(this WechatApiClient client, Models.ChannelsECFundsGetFundsFlowDetailRequest 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", "funds", "getfundsflowdetail")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECFundsGetFundsFlowDetailResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#region ECFunds/BankAccount
/// <summary>
/// <para>异步调用 [POST] /channels/ec/funds/getbankacct 接口。</para>
@@ -2446,7 +2494,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/order/get 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/order/get.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/order/get.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query_coupon.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -2751,7 +2800,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/product/delete 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/delete.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/delete.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/delete.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -2820,7 +2870,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/product/listing 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/listing.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/listing.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/listing.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -2843,7 +2894,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/product/delisting 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/delisting.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/delisting.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/removed.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -2866,7 +2918,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/product/audit/cancel 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/audit_cancel.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/audit_cancel.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/withdraw.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -3053,7 +3106,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
/// <para>异步调用 [POST] /channels/ec/product/stock/update 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/stock_update.html ]]>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/API/product/stock_update.html ]]> <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/modify-stock.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
@@ -3143,6 +3197,123 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
#endregion
#endregion
#region ECProductLocalLife
/// <summary>
/// <para>异步调用 [POST] /channels/ec/product/locallife/list/get 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECProductLocalLifeListGetResponse> ExecuteChannelsECProductLocalLifeListGetAsync(this WechatApiClient client, Models.ChannelsECProductLocalLifeListGetRequest 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", "product", "locallife", "list", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECProductLocalLifeListGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/product/locallife/get 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query_details.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECProductLocalLifeGetResponse> ExecuteChannelsECProductLocalLifeGetAsync(this WechatApiClient client, Models.ChannelsECProductLocalLifeGetRequest 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", "product", "locallife", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECProductLocalLifeGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/product/locallife/add 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/add.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECProductLocalLifeAddResponse> ExecuteChannelsECProductLocalLifeAddAsync(this WechatApiClient client, Models.ChannelsECProductLocalLifeAddRequest 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", "product", "locallife", "add")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECProductLocalLifeAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/product/locallife/update 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/update.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECProductLocalLifeUpdateResponse> ExecuteChannelsECProductLocalLifeUpdateAsync(this WechatApiClient client, Models.ChannelsECProductLocalLifeUpdateRequest 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", "product", "locallife", "update")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECProductLocalLifeUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/product/locallife/auditfree 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/review-free.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECProductLocalLifeAuditFreeResponse> ExecuteChannelsECProductLocalLifeAuditFreeAsync(this WechatApiClient client, Models.ChannelsECProductLocalLifeAuditFreeRequest 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", "product", "locallife", "auditfree")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECProductLocalLifeAuditFreeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region ECQIC
/// <summary>
/// <para>异步调用 [GET] /channels/ec/qic/inspect/config/get 接口。</para>
@@ -3801,6 +3972,150 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
#endregion
#endregion
#region ECVoucher
#region ECVoucher/Bill
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/get_bill_list 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query_voucher.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherGetBillListResponse> ExecuteChannelsECVoucherGetBillListAsync(this WechatApiClient client, Models.ChannelsECVoucherGetBillListRequest 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", "voucher", "get_bill_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherGetBillListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region ECVoucher/Codes
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/codes/upload 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/upload.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherCodesUploadResponse> ExecuteChannelsECVoucherCodesUploadAsync(this WechatApiClient client, Models.ChannelsECVoucherCodesUploadRequest 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", "voucher", "codes", "upload")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherCodesUploadResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/get_list 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/query_discount.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherGetListResponse> ExecuteChannelsECVoucherGetListAsync(this WechatApiClient client, Models.ChannelsECVoucherGetListRequest 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", "voucher", "get_list")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherGetListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/get 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/purchase.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherGetResponse> ExecuteChannelsECVoucherGetAsync(this WechatApiClient client, Models.ChannelsECVoucherGetRequest 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", "voucher", "get")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/consume 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/api.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherConsumeResponse> ExecuteChannelsECVoucherConsumeAsync(this WechatApiClient client, Models.ChannelsECVoucherConsumeRequest 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", "voucher", "consume")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherConsumeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /channels/ec/voucher/revoke 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/doc/channels/locallife/api/discount-cancel.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ChannelsECVoucherRevokeResponse> ExecuteChannelsECVoucherRevokeAsync(this WechatApiClient client, Models.ChannelsECVoucherRevokeRequest 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", "voucher", "revoke")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.ChannelsECVoucherRevokeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region ECWarehouse
/// <summary>
/// <para>异步调用 [POST] /channels/ec/warehouse/create 接口。</para>

View File

@@ -13,6 +13,19 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
public class Product
{
public static class Types
{
public class Voucher
{
/// <summary>
/// 获取或设置团购优惠券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("vourcher_code")]
[System.Text.Json.Serialization.JsonPropertyName("vourcher_code")]
public string VoucherCode { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
@@ -35,6 +48,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("count")]
[System.Text.Json.Serialization.JsonPropertyName("count")]
public int Count { get; set; }
/// <summary>
/// 获取或设置团购优惠券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_list")]
public Types.Voucher[]? VoucherList { get; set; }
}
public class AftersaleDetail
@@ -244,6 +264,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[System.Text.Json.Serialization.JsonPropertyName("refund_resp")]
public Types.RefundResultInfo? RefundResultInfo { get; set; }
/// <summary>
/// 获取或设置生成售后单场景值。
/// </summary>
[Newtonsoft.Json.JsonProperty("gen_scene")]
[System.Text.Json.Serialization.JsonPropertyName("gen_scene")]
public int? GenerateScene { get; set; }
/// <summary>
/// 获取或设置操作剩余时间(单位:秒)。
/// </summary>

View File

@@ -29,21 +29,21 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("level1")]
[System.Text.Json.Serialization.JsonPropertyName("level1")]
public int FirstCategoryId { get; set; }
public long FirstCategoryId { get; set; }
/// <summary>
/// 获取或设置二级类目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("level2")]
[System.Text.Json.Serialization.JsonPropertyName("level2")]
public int SecondCategoryId { get; set; }
public long SecondCategoryId { get; set; }
/// <summary>
/// 获取或设置三级类目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("level3")]
[System.Text.Json.Serialization.JsonPropertyName("level3")]
public int ThirdCategoryId { get; set; }
public long ThirdCategoryId { get; set; }
/// <summary>
/// 获取或设置资质材料图片 MediaId 列表。

View File

@@ -25,7 +25,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
/// <summary>
/// 获取或设置类目名称。
@@ -40,7 +40,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("f_cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("f_cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int ParentCategoryId { get; set; }
public long ParentCategoryId { get; set; }
/// <summary>
/// 获取或设置类目层级。

View File

@@ -15,7 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int CategoryId { get; set; }
public long longCategoryId { get; set; }
/// <summary>
/// 获取或设置类目名称。

View File

@@ -10,6 +10,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
}
}

View File

@@ -17,7 +17,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
/// <summary>
/// 获取或设置类目名称。

View File

@@ -15,7 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
/// <summary>
/// 获取或设置资质 ID。

View File

@@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/funds/getfundsflowdetail 接口的请求。</para>
/// </summary>
public class ChannelsECFundsGetFundsFlowDetailRequest : WechatApiRequest, IInferable<ChannelsECFundsGetFundsFlowDetailRequest, ChannelsECFundsGetFundsFlowDetailResponse>
{
/// <summary>
/// 获取或设置流水单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("flow_id")]
[System.Text.Json.Serialization.JsonPropertyName("flow_id")]
public string FlowId { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,124 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/funds/getfundsflowdetail 接口的响应。</para>
/// </summary>
public class ChannelsECFundsGetFundsFlowDetailResponse : WechatApiResponse
{
public static class Types
{
public class FundsFlow
{
public static class Types
{
public class RelatedInfo
{
/// <summary>
/// 获取或设置关联类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("related_type")]
[System.Text.Json.Serialization.JsonPropertyName("related_type")]
public int RelatedType { get; set; }
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
public string? OrderId { get; set; }
/// <summary>
/// 获取或设置售后单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("aftersale_id")]
[System.Text.Json.Serialization.JsonPropertyName("aftersale_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
public string? AftersaleOrderId { get; set; }
/// <summary>
/// 获取或设置支付单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_id")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
public string? TransactionId { get; set; }
/// <summary>
/// 获取或设置提现单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("withdraw_id")]
[System.Text.Json.Serialization.JsonPropertyName("withdraw_id")]
public string? WithdrawId { get; set; }
}
}
/// <summary>
/// 获取或设置流水单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("flow_id")]
[System.Text.Json.Serialization.JsonPropertyName("flow_id")]
public string FlowId { get; set; } = default!;
/// <summary>
/// 获取或设置资金类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_type")]
[System.Text.Json.Serialization.JsonPropertyName("funds_type")]
public int FundsType { get; set; }
/// <summary>
/// 获取或设置流水类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("flow_type")]
[System.Text.Json.Serialization.JsonPropertyName("flow_type")]
public int FlowType { get; set; }
/// <summary>
/// 获取或设置流水金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("amount")]
[System.Text.Json.Serialization.JsonPropertyName("amount")]
public int Amount { get; set; }
/// <summary>
/// 获取或设置账户余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance")]
[System.Text.Json.Serialization.JsonPropertyName("balance")]
public int Balance { get; set; }
/// <summary>
/// 获取或设置流水关联信息列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("related_info_list")]
[System.Text.Json.Serialization.JsonPropertyName("related_info_list")]
public Types.RelatedInfo[] RelatedInfoList { get; set; } = default!;
/// <summary>
/// 获取或设置备注。
/// </summary>
[Newtonsoft.Json.JsonProperty("remark")]
[System.Text.Json.Serialization.JsonPropertyName("remark")]
public string? Remark { get; set; }
/// <summary>
/// 获取或设置记账时间。
/// </summary>
[Newtonsoft.Json.JsonProperty("bookkeeping_time")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.BasicDateTimeOffsetConverter))]
[System.Text.Json.Serialization.JsonPropertyName("bookkeeping_time")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.BasicDateTimeOffsetConverter))]
public DateTimeOffset BookkeepingTIme { get; set; }
}
}
/// <summary>
/// 获取或设置流水单信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("funds_flow")]
[System.Text.Json.Serialization.JsonPropertyName("funds_flow")]
public Types.FundsFlow FundsFlow { get; set; } = default!;
}
}

View File

@@ -0,0 +1,51 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/funds/getfundsflowlist 接口的请求。</para>
/// </summary>
public class ChannelsECFundsGetFundsFlowListRequest : WechatApiRequest, IInferable<ChannelsECFundsGetFundsFlowListRequest, ChannelsECFundsGetFundsFlowListResponse>
{
/// <summary>
/// 获取或设置微信支付单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_id")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_id")]
public string? TransactionId { get; set; }
/// <summary>
/// 获取或设置流水产生的开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("start_time")]
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
public long? StartTimestamp { get; set; }
/// <summary>
/// 获取或设置流水产生的结束时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long EndTimestamp { get; set; }
/// <summary>
/// 获取或设置分页页数。
/// </summary>
[Newtonsoft.Json.JsonProperty("page")]
[System.Text.Json.Serialization.JsonPropertyName("page")]
public int? Page { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_key")]
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
public string? Cursor { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/funds/getfundsflowlist 接口的响应。</para>
/// </summary>
public class ChannelsECFundsGetFundsFlowListResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置流水单号列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("flow_ids")]
[System.Text.Json.Serialization.JsonPropertyName("flow_ids")]
public string[] FlowIdList { get; set; } = default!;
/// <summary>
/// 获取或设置是否还有更多。
/// </summary>
[Newtonsoft.Json.JsonProperty("has_more")]
[System.Text.Json.Serialization.JsonPropertyName("has_more")]
public bool HasMore { get; set; }
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_key")]
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
public string? NextCursor { get; set; }
}
}

View File

@@ -68,6 +68,37 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[System.Text.Json.Serialization.JsonPropertyName("user_coupon_id")]
public string? UserCouponId { get; set; }
}
public class Voucher
{
/// <summary>
/// 获取或设置团购优惠券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_code")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_code")]
public string VoucherCode { get; set; } = default!;
/// <summary>
/// 获取或设置团购优惠券类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_type")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_type")]
public int VoucherType { get; set; }
/// <summary>
/// 获取或设置团购优惠券价格(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_buy_amount")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_buy_amount")]
public int VoucherBuyAmount { get; set; }
/// <summary>
/// 获取或设置次卡序号标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("time_index")]
[System.Text.Json.Serialization.JsonPropertyName("time_index")]
public int? TimeIndex { get; set; }
}
}
/// <summary>
@@ -239,6 +270,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("delivery_deadline")]
[System.Text.Json.Serialization.JsonPropertyName("delivery_deadline")]
public long? DeliveryDeadlineTimestamp { get; set; }
/// <summary>
/// 获取或设置团购优惠列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_list")]
public Types.Voucher[]? VoucherList { get; set; }
}
public class Payment

View File

@@ -34,7 +34,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
}
public class Attribute
@@ -398,7 +398,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
public string? ApuCode { get; set; }
public string? SpuCode { get; set; }
/// <summary>
/// 获取或设置品牌 ID。

View File

@@ -36,7 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
[Newtonsoft.Json.JsonProperty("cat_id")]
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int CategoryId { get; set; }
public long CategoryId { get; set; }
}
public class Attribute
@@ -425,7 +425,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
public string? ApuCode { get; set; }
public string? SpuCode { get; set; }
/// <summary>
/// 获取或设置品牌 ID。

View File

@@ -183,7 +183,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("spu_code")]
[System.Text.Json.Serialization.JsonPropertyName("spu_code")]
public string? ApuCode { get; set; }
public string? SpuCode { get; set; }
/// <summary>
/// 获取或设置品牌 ID。

View File

@@ -0,0 +1,135 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/add 接口的请求。</para>
/// </summary>
public class ChannelsECProductLocalLifeAddRequest : WechatApiRequest, IInferable<ChannelsECProductLocalLifeAddRequest, ChannelsECProductLocalLifeAddResponse>
{
public static class Types
{
public class Qualification : ChannelsECProductAddRequest.Types.Qualification
{
}
public class MiniProgramPage
{
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string PagePath { get; set; } = string.Empty;
}
public class SKU
{
/// <summary>
/// 获取或设置售价(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("sale_price")]
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
public int SalePrice { get; set; }
/// <summary>
/// 获取或设置属性字典。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_attr_map")]
[System.Text.Json.Serialization.JsonPropertyName("sku_attr_map")]
public IDictionary<string, string>? AttributeKeyValueMap { get; set; }
}
}
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_product_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置券类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_type")]
[System.Text.Json.Serialization.JsonPropertyName("product_type")]
public int ProductType { get; set; }
/// <summary>
/// 获取或设置名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_name")]
[System.Text.Json.Serialization.JsonPropertyName("product_name")]
public string ProductName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商品三级类目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("category_id")]
[System.Text.Json.Serialization.JsonPropertyName("category_id")]
public long ThirdCategoryId { get; set; }
/// <summary>
/// 获取或设置品牌 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("brand_id")]
[System.Text.Json.Serialization.JsonPropertyName("brand_id")]
public long BrandId { get; set; }
/// <summary>
/// 获取或设置主图 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("head_imgs")]
[System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
public IList<string> HeadImageUrlList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置商品资质列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_qua_infos")]
[System.Text.Json.Serialization.JsonPropertyName("product_qua_infos")]
public IList<Types.Qualification>? ProductQualificationList { get; set; }
/// <summary>
/// 获取或设置核销跳转出口小程序页面信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_page")]
[System.Text.Json.Serialization.JsonPropertyName("verify_page")]
public Types.MiniProgramPage? VerifyPage { get; set; }
/// <summary>
/// 获取或设置到店核销类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_at_store")]
[System.Text.Json.Serialization.JsonPropertyName("verify_at_store")]
public int? VerifyAtStoreType { get; set; }
/// <summary>
/// 获取或设置券码来源类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("code_source_type")]
[System.Text.Json.Serialization.JsonPropertyName("code_source_type")]
public int CodeSourceType { get; set; }
/// <summary>
/// 获取或设置商品属性字典。
/// </summary>
[Newtonsoft.Json.JsonProperty("attr_kv_map")]
[System.Text.Json.Serialization.JsonPropertyName("attr_kv_map")]
public IDictionary<string, string> AttributeKeyValueMap { get; set; } = new Dictionary<string, string>();
/// <summary>
/// 获取或设置 SKU 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("skus")]
[System.Text.Json.Serialization.JsonPropertyName("skus")]
public IList<Types.SKU> SKUList { get; set; } = new List<Types.SKU>();
}
}

View File

@@ -0,0 +1,37 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/add 接口的响应。</para>
/// </summary>
public class ChannelsECProductLocalLifeAddResponse : WechatApiResponse
{
public static class Types
{
public class Data
{
/// <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("sku_ids")]
[System.Text.Json.Serialization.JsonPropertyName("sku_ids")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long[] SKUIdList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置返回数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.Data Data { get; set; } = default!;
}
}

View File

@@ -0,0 +1,44 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/auditfree 接口的请求。</para>
/// </summary>
public class ChannelsECProductLocalLifeAuditFreeRequest : WechatApiRequest, IInferable<ChannelsECProductLocalLifeAuditFreeRequest, ChannelsECProductLocalLifeAuditFreeResponse>
{
public static class Types
{
public class SKU
{
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long SKUId { get; set; }
/// <summary>
/// 获取或设置售价(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("sale_price")]
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
public int SalePrice { get; set; }
}
}
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置 SKU 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("skus")]
[System.Text.Json.Serialization.JsonPropertyName("skus")]
public IList<Types.SKU> SKUList { get; set; } = new List<Types.SKU>();
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/auditfree 接口的响应。</para>
/// </summary>
public class ChannelsECProductLocalLifeAuditFreeResponse : WechatApiResponse
{
}
}

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/get 接口的请求。</para>
/// </summary>
public class ChannelsECProductLocalLifeGetRequest : WechatApiRequest, IInferable<ChannelsECProductLocalLifeGetRequest, ChannelsECProductLocalLifeGetResponse>
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置数据类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("data_type")]
[System.Text.Json.Serialization.JsonPropertyName("data_type")]
public int? DataType { get; set; }
}
}

View File

@@ -0,0 +1,233 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/get 接口的响应。</para>
/// </summary>
public class ChannelsECProductLocalLifeGetResponse : WechatApiResponse
{
public static class Types
{
public class Product
{
public static class Types
{
public class Qualification : ChannelsECProductGetResponse.Types.Product.Types.Qualification
{
/// <summary>
/// 获取或设置资质 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("qua_id")]
[System.Text.Json.Serialization.JsonPropertyName("qua_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long QualificationId { get; set; }
/// <summary>
/// 获取或设置资质图片 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("qua_url")]
[System.Text.Json.Serialization.JsonPropertyName("qua_url")]
public string[] PictureUrlList { get; set; } = default!;
}
public class MiniProgramPage
{
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string PagePath { get; set; } = default!;
}
public class AuditResult
{
/// <summary>
/// 获取或设置审核状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("audit_status")]
[System.Text.Json.Serialization.JsonPropertyName("audit_status")]
public int AuditStatus { get; set; }
/// <summary>
/// 获取或设置失败原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("audit_reason")]
[System.Text.Json.Serialization.JsonPropertyName("audit_reason")]
public string? RejectReason { get; set; }
}
public class SKU
{
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long SKUId { get; set; }
/// <summary>
/// 获取或设置售价(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("sale_price")]
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
public int SalePrice { get; set; }
/// <summary>
/// 获取或设置库存。
/// </summary>
[Newtonsoft.Json.JsonProperty("stock_num")]
[System.Text.Json.Serialization.JsonPropertyName("stock_num")]
public int Stock { get; set; }
/// <summary>
/// 获取或设置属性字典。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_attr_map")]
[System.Text.Json.Serialization.JsonPropertyName("sku_attr_map")]
public IDictionary<string, string>? AttributeKeyValueMap { get; set; }
}
}
/// <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>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_product_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置券类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_type")]
[System.Text.Json.Serialization.JsonPropertyName("product_type")]
public int ProductType { get; set; }
/// <summary>
/// 获取或设置名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_name")]
[System.Text.Json.Serialization.JsonPropertyName("product_name")]
public string ProductName { get; set; } = default!;
/// <summary>
/// 获取或设置主图 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("head_imgs")]
[System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
public string[] HeadImageUrlList { get; set; } = default!;
/// <summary>
/// 获取或设置商品三级类目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("category_id")]
[System.Text.Json.Serialization.JsonPropertyName("category_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long ThirdCategoryId { get; set; }
/// <summary>
/// 获取或设置品牌 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("brand_id")]
[System.Text.Json.Serialization.JsonPropertyName("brand_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long BrandId { get; set; }
/// <summary>
/// 获取或设置商品上线状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("online_status")]
[System.Text.Json.Serialization.JsonPropertyName("online_status")]
public int OnlineStatus { get; set; }
/// <summary>
/// 获取或设置商品草稿状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("draft_status")]
[System.Text.Json.Serialization.JsonPropertyName("draft_status")]
public int DraftStatus { get; set; }
/// <summary>
/// 获取或设置商品资质列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_qua_infos")]
[System.Text.Json.Serialization.JsonPropertyName("product_qua_infos")]
public Types.Qualification[]? QualificationList { get; set; }
/// <summary>
/// 获取或设置核销跳转出口小程序页面信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_page")]
[System.Text.Json.Serialization.JsonPropertyName("verify_page")]
public Types.MiniProgramPage? VerifyPage { get; set; }
/// <summary>
/// 获取或设置到店核销类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_at_store")]
[System.Text.Json.Serialization.JsonPropertyName("verify_at_store")]
public int? VerifyAtStoreType { get; set; }
/// <summary>
/// 获取或设置券码来源类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("code_source_type")]
[System.Text.Json.Serialization.JsonPropertyName("code_source_type")]
public int CodeSourceType { get; set; }
/// <summary>
/// 获取或设置商品属性字典。
/// </summary>
[Newtonsoft.Json.JsonProperty("attr_kv_map")]
[System.Text.Json.Serialization.JsonPropertyName("attr_kv_map")]
public IDictionary<string, string> AttributeKeyValueMap { get; set; } = default!;
/// <summary>
/// 获取或设置审核结果信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("audit_result")]
[System.Text.Json.Serialization.JsonPropertyName("audit_result")]
public Types.AuditResult? AuditResult { get; set; }
/// <summary>
/// 获取或设置 SKU 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("skus")]
[System.Text.Json.Serialization.JsonPropertyName("skus")]
public Types.SKU[] SKUList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置线上商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("online_data")]
[System.Text.Json.Serialization.JsonPropertyName("online_data")]
public Types.Product? OnlineProduct { get; set; }
/// <summary>
/// 获取或设置草稿商品信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("draft_data")]
[System.Text.Json.Serialization.JsonPropertyName("draft_data")]
public Types.Product? DraftProduct { get; set; }
}
}

View File

@@ -0,0 +1,30 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/list/get 接口的请求。</para>
/// </summary>
public class ChannelsECProductLocalLifeListGetRequest : WechatApiRequest, IInferable<ChannelsECProductLocalLifeListGetRequest, ChannelsECProductLocalLifeListGetResponse>
{
/// <summary>
/// 获取或设置商品状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int? Status { get; set; }
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_key")]
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
public string? Cursor { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
}
}

View File

@@ -0,0 +1,30 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/list/get 接口的响应。</para>
/// </summary>
public class ChannelsECProductLocalLifeListGetResponse : WechatApiResponse
{
/// <summary>
/// 获取或设置商品 ID 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_ids")]
[System.Text.Json.Serialization.JsonPropertyName("product_ids")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long[] ProductIdList { get; set; } = default!;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_key")]
[System.Text.Json.Serialization.JsonPropertyName("next_key")]
public string? NextCursor { get; set; }
/// <summary>
/// 获取或设置总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_num")]
[System.Text.Json.Serialization.JsonPropertyName("total_num")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,122 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/product/locallife/update 接口的请求。</para>
/// </summary>
public class ChannelsECProductLocalLifeUpdateRequest : WechatApiRequest, IInferable<ChannelsECProductLocalLifeUpdateRequest, ChannelsECProductLocalLifeUpdateResponse>
{
public static class Types
{
public class Qualification : ChannelsECProductLocalLifeAddRequest.Types.Qualification
{
}
public class MiniProgramPage : ChannelsECProductLocalLifeAddRequest.Types.MiniProgramPage
{
}
public class SKU : ChannelsECProductLocalLifeAddRequest.Types.SKU
{
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long SKUId { get; set; }
}
}
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_product_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_product_id")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置券类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_type")]
[System.Text.Json.Serialization.JsonPropertyName("product_type")]
public int ProductType { get; set; }
/// <summary>
/// 获取或设置名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_name")]
[System.Text.Json.Serialization.JsonPropertyName("product_name")]
public string ProductName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商品三级类目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("category_id")]
[System.Text.Json.Serialization.JsonPropertyName("category_id")]
public long ThirdCategoryId { get; set; }
/// <summary>
/// 获取或设置品牌 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("brand_id")]
[System.Text.Json.Serialization.JsonPropertyName("brand_id")]
public long BrandId { get; set; }
/// <summary>
/// 获取或设置主图 URL 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("head_imgs")]
[System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
public IList<string> HeadImageUrlList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置商品资质列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_qua_infos")]
[System.Text.Json.Serialization.JsonPropertyName("product_qua_infos")]
public IList<Types.Qualification>? ProductQualificationList { get; set; }
/// <summary>
/// 获取或设置核销跳转出口小程序页面信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_page")]
[System.Text.Json.Serialization.JsonPropertyName("verify_page")]
public Types.MiniProgramPage? VerifyPage { get; set; }
/// <summary>
/// 获取或设置到店核销类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("verify_at_store")]
[System.Text.Json.Serialization.JsonPropertyName("verify_at_store")]
public int? VerifyAtStoreType { get; set; }
/// <summary>
/// 获取或设置券码来源类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("code_source_type")]
[System.Text.Json.Serialization.JsonPropertyName("code_source_type")]
public int CodeSourceType { get; set; }
/// <summary>
/// 获取或设置商品属性字典。
/// </summary>
[Newtonsoft.Json.JsonProperty("attr_kv_map")]
[System.Text.Json.Serialization.JsonPropertyName("attr_kv_map")]
public IDictionary<string, string> AttributeKeyValueMap { get; set; } = new Dictionary<string, string>();
/// <summary>
/// 获取或设置 SKU 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("skus")]
[System.Text.Json.Serialization.JsonPropertyName("skus")]
public IList<Types.SKU> SKUList { get; set; } = new List<Types.SKU>();
}
}

View File

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

View File

@@ -0,0 +1,37 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get_bill_list 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherGetBillListRequest : WechatApiRequest, IInferable<ChannelsECVoucherGetBillListRequest, ChannelsECVoucherGetBillListResponse>
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置账单日期字符串格式yyyy-MM-dd
/// </summary>
[Newtonsoft.Json.JsonProperty("bill_date")]
[System.Text.Json.Serialization.JsonPropertyName("bill_date")]
public string BillDateString { get; set; } = string.Empty;
/// <summary>
/// 获取或设置分页每页数量。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_ctx")]
[System.Text.Json.Serialization.JsonPropertyName("page_ctx")]
public string? Cursor { get; set; }
}
}

View File

@@ -0,0 +1,141 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get_bill_list 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherGetBillListResponse : WechatApiResponse
{
public static class Types
{
public class VoucherBill
{
/// <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>
/// 获取或设置券名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_name")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_name")]
public string VoucherName { get; set; } = default!;
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string VoucherCode { get; set; } = default!;
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置券售卖价格(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_buy_amount")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_buy_amount")]
public int VoucherBuyAmount { get; set; }
/// <summary>
/// 获取或设置用户支付金额金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_pay_amount")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_pay_amount")]
public int VoucherPayAmount { get; set; }
/// <summary>
/// 获取或设置商家优惠减价金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("mch_favor_amount")]
[System.Text.Json.Serialization.JsonPropertyName("mch_favor_amount")]
public int MerchantFavorAmount { get; set; }
/// <summary>
/// 获取或设置平台优惠减价金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("platform_favor_amount")]
[System.Text.Json.Serialization.JsonPropertyName("platform_favor_amount")]
public int PlatformFavorAmount { get; set; }
/// <summary>
/// 获取或设置商家已结算金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("mch_settle_amount")]
[System.Text.Json.Serialization.JsonPropertyName("mch_settle_amount")]
public int MerchantSettleAmount { get; set; }
/// <summary>
/// 获取或设置达人已结算金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("finder_settle_amount")]
[System.Text.Json.Serialization.JsonPropertyName("finder_settle_amount")]
public int FinderSettleAmount { get; set; }
/// <summary>
/// 获取或设置购买时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_buy_time")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_buy_time")]
public long BuyTimestamp { get; set; }
/// <summary>
/// 获取或设置核销时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_time")]
[System.Text.Json.Serialization.JsonPropertyName("consume_time")]
public long ConsumeTimestamp { get; set; }
/// <summary>
/// 获取或设置核销门店名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_store_name")]
[System.Text.Json.Serialization.JsonPropertyName("consume_store_name")]
public string? ConsumeStoreName { get; set; }
/// <summary>
/// 获取或设置核销门店外部 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_store_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_store_id")]
public string? OutStoreId { get; set; }
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string? OrderId { get; set; }
/// <summary>
/// 获取或设置次卡序号标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("time_index")]
[System.Text.Json.Serialization.JsonPropertyName("time_index")]
public int? TimeIndex { get; set; }
}
}
/// <summary>
/// 获取或设置团购优惠券账单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("bill_list")]
[System.Text.Json.Serialization.JsonPropertyName("bill_list")]
public Types.VoucherBill[] VoucherBillList { get; set; } = default!;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_ctx")]
[System.Text.Json.Serialization.JsonPropertyName("page_ctx")]
public string? NextCursor { get; set; }
}
}

View File

@@ -0,0 +1,59 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/consume 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherConsumeRequest : WechatApiRequest, IInferable<ChannelsECVoucherConsumeRequest, ChannelsECVoucherConsumeResponse>
{
/// <summary>
/// 获取或设置商户核销单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("consume_request_no")]
public string ConsumeRequestNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置核销门店名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_store_name")]
[System.Text.Json.Serialization.JsonPropertyName("consume_store_name")]
public string? ConsumeStoreName { get; set; }
/// <summary>
/// 获取或设置核销渠道。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_channel")]
[System.Text.Json.Serialization.JsonPropertyName("consume_channel")]
public int? ConsumeChannel { get; set; }
/// <summary>
/// 获取或设置核销门店外部 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_store_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_store_id")]
public string? OutStoreId { get; set; }
/// <summary>
/// 获取或设置加密的券码列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("encrypted_codes")]
[System.Text.Json.Serialization.JsonPropertyName("encrypted_codes")]
public IList<string>? EncryptedCodeList { get; set; }
/// <summary>
/// 获取或设置券码列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("codes")]
[System.Text.Json.Serialization.JsonPropertyName("codes")]
public IList<string>? CodeList { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long? SKUId { get; set; }
}
}

View File

@@ -0,0 +1,67 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/consume 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherConsumeResponse : WechatApiResponse
{
public static class Types
{
public class Voucher : ChannelsECVoucherGetListResponse.Types.Voucher
{
}
public class FailedVoucher
{
/// <summary>
/// 获取或设置加密的券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("encrypted_code")]
[System.Text.Json.Serialization.JsonPropertyName("encrypted_code")]
public string? EncryptedCode { get; set; }
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long? SKUId { get; set; }
/// <summary>
/// 获取或设置操作结果。
/// </summary>
[Newtonsoft.Json.JsonProperty("ret_code")]
[System.Text.Json.Serialization.JsonPropertyName("ret_code")]
public int ReturnCode { get; set; }
/// <summary>
/// 获取或设置操作结果说明。
/// </summary>
[Newtonsoft.Json.JsonProperty("ret_msg")]
[System.Text.Json.Serialization.JsonPropertyName("ret_msg")]
public string? ReturnMessage { get; set; }
}
}
/// <summary>
/// 获取或设置团购优惠券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_list")]
public Types.Voucher[]? VoucherList { get; set; }
/// <summary>
/// 获取或设置核销失败的券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("fail_voucher_list")]
public Types.FailedVoucher[]? FailedVoucherList { get; set; }
}
}

View File

@@ -0,0 +1,37 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get_list 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherGetListRequest : WechatApiRequest, IInferable<ChannelsECVoucherGetListRequest, ChannelsECVoucherGetListResponse>
{
/// <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("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int? VoucherStatus { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// <para>默认值10</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("page_size")]
[System.Text.Json.Serialization.JsonPropertyName("page_size")]
public int Limit { get; set; } = 10;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_ctx")]
[System.Text.Json.Serialization.JsonPropertyName("page_ctx")]
public string? Cursor { get; set; }
}
}

View File

@@ -0,0 +1,205 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get_list 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherGetListResponse : WechatApiResponse
{
public static class Types
{
public class Voucher
{
/// <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("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long SKUId { get; set; }
/// <summary>
/// 获取或设置券类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_type")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_type")]
public int VoucherType { get; set; }
/// <summary>
/// 获取或设置券售卖价格(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_buy_amount")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_buy_amount")]
public int VoucherBuyAmount { get; set; }
/// <summary>
/// 获取或设置券市场金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_actual_amount")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_actual_amount")]
public int VoucherActualAmount { get; set; }
/// <summary>
/// 获取或设置券码类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("code_type")]
[System.Text.Json.Serialization.JsonPropertyName("code_type")]
public int CodeType { get; set; }
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string Code { get; set; } = default!;
/// <summary>
/// 获取或设置券状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public int Status { get; set; }
/// <summary>
/// 获取或设置创建时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
/// <summary>
/// 获取或设置更新时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("update_time")]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
public long UpdateTimestamp { get; set; }
/// <summary>
/// 获取或设置发放时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("send_time")]
[System.Text.Json.Serialization.JsonPropertyName("send_time")]
public long SendTimestamp { get; set; }
/// <summary>
/// 获取或设置有效期开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("start_time")]
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
public long StartTimestamp { get; set; }
/// <summary>
/// 获取或设置有效期结束时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long EndTimestamp { get; set; }
/// <summary>
/// 获取或设置核销时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_time")]
[System.Text.Json.Serialization.JsonPropertyName("consume_time")]
public long? ConsumeTimestamp { get; set; }
/// <summary>
/// 获取或设置核销门店名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_store_name")]
[System.Text.Json.Serialization.JsonPropertyName("consume_store_name")]
public string? ConsumeStoreName { get; set; }
/// <summary>
/// 获取或设置核销门店外部 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_store_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_store_id")]
public string? OutStoreId { get; set; }
/// <summary>
/// 获取或设置退款时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("refund_time")]
[System.Text.Json.Serialization.JsonPropertyName("refund_time")]
public long? RefundTimestamp { get; set; }
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置用户的 UnionId。
/// </summary>
[Newtonsoft.Json.JsonProperty("union_id")]
[System.Text.Json.Serialization.JsonPropertyName("union_id")]
public string? UnionId { get; set; }
/// <summary>
/// 获取或设置用户的手机号码。
/// </summary>
[Newtonsoft.Json.JsonProperty("telphone_no")]
[System.Text.Json.Serialization.JsonPropertyName("telphone_no")]
public string? TelephoneNumber { get; set; }
/// <summary>
/// 获取或设置订单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string? OrderId { get; set; }
/// <summary>
/// 获取或设置结算状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_settle_status")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_settle_status")]
public int? VoucherSettleStatus { get; set; }
/// <summary>
/// 获取或设置最后一次成功发起核销的核销单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("last_consume_no")]
[System.Text.Json.Serialization.JsonPropertyName("last_consume_no")]
public string? LastConsumeNumber { get; set; }
/// <summary>
/// 获取或设置最后一次成功发起撤销核销的撤销核销单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("last_withdraw_consume_no")]
[System.Text.Json.Serialization.JsonPropertyName("last_withdraw_consume_no")]
public string? LastWithdrawConsumeNumber { get; set; }
}
}
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置团购优惠券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_list")]
public Types.Voucher[] VoucherList { get; set; } = default!;
/// <summary>
/// 获取或设置翻页标记。
/// </summary>
[Newtonsoft.Json.JsonProperty("page_ctx")]
[System.Text.Json.Serialization.JsonPropertyName("page_ctx")]
public string? NextCursor { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherGetRequest : WechatApiRequest, IInferable<ChannelsECVoucherGetRequest, ChannelsECVoucherGetResponse>
{
/// <summary>
/// 获取或设置加密的券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("encrypted_code")]
[System.Text.Json.Serialization.JsonPropertyName("encrypted_code")]
public string? EncryptedCode { get; set; }
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long? SKUId { get; set; }
}
}

View File

@@ -0,0 +1,62 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/get 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherGetResponse : WechatApiResponse
{
public static class Types
{
public class Voucher : ChannelsECVoucherGetListResponse.Types.Voucher
{
public static class Types
{
public class TimeCard
{
/// <summary>
/// 获取或设置可用总次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置剩余可用次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("available_count")]
[System.Text.Json.Serialization.JsonPropertyName("available_count")]
public int AvailableCount { get; set; }
/// <summary>
/// 获取或设置已核销次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("consumed_count")]
[System.Text.Json.Serialization.JsonPropertyName("consumed_count")]
public int ConsumedCount { get; set; }
/// <summary>
/// 获取或设置已退券次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("refunded_count")]
[System.Text.Json.Serialization.JsonPropertyName("refunded_count")]
public int RefundedCount { get; set; }
}
}
/// <summary>
/// 获取或设置次卡信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("time_card")]
[System.Text.Json.Serialization.JsonPropertyName("time_card")]
public Types.TimeCard? TimeCard { get; set; }
}
}
/// <summary>
/// 获取或设置团购优惠券信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher")]
[System.Text.Json.Serialization.JsonPropertyName("voucher")]
public Types.Voucher Voucher { get; set; } = default!;
}
}

View File

@@ -0,0 +1,58 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/revoke 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherRevokeRequest : WechatApiRequest, IInferable<ChannelsECVoucherRevokeRequest, ChannelsECVoucherRevokeResponse>
{
public static class Types
{
public class RevokeVoucher
{
/// <summary>
/// 获取或设置加密的券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("encrypted_code")]
[System.Text.Json.Serialization.JsonPropertyName("encrypted_code")]
public string? EncryptedCode { get; set; }
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long? SKUId { get; set; }
}
}
/// <summary>
/// 获取或设置商户撤销单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("revoke_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("revoke_request_no")]
public string RevokeRequestNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户核销单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("consume_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("consume_request_no")]
public string? ConsumeRequestNumber { get; set; }
/// <summary>
/// 获取或设置撤销券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("reovke_vouchers")]
[System.Text.Json.Serialization.JsonPropertyName("reovke_vouchers")]
public IList<Types.RevokeVoucher> RevokeVoucherList { get; set; } = new List<Types.RevokeVoucher>();
}
}

View File

@@ -0,0 +1,33 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/revoke 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherRevokeResponse : WechatApiResponse
{
public static class Types
{
public class Voucher : ChannelsECVoucherConsumeResponse.Types.Voucher
{
}
public class FailedVoucher : ChannelsECVoucherConsumeResponse.Types.FailedVoucher
{
}
}
/// <summary>
/// 获取或设置团购优惠券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("voucher_list")]
public Types.Voucher[]? VoucherList { get; set; }
/// <summary>
/// 获取或设置核销失败的券列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_voucher_list")]
[System.Text.Json.Serialization.JsonPropertyName("fail_voucher_list")]
public Types.FailedVoucher[]? FailedVoucherList { get; set; }
}
}

View File

@@ -0,0 +1,31 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/codes/upload 接口的请求。</para>
/// </summary>
public class ChannelsECVoucherCodesUploadRequest : WechatApiRequest, IInferable<ChannelsECVoucherCodesUploadRequest, ChannelsECVoucherCodesUploadResponse>
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置 SKU ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sku_id")]
[System.Text.Json.Serialization.JsonPropertyName("sku_id")]
public long SKUId { get; set; }
/// <summary>
/// 获取或设置券码列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("codes")]
[System.Text.Json.Serialization.JsonPropertyName("codes")]
public IList<string> CodeList { get; set; } = new List<string>();
}
}

View File

@@ -0,0 +1,78 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/voucher/codes/upload 接口的响应。</para>
/// </summary>
public class ChannelsECVoucherCodesUploadResponse : WechatApiResponse
{
public static class Types
{
public class FailedCode
{
/// <summary>
/// 获取或设置券码。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string Code { get; set; } = default!;
/// <summary>
/// 获取或设置错误码。
/// </summary>
[Newtonsoft.Json.JsonProperty("errcode")]
[System.Text.Json.Serialization.JsonPropertyName("errcode")]
public int ErrorCode { get; set; }
/// <summary>
/// 获取或设置错误信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("errmsg")]
[System.Text.Json.Serialization.JsonPropertyName("errmsg")]
public string? ErrorMessage { get; set; }
}
}
/// <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>
/// 获取或设置上传总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
/// <summary>
/// 获取或设置上传成功的券码列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_codes")]
[System.Text.Json.Serialization.JsonPropertyName("success_codes")]
public string[]? SucceededCodeList { get; set; }
/// <summary>
/// 获取或设置上传成功的数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("success_count")]
[System.Text.Json.Serialization.JsonPropertyName("success_count")]
public int SucceededCount { get; set; }
/// <summary>
/// 获取或设置上传失败的券码列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_codes")]
[System.Text.Json.Serialization.JsonPropertyName("fail_codes")]
public Types.FailedCode[]? FailedCodeList { get; set; }
/// <summary>
/// 获取或设置上传失败的数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("fail_count")]
[System.Text.Json.Serialization.JsonPropertyName("fail_count")]
public int FailedCount { get; set; }
}
}

View File

@@ -1,4 +1,4 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /channels/ec/window/product/get 接口的响应。</para>
@@ -51,7 +51,7 @@
[Newtonsoft.Json.JsonProperty("need_apply_category_id")]
[System.Text.Json.Serialization.JsonPropertyName("need_apply_category_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int? RequiredCategoryId { get; set; } = default!;
public long? RequiredCategoryId { get; set; } = default!;
/// <summary>
/// 获取或设置需要申请的类目名称。
@@ -160,7 +160,7 @@
[Newtonsoft.Json.JsonProperty("third_category_id")]
[System.Text.Json.Serialization.JsonPropertyName("third_category_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int ThirdCategoryId { get; set; }
public long ThirdCategoryId { get; set; }
/// <summary>
/// 获取或设置商品状态。

View File

@@ -8,7 +8,15 @@
"product_info": {
"product_id": "3286",
"sku_id": "4740",
"count": 1
"count": 1,
"voucher_list": [
{
"vourcher_code": "232323"
},
{
"vourcher_code": "232324"
}
]
},
"details": {
"desc": "1234",
@@ -38,6 +46,7 @@
"ret": 0,
"message": ""
},
"type": "REFUND"
"type": "REFUND",
"gen_scene": 0
}
}

View File

@@ -0,0 +1,23 @@
{
"errcode": 0,
"errmsg": "ok",
"funds_flow": {
"flow_id": "10000057741221110",
"funds_type": 3,
"flow_type": 2,
"amount": 1,
"balance": 28281,
"related_info_list": [
{
"related_type": 2,
"aftersale_id": "1000283382788072",
"transaction_id": "4200001619202211090964182530"
},
{
"related_type": 1,
"order_id": "3707337764590192128",
"transaction_id": "4200001619202211090964182530"
}
]
}
}

View File

@@ -0,0 +1,8 @@
{
"page": 1,
"page_size": 10,
"start_time": 1668008734,
"end_time": 1668008737,
"next_key": "CAAQABgBIhExMDAwMDA0MTU3MzIyMTEwOSiflq+bBg==",
"transaction_id": "4200001619202211090964182530"
}

View File

@@ -0,0 +1,7 @@
{
"errcode": 0,
"errmsg": "ok",
"flow_ids": [ "123243", "123124134" ],
"has_more": true,
"next_key": "CO0GEGQY2vQFIhI1MTAwMDAxNDQ3NDgyMTEwMjEo7rfFiwY="
}

View File

@@ -35,7 +35,14 @@
"extra_service": {
"seven_day_return": 1,
"freight_insurance": 0
}
},
"voucher_list": [
{
"voucher_code": "12345",
"voucher_type": 1,
"voucher_buy_amount": 10000
}
]
}
],
"pay_info": {

View File

@@ -0,0 +1,37 @@
{
"out_product_id": "test_120719261",
"product_type": 1,
"product_name": "测试商品",
"category_id": "545201",
"brand_id": "10010719",
"head_imgs": [
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HPfcDsYrzbTlVSFQI9Qar0uzDhKI-EB7Efryf-dxlUE",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HAOY-e61JPVNI5fsTlOcy-1r_rSxqnAsIUWqXXWNJSE",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HLD6dz9RbUkPzBQGHnpb9Z7BcK9kF1HYeLkwxiK9RtI"
],
"verify_page": {
"appid": "wxca8d4b8e8feedc2a",
"path": "main/channels/buy/buy.html?productId=123"
},
"code_source_type": 1,
"attr_kv_map": {
"use_date_rule": "{\\\"validate_type\\\":1,\\\"use_date\\\":{\\\"use_start_date\\\":\\\"2023-11-29\\\",\\\"use_end_date\\\":\\\"2023-12-31\\\"}\\}",
"use_time": "{\"use_time_type\":2,\"time_periods\":[{\"use_start_time\":\"10:00:00\",\"use_end_time\":\"20:00:00\"}]}",
"detail_imgs": "[\"https://mmecimage.cn/xxxxxxxxxx\",\"https://mmecimage.cn/yyyyyyyyyy\",\"https://mmecimage.cn/zzzzzzzzzz\"]",
"set_meals": "[{\"group_name\": \"套餐名称\", \"items\": [{\"item_count\": 1, \"item_name\": \"项目名称\",\"item_price\": 28800}],\"option_count\": 1}]",
"exclusive_date": "{\"enable\": 0}",
"voucher_amount": "100",
"bring_out_type": "1",
"appointment": "{\"need_appointment\":0}",
"need_phone_num": "0",
"additional_rule": "\"附加规则\"",
"available_store_desc": "\"可用门店描述\"",
"settle_type": "1",
"refund_policy": "1"
},
"skus": [
{
"sale_price": 100
}
]
}

View File

@@ -0,0 +1,10 @@
{
"errcode": 0,
"errmsg": "ok",
"data": {
"product_id": "15000000000000",
"sku_ids": [
"1234567890"
]
}
}

View File

@@ -0,0 +1,9 @@
{
"product_id": "15000000392025",
"skus": [
{
"sku_id": "2022104954",
"sale_price": 90
}
]
}

View File

@@ -0,0 +1,4 @@
{
"product_id": "15000000134007",
"data_type": 2
}

View File

@@ -0,0 +1,43 @@
{
"errcode": 0,
"errmsg": "ok",
"draft_data": {
"product_id": "15000000134007",
"out_product_id": "test1",
"product_type": 1,
"product_name": "测试商品改",
"category_id": "1452",
"brand_id": "2100000000",
"head_imgs": [
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HA7ukhipcfggnDP8l5EqCwX1YsvxMZwAFvoPNqG-IbU",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HO7eONXc8Y9uLHr0q0Rs6UvJ0iC0oAuQD3whJEA5Sc4",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HKBXBm8pze5WcayaDacjfSveBYQIQzKrVaR3zi2tja4"
],
"verify_page": {
"appid": "wxca8d4b8e8feedc2a",
"path": "main/channels/buy/buy.html?productId=123"
},
"code_source_type": 1,
"attr_kv_map": {
"voucher_amount": "222",
"use_date_rule": "{\"validate_type\":1,\"use_date\":{\"use_start_date\":\"2023-11-29\",\"use_end_date\":\"2023-12-15\"}}",
"exclusive_date": "{\"days_of_week\":[]}",
"settle_type": "2",
"need_phone_num": "0",
"bring_out_type": "1",
"refund_policy": "0",
"use_time": "{\"use_time_type\":1,\"time_periods\":[]}"
},
"skus": [
{
"sku_id": "1930992007",
"sale_price": 123,
"stock_num": 21
}
],
"draft_status": 1,
"audit_result": {
"audit_status": 0
}
}
}

View File

@@ -0,0 +1,34 @@
{
"product_id": 15000000134007,
"out_product_id": "test-out_id",
"product_type": 1,
"product_name": "测试商品改",
"category_id": 1452,
"brand_id": 2100000000,
"head_imgs": [
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HA7ukhipcfggnDP8l5EqCwX1YsvxMZwAFvoPNqG-IbU",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HO7eONXc8Y9uLHr0q0Rs6UvJ0iC0oAuQD3whJEA5Sc4",
"https://mmecimage.cn/p/wx2b255582a7b4bfd0/HKBXBm8pze5WcayaDacjfSveBYQIQzKrVaR3zi2tja4"
],
"verify_page": {
"appid": "wxca8d4b8e8feedc2a",
"path": "main/channels/buy/buy.html?productId=123"
},
"code_source_type": 1,
"attr_kv_map": {
"voucher_amount": "222",
"use_date_rule": "{\"validate_type\":1,\"use_date\":{\"use_start_date\":\"2023-11-29\",\"use_end_date\":\"2023-12-15\"}}",
"exclusive_date": "{\"days_of_week\":[]}",
"settle_type": "2",
"need_phone_num": "0",
"bring_out_type": "1",
"refund_policy": "0",
"use_time": "{\"use_time_type\":1,\"time_periods\":[]}"
},
"skus": [
{
"sku_id": 1930992007,
"sale_price": 111
}
]
}

View File

@@ -0,0 +1,6 @@
{
"product_id": "123456",
"bill_date": "2023-12-03",
"page_size": 3,
"page_ctx": ""
}

View File

@@ -0,0 +1,23 @@
{
"errcode": 0,
"errmsg": "成功",
"bill_list": [
{
"voucher_name": "90抵100代金券",
"product_id": "123456",
"code": "123456789",
"order_id": "027828012830384172",
"openid": "asdjeine835k9fjeld93mf",
"voucher_buy_time": 1702016538,
"voucher_buy_amount": 9000,
"voucher_pay_amount": 8500,
"mch_favor_amount": 500,
"platform_favor_amount": 0,
"consume_time": 1702189338,
"consume_store_name": "开心小店",
"mch_settle_amount": 8300,
"finder_settle_amount": 0
}
],
"page_ctx": "dsfajasdlf3434"
}

View File

@@ -0,0 +1,8 @@
{
"consume_request_no": "233244dfgfdfgsdfgsdf",
"encrypted_codes": [ "243234dsfsdf", "24334dfgd", "345453dsf" ],
"codes": [ "232323", "23232323", "32434454545" ],
"sku_id": "12345",
"consume_store_name": "xxx旗舰店",
"consume_channel": 2
}

View File

@@ -0,0 +1,35 @@
{
"errcode": 0,
"errmsg": "成功",
"voucher_list": [
{
"code": "232323",
"status": 2,
"send_time": 1699856182,
"update_time": 1699856182,
"start_time": 1699856182,
"end_time": 1699856182,
"consume_time": 1699856182,
"refund_time": 1699856182,
"product_id": "12345",
"consume_store_name": "xxx旗舰店",
"voucher_type": 1,
"voucher_buy_amount": 0,
"voucher_actual_amount": 0,
"telphone_no": "fasdf343df34545",
"openid": "xsdfs4534543534534",
"code_type": 1,
"order_id": "23434sdfsdf34342",
"sku_id": "12345"
}
],
"fail_voucher_list": [
{
"encrypted_code": "csbm9",
"code": "sqfvm",
"sku_id": 12345,
"ret_code": 0,
"ret_msg": ""
}
]
}

View File

@@ -0,0 +1,6 @@
{
"openid": "xsdfs4534543534534",
"status": 1,
"page_size": 3,
"page_ctx": ""
}

View File

@@ -0,0 +1,28 @@
{
"errcode": 0,
"errmsg": "成功",
"openid": "xsdfs4534543534534",
"voucher_list": [
{
"code": "232323",
"status": 1,
"send_time": 1699856182,
"update_time": 1699856182,
"start_time": 1699856182,
"end_time": 1699856182,
"consume_time": 1699856182,
"refund_time": 1699856182,
"product_id": "12345",
"consume_store_name": "xxx旗舰店",
"voucher_type": 1,
"voucher_buy_amount": 0,
"voucher_actual_amount": 0,
"telphone_no": "fasdf343df34545",
"openid": "xsdfs4534543534534",
"code_type": 1,
"order_id": "23434sdfsdf34342",
"sku_id": "12345"
}
],
"page_ctx": "dsfajasdlf3434"
}

View File

@@ -0,0 +1,5 @@
{
"encrypted_code": "csbm9",
"code": "sqfvm",
"sku_id": 12345
}

View File

@@ -0,0 +1,25 @@
{
"errcode": 0,
"errmsg": "成功",
"voucher": {
"code": "sqfvm",
"status": 1,
"send_time": 1699856182,
"update_time": 1699856182,
"start_time": 1699856182,
"end_time": 1699856182,
"consume_time": 1699856182,
"refund_time": 1699856182,
"product_id": "12345",
"consume_store_name": "xxx旗舰店",
"voucher_type": 1,
"voucher_buy_amount": 0,
"voucher_actual_amount": 0,
"telphone_no": "fasdf343df34545",
"openid": "xsdfs4534543534534",
"code_type": 1,
"order_id": "23434sdfsdf34342",
"sku_id": "12345",
"union_id": "232323"
}
}

View File

@@ -0,0 +1,12 @@
{
"revoke_request_no": "233244dfgfdfgsdfgsdf",
"reovke_vouchers": [
{
"encrypted_code": "223dfsdf"
},
{
"code": "123412",
"sku_id": "12345"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"errcode": 0,
"errmsg": "成功",
"voucher_list": [
{
"code": "232323",
"status": 2,
"send_time": 1699856182,
"update_time": 1699856182,
"start_time": 1699856182,
"end_time": 1699856182,
"consume_time": 1699856182,
"refund_time": 1699856182,
"product_id": "12345",
"consume_store_name": "xxx旗舰店",
"voucher_type": 1,
"voucher_buy_amount": 0,
"voucher_actual_amount": 0,
"telphone_no": "fasdf343df34545",
"openid": "xsdfs4534543534534",
"code_type": 1,
"order_id": "23434sdfsdf34342",
"sku_id": "12345"
}
],
"fail_voucher_list": [
{
"encrypted_code": "csbm9",
"code": "sqfvm",
"sku_id": 12345,
"ret_code": 0,
"ret_msg": ""
}
]
}

View File

@@ -0,0 +1,5 @@
{
"product_id": "12345",
"sku_id": "12345",
"codes": [ "232323", "23232323", "32434454545" ]
}

View File

@@ -0,0 +1,16 @@
{
"errcode": 10001,
"errmsg": "部分成功",
"product_id": "12345",
"total_count": 3,
"success_count": 2,
"success_codes": [ "232323", "23232323" ],
"fail_count": 1,
"fail_codes": [
{
"code": "32434454545",
"errcode": 111,
"errmsg": "此code已上传"
}
]
}