mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-16 07:59:44 +08:00
feat(wxapi): 新增视频号小店商品操作相关接口
This commit is contained in:
parent
5c899a2fcb
commit
8c970b5076
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.product_category_audit 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/category/callback/ProductCategoryAudit.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECCategoryAuditEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECProductCategoryAuditEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -28,12 +28,12 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置拒绝原因。
|
||||
/// 获取或设置审核原因。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reason")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reason")]
|
||||
[System.Xml.Serialization.XmlElement("reason", IsNullable = true)]
|
||||
public string? RejectReason { get; set; }
|
||||
public string? Reason { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,48 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.product_spu_audit 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuAudit.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductSPUAuditEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class EventData
|
||||
{
|
||||
/// <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>
|
||||
/// 获取或设置审核状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
[System.Xml.Serialization.XmlElement("status")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置审核原因。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reason")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reason")]
|
||||
[System.Xml.Serialization.XmlElement("reason", IsNullable = true)]
|
||||
public string? Reason { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置事件数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ProductSpuAudit")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ProductSpuAudit")]
|
||||
[System.Xml.Serialization.XmlElement("ProductSpuAudit")]
|
||||
public Types.EventData EventData { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.product_spu_listing 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuListing.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductSPUListingEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class EventData
|
||||
{
|
||||
/// <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>
|
||||
/// 获取或设置上下架状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
[System.Xml.Serialization.XmlElement("status")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置下架原因。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reason")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reason")]
|
||||
[System.Xml.Serialization.XmlElement("reason", IsNullable = true)]
|
||||
public string? Reason { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置事件数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ProductSpuListing")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ProductSpuListing")]
|
||||
[System.Xml.Serialization.XmlElement("ProductSpuListing")]
|
||||
public Types.EventData EventData { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -303,6 +303,188 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Product
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/add 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/add.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductAddResponse> ExecuteChannelsECProductAddAsync(this WechatApiClient client, Models.ChannelsECProductAddRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "add")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductAddResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/update 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/update.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductUpdateResponse> ExecuteChannelsECProductUpdateAsync(this WechatApiClient client, Models.ChannelsECProductUpdateRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "update")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/delete 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/delete.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductDeleteResponse> ExecuteChannelsECProductDeleteAsync(this WechatApiClient client, Models.ChannelsECProductDeleteRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "delete")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductDeleteResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/get 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/get.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductGetResponse> ExecuteChannelsECProductGetAsync(this WechatApiClient client, Models.ChannelsECProductGetRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "get")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/list/get 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/list_get.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductListGetResponse> ExecuteChannelsECProductListGetAsync(this WechatApiClient client, Models.ChannelsECProductListGetRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "list", "get")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductListGetResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/listing 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/listing.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductListingResponse> ExecuteChannelsECProductListingAsync(this WechatApiClient client, Models.ChannelsECProductListingRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "listing")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductListingResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/delisting 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/delisting.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductDelistingResponse> ExecuteChannelsECProductDelistingAsync(this WechatApiClient client, Models.ChannelsECProductDelistingRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "delisting")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductDelistingResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/audit/cancel 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/audit_cancel.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductAuditCancelResponse> ExecuteChannelsECProductAuditCancelAsync(this WechatApiClient client, Models.ChannelsECProductAuditCancelRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "audit", "cancel")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductAuditCancelResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /channels/ec/product/stock/update 接口。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/stock_update.html </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ChannelsECProductStockUpdateResponse> ExecuteChannelsECProductStockUpdateAsync(this WechatApiClient client, Models.ChannelsECProductStockUpdateRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "channels", "ec", "product", "stock", "update")
|
||||
.SetQueryParam("access_token", request.AccessToken);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ChannelsECProductStockUpdateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Order
|
||||
#region Order/Delivery
|
||||
/// <summary>
|
||||
|
@ -57,7 +57,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("deliver_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deliver_type")]
|
||||
public int DeliverType { get; set; }
|
||||
public int DeliverMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品列表。
|
||||
|
@ -0,0 +1,220 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/add 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductAddRequest : WechatApiRequest, IInferable<ChannelsECProductAddRequest, ChannelsECProductAddResponse>
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Detail
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品详情图片 URL 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("imgs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("imgs")]
|
||||
public IList<string> ImageUrlList { get; set; } = new List<string>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品详情文字。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("desc")]
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
|
||||
public class Category
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品类目 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("cat_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("cat_id")]
|
||||
public int CategoryId { get; set; }
|
||||
}
|
||||
|
||||
public class Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置属性的 Key。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attr_key")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attr_key")]
|
||||
public string Key { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置属性的值。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attr_value")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attr_value")]
|
||||
public string Value { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class Express
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置运费模板 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("template_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
|
||||
public long TemplateId { get; set; }
|
||||
}
|
||||
|
||||
public class SKU
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商家自定义 SKU ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("out_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
|
||||
public string OutSKUId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置缩略图 Url。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("thumb_img")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("thumb_img")]
|
||||
public string ThumbnailUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sale_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
|
||||
public int SalePrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置市场价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("market_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("market_price")]
|
||||
public int MarketPrice { 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_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_code")]
|
||||
public string? SKUCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sku_attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_attrs")]
|
||||
public IList<Attribute>? AttributeList { get; set; }
|
||||
}
|
||||
|
||||
public class Limitation
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置限购周期类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("period_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("period_type")]
|
||||
public int PeriodType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置限购数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_buy_num")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_buy_num")]
|
||||
public int? LimitedBuyCount { 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("title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("title")]
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品副标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sub_title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sub_title")]
|
||||
public string? SubTitle { 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("desc_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("desc_info")]
|
||||
public Types.Detail Detail { get; set; } = new Types.Detail();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品类目列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("cats")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("cats")]
|
||||
public IList<Types.Category> CategoryList { get; set; } = new List<Types.Category>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attrs")]
|
||||
public IList<Types.Attribute>? AttributeList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发货方式。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("deliver_method")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deliver_method")]
|
||||
public int? DeliverMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置运费信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("express_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("express_info")]
|
||||
public Types.Express? Express { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售后说明。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("aftersale_desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("aftersale_desc")]
|
||||
public string? AftersaleDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("skus")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("skus")]
|
||||
public IList<Types.SKU>? SKUList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置限购信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_info")]
|
||||
public Types.Limitation? Limitation { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/add 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductAddResponse : 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>
|
||||
/// 获取或设置创建时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("create_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))]
|
||||
public DateTimeOffset CreateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置返回数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("data")]
|
||||
public Types.Data Data { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/audit/cancel 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductAuditCancelRequest : WechatApiRequest, IInferable<ChannelsECProductAuditCancelRequest, ChannelsECProductAuditCancelResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
public long ProductId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/audit/cancel 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductAuditCancelResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/delete 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductDeleteRequest : WechatApiRequest, IInferable<ChannelsECProductDeleteRequest, ChannelsECProductDeleteResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
public long ProductId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/delete 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductDeleteResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/delisting 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductDelistingRequest : WechatApiRequest, IInferable<ChannelsECProductDelistingRequest, ChannelsECProductDelistingResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
public long ProductId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/delisting 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductDelistingResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/get 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductGetRequest : WechatApiRequest, IInferable<ChannelsECProductGetRequest, ChannelsECProductGetResponse>
|
||||
{
|
||||
/// <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; }
|
||||
}
|
||||
}
|
@ -0,0 +1,285 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/get 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductGetResponse : WechatApiResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Product
|
||||
{
|
||||
|
||||
public static class Types
|
||||
{
|
||||
public class Detail
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品详情图片 URL 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("imgs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("imgs")]
|
||||
public string[] ImageUrlList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品文字描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("desc")]
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
|
||||
public class Category
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品类目 ID。
|
||||
/// </summary>
|
||||
[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 class Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置属性的 Key。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attr_key")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attr_key")]
|
||||
public string Key { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置属性的值。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attr_value")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attr_value")]
|
||||
public string Value { get; set; } = default!;
|
||||
}
|
||||
|
||||
public class Express
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置运费模板 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("template_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("template_id")]
|
||||
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
|
||||
public long TemplateId { 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>
|
||||
/// 获取或设置商家自定义 SKU ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("out_sku_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("out_sku_id")]
|
||||
public string OutSKUId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置缩略图 URL。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("thumb_img")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("thumb_img")]
|
||||
public string ThumbnailUrl { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sale_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
|
||||
public int SalePrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置市场价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("market_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("market_price")]
|
||||
public int MarketPrice { 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_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_code")]
|
||||
public string? SKUCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sku_attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_attrs")]
|
||||
public Attribute[]? AttributeList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public int Status { get; set; }
|
||||
}
|
||||
|
||||
public class Limitation
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置限购周期类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("period_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("period_type")]
|
||||
public int PeriodType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置限购数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_buy_num")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_buy_num")]
|
||||
public int? LimitedBuyCount { 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("title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("title")]
|
||||
public string Title { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品副标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sub_title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sub_title")]
|
||||
public string? SubTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置主图 URL 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("head_imgs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("head_imgs")]
|
||||
public string[] HeadImageUrlList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品详情信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("desc_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("desc_info")]
|
||||
public Types.Detail Detail { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品类目列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("cats")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("cats")]
|
||||
public Types.Category[] CategoryList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attrs")]
|
||||
public Types.Attribute[]? AttributeList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发货方式。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("deliver_method")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deliver_method")]
|
||||
public int? DeliverMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置运费信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("express_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("express_info")]
|
||||
public Types.Express? Express { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售后说明。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("aftersale_desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("aftersale_desc")]
|
||||
public string? AftersaleDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public int Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品草稿状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("edit_status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("edit_status")]
|
||||
public int EditingStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 最低价格(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("min_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("min_price")]
|
||||
public int MinPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("skus")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("skus")]
|
||||
public Types.SKU[]? SKUList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置限购信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_info")]
|
||||
public Types.Limitation? Limitation { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置线上商品信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product")]
|
||||
public Types.Product? Product { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置草稿商品信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("edit_product")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("edit_product")]
|
||||
public Types.Product? EditingProduct { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/list/get 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductListGetRequest : WechatApiRequest, IInferable<ChannelsECProductListGetRequest, ChannelsECProductListGetResponse>
|
||||
{
|
||||
/// <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;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/list/get 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductListGetResponse : WechatApiResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_ids")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_ids")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualLongArrayConverter))]
|
||||
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; }
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/listing 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductListingRequest : WechatApiRequest, IInferable<ChannelsECProductListingRequest, ChannelsECProductListingResponse>
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商品 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("product_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
|
||||
public long ProductId { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/listing 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductListingResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/stock/update 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductStockUpdateRequest : WechatApiRequest, IInferable<ChannelsECProductStockUpdateRequest, ChannelsECProductStockUpdateResponse>
|
||||
{
|
||||
/// <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("diff_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("diff_type")]
|
||||
public int DiffType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置修改数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("num")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("num")]
|
||||
public int DiffCount { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/stock/update 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductStockUpdateResponse : WechatApiResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,178 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/update 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductUpdateRequest : WechatApiRequest, IInferable<ChannelsECProductUpdateRequest, ChannelsECProductUpdateResponse>
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Detail : ChannelsECProductAddRequest.Types.Detail
|
||||
{
|
||||
}
|
||||
|
||||
public class Category : ChannelsECProductAddRequest.Types.Category
|
||||
{
|
||||
}
|
||||
|
||||
public class Attribute : ChannelsECProductAddRequest.Types.Attribute
|
||||
{
|
||||
}
|
||||
|
||||
public class Express : ChannelsECProductAddRequest.Types.Express
|
||||
{
|
||||
}
|
||||
|
||||
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>
|
||||
/// 获取或设置缩略图 URL。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("thumb_img")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("thumb_img")]
|
||||
public string ThumbnailUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sale_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sale_price")]
|
||||
public int SalePrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置市场价(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("market_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("market_price")]
|
||||
public int MarketPrice { 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_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_code")]
|
||||
public string? SKUCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sku_attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sku_attrs")]
|
||||
public IList<Attribute>? AttributeList { get; set; }
|
||||
}
|
||||
|
||||
public class Limitation : ChannelsECProductAddRequest.Types.Limitation
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <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("title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("title")]
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品副标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("sub_title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("sub_title")]
|
||||
public string? SubTitle { 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("desc_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("desc_info")]
|
||||
public Types.Detail Detail { get; set; } = new Types.Detail();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品类目列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("cats")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("cats")]
|
||||
public IList<Types.Category> CategoryList { get; set; } = new List<Types.Category>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品属性列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("attrs")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("attrs")]
|
||||
public IList<Types.Attribute>? AttributeList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发货方式。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("deliver_method")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("deliver_method")]
|
||||
public int? DeliverMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置运费信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("express_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("express_info")]
|
||||
public Types.Express? Express { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置售后说明。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("aftersale_desc")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("aftersale_desc")]
|
||||
public string? AftersaleDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("skus")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("skus")]
|
||||
public IList<Types.SKU>? SKUList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置限购信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limited_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limited_info")]
|
||||
public Types.Limitation? Limitation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置更新后是否立即上架。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("listing")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalNullableBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("listing")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
|
||||
public bool? RequireListing { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /channels/ec/product/update 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductUpdateResponse : 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>
|
||||
/// 获取或设置更新时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("update_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RegularDateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RegularDateTimeOffsetConverter))]
|
||||
public DateTimeOffset UpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置返回数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("data")]
|
||||
public Types.Data Data { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -198,7 +198,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("express_info")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("express_info")]
|
||||
public Types.Express Express { get; set; } = new Types.Express();
|
||||
public Types.Express? Express { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SKU 列表。
|
||||
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"ToUserName": "gh_*",
|
||||
"FromUserName": "OPENID",
|
||||
"CreateTime": 1662480000,
|
||||
"MsgType": "event",
|
||||
"Event": "product_spu_audit",
|
||||
"ProductSpuAudit": {
|
||||
"product_id": "12345678",
|
||||
"status": 3,
|
||||
"reason": "abc"
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"ToUserName": "gh_*",
|
||||
"FromUserName": "OPENID",
|
||||
"CreateTime": 1662480000,
|
||||
"MsgType": "event",
|
||||
"Event": "product_spu_listing",
|
||||
"ProductSpuListing": {
|
||||
"product_id": "12345678",
|
||||
"status": 3,
|
||||
"reason": "abc"
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
{
|
||||
"title": "任天堂 Nintendo Switch 国行续航增强版 NS家用体感游戏机掌机 便携掌上游戏机 红蓝主机",
|
||||
"sub_title": "随时随地,一起趣玩。",
|
||||
"head_imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
],
|
||||
"desc_info": {
|
||||
"imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
]
|
||||
},
|
||||
"cats": [
|
||||
{
|
||||
"cat_id": "6033"
|
||||
},
|
||||
{
|
||||
"cat_id": "6057"
|
||||
},
|
||||
{
|
||||
"cat_id": "6091"
|
||||
}
|
||||
],
|
||||
"attrs": [
|
||||
{
|
||||
"attr_key": "商品毛重",
|
||||
"attr_value": "380g"
|
||||
},
|
||||
{
|
||||
"attr_key": "商品产地",
|
||||
"attr_value": "中国大陆"
|
||||
}
|
||||
],
|
||||
"express_info": {
|
||||
"template_id": "47428464001"
|
||||
},
|
||||
"skus": [
|
||||
{
|
||||
"thumb_img": "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ",
|
||||
"sale_price": 1300,
|
||||
"market_price": 1500,
|
||||
"stock_num": 100,
|
||||
"sku_code": "A24525252",
|
||||
"sku_attrs": [
|
||||
{
|
||||
"attr_key": "选择颜色",
|
||||
"attr_value": "红蓝主机"
|
||||
},
|
||||
{
|
||||
"attr_key": "选择套装",
|
||||
"attr_value": "主机+保护套"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"data": {
|
||||
"product_id": 23423523452345235,
|
||||
"create_time": "2020-03-25 12:05:25"
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"product_id": "324545"
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"product_id": "324545",
|
||||
"data_type": 1
|
||||
}
|
||||
|
@ -0,0 +1,58 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"product": {
|
||||
"product_id": "123456789",
|
||||
"out_product_id": "OUT_PRODUCT_ID_TEST",
|
||||
"title": "任天堂 Nintendo Switch 国行续航增强版",
|
||||
"sub_title": "【国行Switch,更安心的保修服务,更快的国行服务器】一台主机三种模式,游戏掌机,随时随地,一起趣玩",
|
||||
"head_imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
],
|
||||
"desc_info": {
|
||||
"imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
]
|
||||
},
|
||||
"cats": [
|
||||
{
|
||||
"cat_id": "1"
|
||||
},
|
||||
{
|
||||
"cat_id": "2"
|
||||
},
|
||||
{
|
||||
"cat_id": "3"
|
||||
}
|
||||
],
|
||||
"attrs": [
|
||||
{
|
||||
"attr_key": "商品毛重",
|
||||
"attr_value": "380g"
|
||||
},
|
||||
{
|
||||
"attr_key": "商品产地",
|
||||
"attr_value": "中国大陆"
|
||||
}
|
||||
],
|
||||
"express_info": {
|
||||
"template_id": "123456"
|
||||
},
|
||||
"status": 5,
|
||||
"edit_status": 2,
|
||||
"skus": [
|
||||
{
|
||||
"sku_id": "123456001",
|
||||
"out_sku_id": "OUT_SKU_ID_TEST",
|
||||
"thumb_img": "",
|
||||
"sale_price": 1,
|
||||
"market_price": 2,
|
||||
"stock_num": 5,
|
||||
"sku_code": "SKU_CODE_TEST",
|
||||
"sku_attrs": [],
|
||||
"status": 0
|
||||
}
|
||||
],
|
||||
"min_price": 1
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"status": 5,
|
||||
"page_size": 10,
|
||||
"next_key": "THE_NEXT_KEY"
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"product_ids": [
|
||||
"1234567001",
|
||||
"1234567002",
|
||||
"1234567003",
|
||||
"1234567004",
|
||||
"1234567005",
|
||||
"1234567006",
|
||||
"1234567007",
|
||||
"1234567008",
|
||||
"1234567009",
|
||||
"1234567010"
|
||||
],
|
||||
"next_key": "THE_NEXT_KEY_NEW",
|
||||
"total_num": 100
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"product_id": "1234234"
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"product_id": "324545",
|
||||
"sku_id": "9328425",
|
||||
"diff_type": 1,
|
||||
"num": 10
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
{
|
||||
"product_id": "10000000089215",
|
||||
"title": "任天堂 Nintendo Switch 国行续航增强版 NS家用体感游戏机掌机 便携掌上游戏机 红蓝主机",
|
||||
"sub_title": "随时随地,一起趣玩。【更新】",
|
||||
"head_imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
],
|
||||
"desc_info": {
|
||||
"imgs": [
|
||||
"https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ"
|
||||
]
|
||||
},
|
||||
"cats": [
|
||||
{
|
||||
"cat_id": "6033"
|
||||
},
|
||||
{
|
||||
"cat_id": "6057"
|
||||
},
|
||||
{
|
||||
"cat_id": "6091"
|
||||
}
|
||||
],
|
||||
"attrs": [
|
||||
{
|
||||
"attr_key": "商品毛重",
|
||||
"attr_value": "380g"
|
||||
},
|
||||
{
|
||||
"attr_key": "商品产地",
|
||||
"attr_value": "中国大陆"
|
||||
}
|
||||
],
|
||||
"express_info": {
|
||||
"template_id": "47428464001"
|
||||
},
|
||||
"skus": [
|
||||
{
|
||||
"sku_id": "462966903",
|
||||
"thumb_img": "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ",
|
||||
"sale_price": 1300,
|
||||
"market_price": 1500,
|
||||
"stock_num": 100,
|
||||
"sku_code": "A24525252",
|
||||
"sku_attrs": [
|
||||
{
|
||||
"attr_key": "选择颜色",
|
||||
"attr_value": "红蓝主机"
|
||||
},
|
||||
{
|
||||
"attr_key": "选择套装",
|
||||
"attr_value": "主机+保护套"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"thumb_img": "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ",
|
||||
"sale_price": 1000,
|
||||
"market_price": 1200,
|
||||
"stock_num": 100,
|
||||
"sku_code": "A24525252",
|
||||
"sku_attrs": [
|
||||
{
|
||||
"attr_key": "选择颜色",
|
||||
"attr_value": "红蓝主机"
|
||||
},
|
||||
{
|
||||
"attr_key": "选择套装",
|
||||
"attr_value": "标配"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"errcode": 0,
|
||||
"errmsg": "ok",
|
||||
"data": {
|
||||
"product_id": "23423523452345235",
|
||||
"update_time": "2020-06-20 10:00:00"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user