diff --git a/docs/WechatApi/Basic_ModelDefinition.md b/docs/WechatApi/Basic_ModelDefinition.md index 35d953c3..8ddb0522 100644 --- a/docs/WechatApi/Basic_ModelDefinition.md +++ b/docs/WechatApi/Basic_ModelDefinition.md @@ -64,49 +64,49 @@ [展开查看] -| | 微信 API | 平台能力 | 备注 | -| :-: | :-----------------------------------: | :------: | :------------------: | -| √ | 接口调用凭证 | | | -| √ | OpenAPI 管理 | | | -| √ | 小程序登录 | | | -| √ | 用户信息 | | | -| √ | 小程序码于与小程序链接 | | | -| √ | 小程序客服 | | | -| √ | 消息相关 | | | -| √ | 小程序安全 | | | -| √ | 数据分析 | | | -| √ | 硬件设备 | | | -| √ | 运维中心 | | | -| √ | 插件管理 | | | -| √ | 云开发 | | | -| √ | 附近小程序 | | | -| √ | 图像处理与文字识别 | | | -| √ | 微信红包封面 | | | -| √ | 即时配送 | | | -| √ | 物流助手 | | | -| √ | 微信服务市场 | | | -| √ | 生物认证 | | | -| √ | 微信客服 | | | -| × | 广告 | | 异构协议,需独立模块 | -| √ | 小程序评价 | 行业能力 | | -| √ | 小程序评价 | 行业能力 | | -| √ | 微信学生身份快速验证 | 行业能力 | | -| √ | 微信物流服务 | 行业能力 | | -| × | 乘车码 | 行业能力 | _开发中_ | -| √ | 小程序 B2B 门店助手 | 行业能力 | | -| √ | 短剧小程序 | 行业能力 | | -| × | 小说小程序 | 行业能力 | _开发中_ | -| √ | 购物订单 | 商业能力 | | -| √ | 交易保障 | 商业能力 | | -| √ | 小程序推广员 | 商业能力 | | -| √ | 交易组件 | 商业能力 | | -| √ | 卡券 | 商业能力 | | -| √ | 小程序支付管理服务 | 商业能力 | | -| √ | 小程序发货信息管理服务 | 商业能力 | | -| × | 微信小店合作账号小程序接口 | 商业能力 | _开发中_ | -| √ | 多端能力 | 多端能力 | | -| √ | 服务市场 | 服务市场 | | -| √ | 城市服务 | 城市服务 | | +| | 微信 API | 平台能力 | 备注 | +| :-: | :------------------------: | :------: | :------------------: | +| √ | 接口调用凭证 | | | +| √ | OpenAPI 管理 | | | +| √ | 小程序登录 | | | +| √ | 用户信息 | | | +| √ | 小程序码于与小程序链接 | | | +| √ | 小程序客服 | | | +| √ | 消息相关 | | | +| √ | 小程序安全 | | | +| √ | 数据分析 | | | +| √ | 硬件设备 | | | +| √ | 运维中心 | | | +| √ | 插件管理 | | | +| √ | 云开发 | | | +| √ | 附近小程序 | | | +| √ | 图像处理与文字识别 | | | +| √ | 微信红包封面 | | | +| √ | 即时配送 | | | +| √ | 物流助手 | | | +| √ | 微信服务市场 | | | +| √ | 生物认证 | | | +| √ | 微信客服 | | | +| × | 广告 | | 异构协议,需独立模块 | +| √ | 小程序评价 | 行业能力 | | +| √ | 小程序评价 | 行业能力 | | +| √ | 微信学生身份快速验证 | 行业能力 | | +| √ | 微信物流服务 | 行业能力 | | +| × | 乘车码 | 行业能力 | _开发中_ | +| √ | 小程序 B2B 门店助手 | 行业能力 | | +| √ | 短剧小程序 | 行业能力 | | +| × | 小说小程序 | 行业能力 | _开发中_ | +| √ | 购物订单 | 商业能力 | | +| √ | 交易保障 | 商业能力 | | +| √ | 小程序推广员 | 商业能力 | | +| √ | 交易组件 | 商业能力 | | +| √ | 卡券 | 商业能力 | | +| √ | 小程序支付管理服务 | 商业能力 | | +| √ | 小程序发货信息管理服务 | 商业能力 | | +| √ | 微信小店合作账号小程序接口 | 商业能力 | | +| √ | 多端能力 | 多端能力 | | +| √ | 服务市场 | 服务市场 | | +| √ | 城市服务 | 城市服务 | | diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/Channels/Cooperation/CooperationShopOrderEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/Channels/Cooperation/CooperationShopOrderEvent.cs new file mode 100644 index 00000000..fc7ddd28 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/Channels/Cooperation/CooperationShopOrderEvent.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Events +{ + /// + /// 表示 EVENT.cooperation_shop_order 事件的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class CooperationShopOrderEvent : WechatApiEvent + { + public static class Types + { + public class EventData + { + /// + /// 获取或设置店铺 AppId。 + /// + [Newtonsoft.Json.JsonProperty("shop_appid")] + [System.Text.Json.Serialization.JsonPropertyName("shop_appid")] + [System.Xml.Serialization.XmlElement("shop_appid")] + public string ShopAppId { get; set; } = default!; + + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + [System.Xml.Serialization.XmlElement("order_id")] + public string OrderId { get; set; } = default!; + } + } + + /// + /// 获取或设置事件参数。 + /// + [Newtonsoft.Json.JsonProperty("EventData")] + [System.Text.Json.Serialization.JsonPropertyName("EventData")] + [System.Xml.Serialization.XmlElement("EventData")] + public Types.EventData EventData { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs index 0c8fb92b..6b9e2de1 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteChannelsExtensions.cs @@ -1060,6 +1060,100 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion + #region ECCooperation + /// + /// 异步调用 [POST] /channels/ec/cooperation/shop/list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECCooperationShopListAsync(this WechatApiClient client, Models.ChannelsECCooperationShopListRequest 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", "cooperation", "shop", "list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /channels/ec/cooperation/product/list 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECCooperationProductListAsync(this WechatApiClient client, Models.ChannelsECCooperationProductListRequest 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", "cooperation", "product", "list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /channels/ec/cooperation/product/get 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECCooperationProductGetAsync(this WechatApiClient client, Models.ChannelsECCooperationProductGetRequest 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", "cooperation", "product", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /channels/ec/cooperation/order/get 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteChannelsECCooperationOrderGetAsync(this WechatApiClient client, Models.ChannelsECCooperationOrderGetRequest 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", "cooperation", "order", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #region ECCoupon /// /// 异步调用 [POST] /channels/ec/coupon/create 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.cs new file mode 100644 index 00000000..95cff76c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/order/get 接口的请求。 + /// + public class ChannelsECCooperationOrderGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置店铺 AppId。 + /// + [Newtonsoft.Json.JsonProperty("shop_appid")] + [System.Text.Json.Serialization.JsonPropertyName("shop_appid")] + public string ShopAppId { get; set; } = string.Empty; + + /// + /// 获取或设置订单 ID。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public string OrderId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.cs new file mode 100644 index 00000000..d3a0d53e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.cs @@ -0,0 +1,73 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/order/get 接口的响应。 + /// + public class ChannelsECCooperationOrderGetResponse : WechatApiResponse + { + public static class Types + { + public class Order + { + public static class Types + { + public class OrderDetail + { + public static class Types + { + public class Product : ChannelsECOrderGetResponse.Types.Order.Types.OrderDetail.Types.Product + { + } + + public class Amount : ChannelsECOrderGetResponse.Types.Order.Types.OrderDetail.Types.Amount + { + } + } + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("product_infos")] + [System.Text.Json.Serialization.JsonPropertyName("product_infos")] + public Types.Product[] ProductList { get; set; } = default!; + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("price_info")] + [System.Text.Json.Serialization.JsonPropertyName("price_info")] + public Types.Amount Amount { get; set; } = default!; + } + } + + /// + /// 获取或设置订单详细信息。 + /// + [Newtonsoft.Json.JsonProperty("order_detail")] + [System.Text.Json.Serialization.JsonPropertyName("order_detail")] + public Types.OrderDetail OrderDetail { get; set; } = default!; + + /// + /// 获取或设置下单用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置下单用户 UnionId。 + /// + [Newtonsoft.Json.JsonProperty("unionid")] + [System.Text.Json.Serialization.JsonPropertyName("unionid")] + public string? UnionId { get; set; } + } + } + + /// + /// 获取或设置订单信息。 + /// + [Newtonsoft.Json.JsonProperty("order")] + [System.Text.Json.Serialization.JsonPropertyName("order")] + public Types.Order Order { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.cs new file mode 100644 index 00000000..cdbd6522 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/product/get 接口的请求。 + /// + public class ChannelsECCooperationProductGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置店铺 AppId。 + /// + [Newtonsoft.Json.JsonProperty("shop_appid")] + [System.Text.Json.Serialization.JsonPropertyName("shop_appid")] + public string ShopAppId { get; set; } = string.Empty; + + /// + /// 获取或设置商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_id")] + public long ProductId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.cs new file mode 100644 index 00000000..8820f4e1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/product/get 接口的响应。 + /// + public class ChannelsECCooperationProductGetResponse : WechatApiResponse + { + public static class Types + { + public class Product + { + /// + /// 获取或设置商品 ID。 + /// + [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; } + + /// + /// 获取或设置商品标题。 + /// + [Newtonsoft.Json.JsonProperty("title")] + [System.Text.Json.Serialization.JsonPropertyName("title")] + public string Title { get; set; } = default!; + + /// + /// 获取或设置图片 URL 列表。 + /// + [Newtonsoft.Json.JsonProperty("img_urls")] + [System.Text.Json.Serialization.JsonPropertyName("img_urls")] + public string[] ImageUrlList { get; set; } = default!; + + /// + /// 获取或设置最低价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("min_price")] + [System.Text.Json.Serialization.JsonPropertyName("min_price")] + public int MinPrice { get; set; } + } + } + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("product")] + [System.Text.Json.Serialization.JsonPropertyName("product")] + public Types.Product Product { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListRequest.cs new file mode 100644 index 00000000..9d912cfa --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListRequest.cs @@ -0,0 +1,30 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/product/list 接口的请求。 + /// + public class ChannelsECCooperationProductListRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置店铺 AppId。 + /// + [Newtonsoft.Json.JsonProperty("shop_appid")] + [System.Text.Json.Serialization.JsonPropertyName("shop_appid")] + public string ShopAppId { get; set; } = string.Empty; + + /// + /// 获取或设置分页每页页数。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("page_size")] + [System.Text.Json.Serialization.JsonPropertyName("page_size")] + public int Limit { get; set; } = 10; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_key")] + [System.Text.Json.Serialization.JsonPropertyName("next_key")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListResponse.cs new file mode 100644 index 00000000..ac616381 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationProductListResponse.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/product/list 接口的响应。 + /// + public class ChannelsECCooperationProductListResponse : WechatApiResponse + { + public static class Types + { + public class Product + { + /// + /// 获取或设置商品 ID。 + /// + [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; } + } + } + + /// + /// 获取或设置商品列表。 + /// + [Newtonsoft.Json.JsonProperty("products")] + [System.Text.Json.Serialization.JsonPropertyName("products")] + public Types.Product[] ProductList { get; set; } = default!; + + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalCount { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_key")] + [System.Text.Json.Serialization.JsonPropertyName("next_key")] + public string? NextCursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListRequest.cs new file mode 100644 index 00000000..eff5b1be --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/shop/list 接口的请求。 + /// + public class ChannelsECCooperationShopListRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListResponse.cs new file mode 100644 index 00000000..a3d8d42f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Channels/ECCooperation/ChannelsECCooperationShopListResponse.cs @@ -0,0 +1,63 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /channels/ec/cooperation/shop/list 接口的响应。 + /// + public class ChannelsECCooperationShopListResponse : WechatApiResponse + { + public static class Types + { + public class Shop + { + /// + /// 获取或设置店铺 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置店铺名称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + + /// + /// 获取或设置绑定状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置绑定时间毫秒级时间戳。 + /// + [Newtonsoft.Json.JsonProperty("bind_time")] + [System.Text.Json.Serialization.JsonPropertyName("bind_time")] + public long? BindTimeMilliseconds { get; set; } + + /// + /// 获取或设置解绑时间毫秒级时间戳。 + /// + [Newtonsoft.Json.JsonProperty("unbind_time")] + [System.Text.Json.Serialization.JsonPropertyName("unbind_time")] + public long? UnbindTimeMilliseconds { get; set; } + + /// + /// 获取或设置取消时间毫秒级时间戳。 + /// + [Newtonsoft.Json.JsonProperty("cancel_time")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_time")] + public long? CancelTimeMilliseconds { get; set; } + } + } + + /// + /// 获取或设置店铺列表。 + /// + [Newtonsoft.Json.JsonProperty("shop_list")] + [System.Text.Json.Serialization.JsonPropertyName("shop_list")] + public Types.Shop[] ShopList { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Channels/Cooperation/CooperationShopOrderEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Channels/Cooperation/CooperationShopOrderEvent.json new file mode 100644 index 00000000..7b4352e0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Channels/Cooperation/CooperationShopOrderEvent.json @@ -0,0 +1,11 @@ +{ + "ToUserName": "gh_2defbb026678", + "FromUserName": "OPENID", + "CreateTime": 1706518830, + "MsgType": "event", + "Event": "cooperation_shop_order", + "EventData": { + "order_id": "order_id_xxx", + "shop_appid": "店铺appid" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.json new file mode 100644 index 00000000..a49f29df --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetRequest.json @@ -0,0 +1,4 @@ +{ + "shop_appid": "SHOP_APPID", + "order_id": "ORDER_ID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.json new file mode 100644 index 00000000..e3dbb389 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationOrderGetResponse.json @@ -0,0 +1,55 @@ +{ + "order": { + "openid": "OPENID", + "order_detail": { + "product_infos": [ + { + "product_id": 234245, + "sku_id": 23424, + "sku_cnt": 10, + "title": "健身环", + "thumb_img": "https://mmecimage.cn/p/wx37f38d59298839c3/HJE9eJaEc5bJk-eaArVdILSB7MMaHgdK2-JIn51nMQ", + "sale_price": 2000, + "market_price": 2000, + "sku_attrs": [ + { + "attr_key": "产地", + "attr_value": "四川成都" + }, + { + "attr_key": "材质", + "attr_value": "玻璃" + }, + { + "attr_key": "适用人群", + "attr_value": "青年;中年" + }, + { + "attr_key": "数量", + "attr_value": "33" + }, + { + "attr_key": "精度", + "attr_value": "3.001" + }, + { + "attr_key": "重量", + "attr_value": "38 mg" + }, + { + "attr_key": "毛重", + "attr_value": "380 kg" + } + ] + } + ], + "price_info": { + "product_price": 20000, + "order_price": 10500, + "freight": 500, + "discounted_price": 10000, + "is_discounted": true + } + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.json new file mode 100644 index 00000000..6dd63d9a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetRequest.json @@ -0,0 +1,4 @@ +{ + "shop_appid": "wx2b255582a7b4bfd0", + "product_id": 10000157022254 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.json new file mode 100644 index 00000000..8d51ad85 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductGetResponse.json @@ -0,0 +1,13 @@ +{ + "product": { + "product_id": 10000157022254, + "title": "测试商品", + "img_urls": [ + "IMG_URL0", + "IMG_URL1" + ], + "min_price": 2800 + }, + "errcode": 0, + "errmsg": "ok" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListRequest.json new file mode 100644 index 00000000..1299c646 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListRequest.json @@ -0,0 +1,4 @@ +{ + "shop_appid": "wx***************0", + "page_size": 2 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListResponse.json new file mode 100644 index 00000000..8e3c780e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationProductListResponse.json @@ -0,0 +1,14 @@ +{ + "products": [ + { + "product_id": 10000157022254 + }, + { + "product_id": 10000157016507 + } + ], + "total_num": 124, + "next_key": "EhgIi/2/voWjAhCjzK24BhjAhZCBgICAgAI=", + "errcode": 0, + "errmsg": "ok" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationShopListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationShopListResponse.json new file mode 100644 index 00000000..af045738 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Channels/ECCooperation/ChannelsECCooperationShopListResponse.json @@ -0,0 +1,14 @@ +{ + "shop_list": [ + { + "appid": "wx***************0", + "nickname": "测试店", + "status": 1, + "bind_time": 1728979333943, + "unbind_time": 0, + "cancel_time": 0 + } + ], + "errcode": 0, + "errmsg": "ok" +}