feat(wxapi): 新增小程序联盟商品佣金设置相关接口

This commit is contained in:
fudiwei
2022-12-01 22:57:31 +08:00
parent 488324b283
commit 60a395fb6e
12 changed files with 309 additions and 2 deletions

View File

@@ -0,0 +1,74 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.Api
{
public static class WechatApiClientExecuteUnionShopExtensions
{
#region Open
/// <summary>
/// <para>异步调用 [POST] /union/shop/open/set_commission 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/custom_component/api/shop/set_commission.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UnionShopOpenSetCommissionResponse> ExecuteUnionShopOpenSetCommissionAsync(this WechatApiClient client, Models.UnionShopOpenSetCommissionRequest 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, "union", "shop", "open", "set_commission")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UnionShopOpenSetCommissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /union/shop/open/get_commission 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/custom_component/api/shop/set_commission.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UnionShopOpenGetCommissionResponse> ExecuteUnionShopOpenGetCommissionAsync(this WechatApiClient client, Models.UnionShopOpenGetCommissionRequest 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, "union", "shop", "open", "get_commission")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UnionShopOpenGetCommissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /union/shop/open/delete_commission 接口。</para>
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/union/custom_component/api/shop/set_commission.html </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UnionShopOpenDeleteCommissionResponse> ExecuteUnionShopOpenDeleteCommissionAsync(this WechatApiClient client, Models.UnionShopOpenDeleteCommissionRequest 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, "union", "shop", "open", "delete_commission")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync<Models.UnionShopOpenDeleteCommissionResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -1,4 +1,4 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [GET] /union/promoter/target/plan_info 接口的响应。</para>
@@ -254,7 +254,6 @@
/// </summary>
[Newtonsoft.Json.JsonProperty("commissionRatio")]
[System.Text.Json.Serialization.JsonPropertyName("commissionRatio")]
public int CommissionRatio { get; set; }
/// <summary>

View File

@@ -0,0 +1,37 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /union/shop/open/delete_commission 接口的请求。</para>
/// </summary>
public class UnionShopOpenDeleteCommissionRequest : WechatApiRequest, IInferable<UnionShopOpenDeleteCommissionRequest, UnionShopOpenDeleteCommissionResponse>
{
public static class Types
{
public class Product
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("productId")]
[System.Text.Json.Serialization.JsonPropertyName("productId")]
public long? ProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("outProductId")]
[System.Text.Json.Serialization.JsonPropertyName("outProductId")]
public string? OutProductId { get; set; }
}
}
/// <summary>
/// 获取或设置商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("key")]
[System.Text.Json.Serialization.JsonPropertyName("key")]
public IList<Types.Product> ProductList { get; set; } = new List<Types.Product>();
}
}

View File

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

View File

@@ -0,0 +1,37 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /union/shop/open/get_commission 接口的请求。</para>
/// </summary>
public class UnionShopOpenGetCommissionRequest : WechatApiRequest, IInferable<UnionShopOpenGetCommissionRequest, UnionShopOpenGetCommissionResponse>
{
public static class Types
{
public class Product
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("productId")]
[System.Text.Json.Serialization.JsonPropertyName("productId")]
public long? ProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("outProductId")]
[System.Text.Json.Serialization.JsonPropertyName("outProductId")]
public string? OutProductId { get; set; }
}
}
/// <summary>
/// 获取或设置商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("key")]
[System.Text.Json.Serialization.JsonPropertyName("key")]
public IList<Types.Product> ProductList { get; set; } = new List<Types.Product>();
}
}

View File

@@ -0,0 +1,63 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /union/shop/open/get_commission 接口的响应。</para>
/// </summary>
public class UnionShopOpenGetCommissionResponse : WechatApiResponse
{
public static class Types
{
public class Result
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("productId")]
[System.Text.Json.Serialization.JsonPropertyName("productId")]
public long ProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("outProductId")]
[System.Text.Json.Serialization.JsonPropertyName("outProductId")]
public string OutProductId { get; set; } = default!;
/// <summary>
/// 获取或设置是否是佣金商品。
/// </summary>
[Newtonsoft.Json.JsonProperty("isCommissionProduct")]
[System.Text.Json.Serialization.JsonPropertyName("isCommissionProduct")]
public bool IsCommissionProduct { get; set; }
/// <summary>
/// 获取或设置佣金率(单位:万分之一)。
/// </summary>
[Newtonsoft.Json.JsonProperty("commissionRatio")]
[System.Text.Json.Serialization.JsonPropertyName("commissionRatio")]
public int? CommissionRatio { get; set; }
/// <summary>
/// 获取或设置待生效佣金率(单位:万分之一)。
/// </summary>
[Newtonsoft.Json.JsonProperty("nextCommissionRatio")]
[System.Text.Json.Serialization.JsonPropertyName("nextCommissionRatio")]
public int? NextCommissionRatio { get; set; }
/// <summary>
/// 获取或设置生效时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("effectiveTime")]
[System.Text.Json.Serialization.JsonPropertyName("effectiveTime")]
public long? EffectiveTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置结果列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("result")]
[System.Text.Json.Serialization.JsonPropertyName("result")]
public Types.Result[] ResultList { get; set; } = default!;
}
}

View File

@@ -0,0 +1,44 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /union/shop/open/set_commission 接口的请求。</para>
/// </summary>
public class UnionShopOpenSetCommissionRequest : WechatApiRequest, IInferable<UnionShopOpenSetCommissionRequest, UnionShopOpenSetCommissionResponse>
{
public static class Types
{
public class Product
{
/// <summary>
/// 获取或设置商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("productId")]
[System.Text.Json.Serialization.JsonPropertyName("productId")]
public long? ProductId { get; set; }
/// <summary>
/// 获取或设置商家自定义商品 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("outProductId")]
[System.Text.Json.Serialization.JsonPropertyName("outProductId")]
public string? OutProductId { get; set; }
/// <summary>
/// 获取或设置佣金率(单位:万分之一)。
/// </summary>
[Newtonsoft.Json.JsonProperty("commissionRatio")]
[System.Text.Json.Serialization.JsonPropertyName("commissionRatio")]
public int CommissionRatio { get; set; }
}
}
/// <summary>
/// 获取或设置商品列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("key")]
[System.Text.Json.Serialization.JsonPropertyName("key")]
public IList<Types.Product> ProductList { get; set; } = new List<Types.Product>();
}
}

View File

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

View File

@@ -0,0 +1,8 @@
{
"key": [
{
"productId": 411330134,
"outProductId": "1234566"
}
]
}

View File

@@ -0,0 +1,8 @@
{
"key": [
{
"productId": 411330134,
"outProductId": "1234566"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"errcode": 0,
"errmsg": "ok",
"result": [
{
"productId": "411330134",
"outProductId": "1234566",
"isCommissionProduct": false
}
]
}

View File

@@ -0,0 +1,8 @@
{
"key": [
{
"productId": 411330134,
"outProductId": "1234566"
}
]
}