feat(work): 新增数据与智能调用程序、调试模式、订单管理等相关接口

This commit is contained in:
Fu Diwei 2025-02-05 14:00:49 +08:00
parent 06bbc32043
commit 20e13bc8ab
51 changed files with 1332 additions and 4 deletions

View File

@ -68,7 +68,7 @@
### 4. 所有 API 都经过了测试吗?
由于微信的产品业务线众多,很多业务也需要前置条件才能继续,截至目前本项目已封装超过 2800 余个 API虽然同时也编写了若干单元测试用例但与数量庞大的 API 相比仍远远不够。
由于微信的产品业务线众多,很多业务也需要前置条件才能继续,截至目前本项目已封装超过 2900 余个 API虽然同时也编写了若干单元测试用例但与数量庞大的 API 相比仍远远不够。
本项目严格按照微信官方提供的开发文档进行封装,并利用自动化工具保证封装结果的正确。但微信的文档本身质量比较低,所以存在错误在所难免。

View File

@ -29,24 +29,26 @@
| | 微信 API | 开发模式 | 备注 |
| :-: | :---------------------------: | :-------------------------------: | :------------------------------: |
| √ | 开发接入 | 企业 & 第三方 & 服务商 & 智慧硬件 | |
| √ | 基础:应用授权 | 第三方 & 服务商 | |
| √ | 基础:接口调用许可 | 第三方 & 服务商 | |
| √ | 基础:账号 ID | 企业 & 第三方 & 服务商 | |
| √ | 基础:通讯录管理 | 企业 & 第三方 & 服务商 | |
| √ | 基础:身份验证 | 企业 & 第三方 & 服务商 | |
| √ | 基础:企业互联 | 企业 & 第三方 & 服务商 | |
| √ | 基础:上下游 | 企业 & 第三方 & 服务商 | |
| √ | 基础:安全管理 | 企业 | |
| √ | 基础:消息推送 | 企业 & 第三方 & 服务商 | |
| √ | 基础:应用管理 | 企业 & 第三方 & 服务商 | |
| √ | 基础:素材管理 | 企业 & 第三方 & 服务商 | |
| √ | 基础:电子发票 | 企业 & 第三方 & 服务商 | |
| √ | 基础:应用授权 | 第三方 & 服务商 | |
| √ | 基础:接口调用许可 | 第三方 & 服务商 | |
| √ | 基础:收银台 | 第三方 & 服务商 | |
| √ | 基础:推广二维码 | 第三方 & 服务商 | |
| √ | 连接微信:客户联系 | 企业 & 第三方 & 服务商 | |
| √ | 连接微信:微信客服 | 企业 & 第三方 & 服务商 | |
| × | <del>连接微信:企业支付</del> | 企业 & 第三方 & 服务商 | 异构协议,请使用 `TenpayV2` 模块 |
| √ | 连接微信:小程序接入对外收款 | 企业 | |
| √ | 连接微信:会话内容存档 | 企业 | |
| √ | 连接微信:会话内容存档 | 企业 & 第三方 | |
| √ | 连接微信:数据与智能专区 | 第三方 & 服务商 | |
| √ | 连接微信:家校沟通 | 企业 & 第三方 & 服务商 | |
| √ | 连接微信:家校应用 | 企业 & 第三方 & 服务商 | |
| √ | 连接微信:政民沟通 | 企业 & 第三方 & 服务商 | |

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Events
{
/// <summary>
/// <para>表示 EVENT.program_notify 事件的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100048 ]]>
/// </para>
/// </summary>
public class ProgramNotifyEvent : WechatWorkEvent
{
/// <summary>
/// 获取或设置通知 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("NotifyId")]
[System.Text.Json.Serialization.JsonPropertyName("NotifyId")]
[System.Xml.Serialization.XmlElement("NotifyId")]
public string NotifyId { get; set; } = default!;
/// <summary>
/// 获取或设置通知场景值。
/// </summary>
[Newtonsoft.Json.JsonProperty("NotifyScene")]
[System.Text.Json.Serialization.JsonPropertyName("NotifyScene")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
[System.Xml.Serialization.XmlElement("NotifyScene")]
public int NotifyScene { get; set; }
}
}

View File

@ -0,0 +1,150 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.Work
{
public static class WechatWorkClientExecuteCgibinAdvancedApiExtensions
{
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/create_order 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100257 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiCreateOrderResponse> ExecuteCgibinAdvancedApiCreateOrderAsync(this WechatWorkClient client, Models.CgibinAdvancedApiCreateOrderRequest 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, "cgi-bin", "advanced_api", "create_order")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiCreateOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/cancel_order 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100258 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiCancelOrderResponse> ExecuteCgibinAdvancedApiCancelOrderAsync(this WechatWorkClient client, Models.CgibinAdvancedApiCancelOrderRequest 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, "cgi-bin", "advanced_api", "cancel_order")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiCancelOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/submit_pay 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100259 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiSubmitPayResponse> ExecuteCgibinAdvancedApiSubmitPayAsync(this WechatWorkClient client, Models.CgibinAdvancedApiSubmitPayRequest 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, "cgi-bin", "advanced_api", "submit_pay")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiSubmitPayResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/list_order 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100260 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiListOrderResponse> ExecuteCgibinAdvancedApiListOrderAsync(this WechatWorkClient client, Models.CgibinAdvancedApiListOrderRequest 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, "cgi-bin", "advanced_api", "list_order")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiListOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/get_order 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100261 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiGetOrderResponse> ExecuteCgibinAdvancedApiGetOrderAsync(this WechatWorkClient client, Models.CgibinAdvancedApiGetOrderRequest 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, "cgi-bin", "advanced_api", "get_order")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiGetOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/advanced_api/get_corp_buy_info 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100271 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinAdvancedApiGetCorpBuyInfoResponse> ExecuteCgibinAdvancedApiGetCorpBuyInfoAsync(this WechatWorkClient client, Models.CgibinAdvancedApiGetCorpBuyInfoRequest 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, "cgi-bin", "advanced_api", "get_corp_buy_info")
.SetQueryParam("provider_access_token", request.ProviderAccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinAdvancedApiGetCorpBuyInfoResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@ -320,6 +320,77 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#endregion
#region DebugMode
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/open_debug_mode 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100091 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataOpenDebugModeResponse> ExecuteCgibinChatDataOpenDebugModeAsync(this WechatWorkClient client, Models.CgibinChatDataOpenDebugModeRequest 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, "cgi-bin", "chatdata", "open_debug_mode")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataOpenDebugModeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/close_debug_mode 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100092 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataCloseDebugModeResponse> ExecuteCgibinChatDataCloseDebugModeAsync(this WechatWorkClient client, Models.CgibinChatDataCloseDebugModeRequest 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, "cgi-bin", "chatdata", "close_debug_mode")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataCloseDebugModeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/check_debug_mode 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100114 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataCheckDebugModeResponse> ExecuteCgibinChatDataCheckDebugModeAsync(this WechatWorkClient client, Models.CgibinChatDataCheckDebugModeRequest 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, "cgi-bin", "chatdata", "check_debug_mode")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataCheckDebugModeResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
#endregion
#region Export
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/export/create_job 接口。</para>
@ -556,6 +627,77 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
}
#endregion
#region Program
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/sync_call_program 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100020 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataSyncCallProgramResponse> ExecuteCgibinChatDataSyncCallProgramAsync(this WechatWorkClient client, Models.CgibinChatDataSyncCallProgramRequest 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, "cgi-bin", "chatdata", "sync_call_program")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataSyncCallProgramResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/async_program_task 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100021 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataAsyncProgramTaskResponse> ExecuteCgibinChatDataAsyncProgramTaskAsync(this WechatWorkClient client, Models.CgibinChatDataAsyncProgramTaskRequest 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, "cgi-bin", "chatdata", "async_program_task")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataAsyncProgramTaskResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/async_program_result 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developer.work.weixin.qq.com/document/path/100021 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CgibinChatDataAsyncProgramResultResponse> ExecuteCgibinChatDataAsyncProgramResultAsync(this WechatWorkClient client, Models.CgibinChatDataAsyncProgramResultRequest 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, "cgi-bin", "chatdata", "async_program_result")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.CgibinChatDataAsyncProgramResultResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ;
}
#endregion
#region Search
/// <summary>
/// <para>异步调用 [POST] /cgi-bin/chatdata/search_chat 接口。</para>

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/cancel_order 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiCancelOrderRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/cancel_order 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiCancelOrderResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,119 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/create_order 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiCreateOrderRequest : WechatWorkRequest
{
public static class Types
{
public class ChatArchiveApi
{
public static class Types
{
public class EditionInfo
{
/// <summary>
/// 获取或设置开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("begin_time")]
[System.Text.Json.Serialization.JsonPropertyName("begin_time")]
public long BeginTimestamp { get; set; }
/// <summary>
/// 获取或设置结束时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long EndTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置目标版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("edition")]
[System.Text.Json.Serialization.JsonPropertyName("edition")]
public int TargetEdition { get; set; }
/// <summary>
/// 获取或设置目标版本生效信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("target_edition_info")]
[System.Text.Json.Serialization.JsonPropertyName("target_edition_info")]
public Types.EditionInfo? TargetEditionInfo { get; set; }
/// <summary>
/// 获取或设置旧版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("old_edition")]
[System.Text.Json.Serialization.JsonPropertyName("old_edition")]
public int? OldEdition { get; set; }
/// <summary>
/// 获取或设置旧版本生效信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("old_edition_info")]
[System.Text.Json.Serialization.JsonPropertyName("old_edition_info")]
public Types.EditionInfo? OldEditionInfo { get; set; }
/// <summary>
/// 获取或设置购买数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("purchase_count")]
[System.Text.Json.Serialization.JsonPropertyName("purchase_count")]
public int? PurchaseCount { get; set; }
/// <summary>
/// 获取或设置生效时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("take_effect_time")]
[System.Text.Json.Serialization.JsonPropertyName("take_effect_time")]
public long? TakeEffectTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置购买的高级接口类型。
/// <para>默认值1</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("advanced_api_type")]
[System.Text.Json.Serialization.JsonPropertyName("advanced_api_type")]
public int AdvancedApiType { get; set; } = 1;
/// <summary>
/// 获取或设置客户企业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("custom_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("custom_corpid")]
public string CustomCorpId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置下单人成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("buyer_userid")]
[System.Text.Json.Serialization.JsonPropertyName("buyer_userid")]
public string BuyerUserId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置订单类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_type")]
[System.Text.Json.Serialization.JsonPropertyName("order_type")]
public int? OrderType { get; set; }
/// <summary>
/// 获取或设置会话内容数据接口订单相关信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_archive_api")]
[System.Text.Json.Serialization.JsonPropertyName("chat_archive_api")]
public Types.ChatArchiveApi? ChatArchiveApi { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/create_order 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiCreateOrderResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = default!;
}
}

View File

@ -0,0 +1,30 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/get_corp_buy_info 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiGetCorpBuyInfoRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置购买的高级接口类型。
/// <para>默认值1</para>
/// </summary>
[Newtonsoft.Json.JsonProperty("advanced_api_type")]
[System.Text.Json.Serialization.JsonPropertyName("advanced_api_type")]
public int AdvancedApiType { get; set; } = 1;
/// <summary>
/// 获取或设置客户企业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("custom_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("custom_corpid")]
public string CustomCorpId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,62 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/get_corp_buy_info 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiGetCorpBuyInfoResponse : WechatWorkResponse
{
public static class Types
{
public class ChatArchivApiBuyInfo
{
public static class Types
{
public class EditionInfo
{
/// <summary>
/// 获取或设置版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("edition")]
[System.Text.Json.Serialization.JsonPropertyName("edition")]
public int Edition { get; set; }
/// <summary>
/// 获取或设置购买数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("purchase_count")]
[System.Text.Json.Serialization.JsonPropertyName("purchase_count")]
public int PurchaseCount { get; set; }
/// <summary>
/// 获取或设置开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("begin_time")]
[System.Text.Json.Serialization.JsonPropertyName("begin_time")]
public long BeginTimestamp { get; set; }
/// <summary>
/// 获取或设置结束时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long EndTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置已购版本列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("edition_list")]
[System.Text.Json.Serialization.JsonPropertyName("edition_list")]
public Types.EditionInfo[] EditionList { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置会话内容数据接口的购买信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_archive_api_buy_info")]
[System.Text.Json.Serialization.JsonPropertyName("chat_archive_api_buy_info")]
public Types.ChatArchivApiBuyInfo ChatArchivApiBuyInfo { get; set; } = default!;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/get_order 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiGetOrderRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,132 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/get_order 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiGetOrderResponse : WechatWorkResponse
{
public static class Types
{
public class Order
{
public static class Types
{
public class ChatArchiveApi
{
/// <summary>
/// 获取或设置版本。
/// </summary>
[Newtonsoft.Json.JsonProperty("edition")]
[System.Text.Json.Serialization.JsonPropertyName("edition")]
public int Edition { get; set; }
/// <summary>
/// 获取或设置购买数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("purchase_count")]
[System.Text.Json.Serialization.JsonPropertyName("purchase_count")]
public int PurchaseCount { get; set; }
/// <summary>
/// 获取或设置购买天数。
/// </summary>
[Newtonsoft.Json.JsonProperty("purchase_duration_days")]
[System.Text.Json.Serialization.JsonPropertyName("purchase_duration_days")]
public int PurchaseDurationDays { get; set; }
/// <summary>
/// 获取或设置生效时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("take_effect_time")]
[System.Text.Json.Serialization.JsonPropertyName("take_effect_time")]
public long TakeEffectTimestamp { get; set; }
/// <summary>
/// 获取或设置到期时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long EndTimestamp { get; set; }
/// <summary>
/// 获取或设置原价(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("original_price")]
[System.Text.Json.Serialization.JsonPropertyName("original_price")]
public int? OriginalPrice { get; set; }
}
}
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = default!;
/// <summary>
/// 获取或设置购买的高级接口类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("advanced_api_type")]
[System.Text.Json.Serialization.JsonPropertyName("advanced_api_type")]
public int AdvancedApiType { get; set; }
/// <summary>
/// 获取或设置客户企业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("custom_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("custom_corpid")]
public string CustomCorpId { get; set; } = default!;
/// <summary>
/// 获取或设置下单人成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("buyer_userid")]
[System.Text.Json.Serialization.JsonPropertyName("buyer_userid")]
public string BuyerUserId { get; set; } = default!;
/// <summary>
/// 获取或设置订单类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_type")]
[System.Text.Json.Serialization.JsonPropertyName("order_type")]
public int OrderType { get; set; }
/// <summary>
/// 获取或设置订单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_status")]
[System.Text.Json.Serialization.JsonPropertyName("order_status")]
public int OrderStatus { get; set; }
/// <summary>
/// 获取或设置下单时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
/// <summary>
/// 获取或设置应付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("paid_price")]
[System.Text.Json.Serialization.JsonPropertyName("paid_price")]
public int PaidPrice { get; set; }
/// <summary>
/// 获取或设置会话内容数据接口订单相关信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("chat_archive_api")]
[System.Text.Json.Serialization.JsonPropertyName("chat_archive_api")]
public Types.ChatArchiveApi? ChatArchiveApi { get; set; }
}
}
/// <summary>
/// 获取或设置订单信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("order")]
[System.Text.Json.Serialization.JsonPropertyName("order")]
public Types.Order Order { get; set; } = default!;
}
}

View File

@ -0,0 +1,57 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/list_order 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiListOrderRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置客户企业 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("custom_corpid")]
[System.Text.Json.Serialization.JsonPropertyName("custom_corpid")]
public string? CustomCorpId { get; set; }
/// <summary>
/// 获取或设置下单时间开始时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("start_time")]
[System.Text.Json.Serialization.JsonPropertyName("start_time")]
public long? StartTimestamp { get; set; }
/// <summary>
/// 获取或设置下单时间结束时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("end_time")]
[System.Text.Json.Serialization.JsonPropertyName("end_time")]
public long? EndTimestamp { get; set; }
/// <summary>
/// 获取或设置购买的高级接口类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("advanced_api_type")]
[System.Text.Json.Serialization.JsonPropertyName("advanced_api_type")]
public int? AdvancedApiType { get; set; }
/// <summary>
/// 获取或设置分页游标。
/// </summary>
[Newtonsoft.Json.JsonProperty("cursor")]
[System.Text.Json.Serialization.JsonPropertyName("cursor")]
public string? Cursor { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
}
}

View File

@ -0,0 +1,65 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/list_order 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiListOrderResponse : WechatWorkResponse
{
public static class Types
{
public class Order
{
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = default!;
/// <summary>
/// 获取或设置订单类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_type")]
[System.Text.Json.Serialization.JsonPropertyName("order_type")]
public int OrderType { get; set; }
/// <summary>
/// 获取或设置订单状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_status")]
[System.Text.Json.Serialization.JsonPropertyName("order_status")]
public int OrderStatus { get; set; }
/// <summary>
/// 获取或设置下单时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置订单列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_list")]
[System.Text.Json.Serialization.JsonPropertyName("order_list")]
public Types.Order[] OrderList { get; set; } = default!;
/// <summary>
/// 获取或设置分页游标。
/// </summary>
[Newtonsoft.Json.JsonProperty("next_cursor")]
[System.Text.Json.Serialization.JsonPropertyName("next_cursor")]
public string? NextCursor { get; set; }
/// <summary>
/// 获取或设置是否还有更多数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("has_more")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.NumericalBooleanConverter))]
[System.Text.Json.Serialization.JsonPropertyName("has_more")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
public bool HasMore { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/submit_pay 接口的请求。</para>
/// </summary>
public class CgibinAdvancedApiSubmitPayRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置服务商 AccessToken。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ProviderAccessToken { get; set; } = string.Empty;
/// <summary>
/// 获取或设置订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置支付人成员账号。
/// </summary>
[Newtonsoft.Json.JsonProperty("payer_userid")]
[System.Text.Json.Serialization.JsonPropertyName("payer_userid")]
public string PayerUserId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/advanced_api/submit_pay 接口的响应。</para>
/// </summary>
public class CgibinAdvancedApiSubmitPayResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/check_debug_mode 接口的请求。</para>
/// </summary>
public class CgibinChatDataCheckDebugModeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置应用关联的程序 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("program_id")]
[System.Text.Json.Serialization.JsonPropertyName("program_id")]
public string ProgramId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/check_debug_mode 接口的响应。</para>
/// </summary>
public class CgibinChatDataCheckDebugModeResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置程序当前的调试模式状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("debug_mode_status")]
[System.Text.Json.Serialization.JsonPropertyName("debug_mode_status")]
public int DebugModeStatus { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/close_debug_mode 接口的请求。</para>
/// </summary>
public class CgibinChatDataCloseDebugModeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置应用关联的程序 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("program_id")]
[System.Text.Json.Serialization.JsonPropertyName("program_id")]
public string ProgramId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/close_debug_mode 接口的响应。</para>
/// </summary>
public class CgibinChatDataCloseDebugModeResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/open_debug_mode 接口的请求。</para>
/// </summary>
public class CgibinChatDataOpenDebugModeRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置应用关联的程序 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("program_id")]
[System.Text.Json.Serialization.JsonPropertyName("program_id")]
public string ProgramId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置程序的调试凭证。
/// </summary>
[Newtonsoft.Json.JsonProperty("debug_token")]
[System.Text.Json.Serialization.JsonPropertyName("debug_token")]
public string DebugToken { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/open_debug_mode 接口的响应。</para>
/// </summary>
public class CgibinChatDataOpenDebugModeResponse : WechatWorkResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/async_program_result 接口的请求。</para>
/// </summary>
public class CgibinChatDataAsyncProgramResultRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置任务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("jobid")]
[System.Text.Json.Serialization.JsonPropertyName("jobid")]
public string JobId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/async_program_result 接口的响应。</para>
/// </summary>
public class CgibinChatDataAsyncProgramResultResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置专区程序的错误码。
/// </summary>
[Newtonsoft.Json.JsonProperty("response_errcode")]
[System.Text.Json.Serialization.JsonPropertyName("response_errcode")]
public int ResponseErrorCode { get; set; }
/// <summary>
/// 获取或设置专区程序的输出 JSON。
/// </summary>
[Newtonsoft.Json.JsonProperty("response_data")]
[System.Text.Json.Serialization.JsonPropertyName("response_data")]
public string? ResponseDataJson { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/async_program_task 接口的请求。</para>
/// </summary>
public class CgibinChatDataAsyncProgramTaskRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置应用关联的程序 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("program_id")]
[System.Text.Json.Serialization.JsonPropertyName("program_id")]
public string ProgramId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置程序关联的能力 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("ability_id")]
[System.Text.Json.Serialization.JsonPropertyName("ability_id")]
public string AbilityId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置请求的输入 JSON。
/// </summary>
[Newtonsoft.Json.JsonProperty("request_data")]
[System.Text.Json.Serialization.JsonPropertyName("request_data")]
public string? RequestDataJson { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/async_program_task 接口的响应。</para>
/// </summary>
public class CgibinChatDataAsyncProgramTaskResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置任务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("jobid")]
[System.Text.Json.Serialization.JsonPropertyName("jobid")]
public string JobId { get; set; } = default!;
}
}

View File

@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/sync_call_program 接口的请求。</para>
/// </summary>
public class CgibinChatDataSyncCallProgramRequest : WechatWorkRequest
{
/// <summary>
/// 获取或设置应用关联的程序 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("program_id")]
[System.Text.Json.Serialization.JsonPropertyName("program_id")]
public string ProgramId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置程序关联的能力 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("ability_id")]
[System.Text.Json.Serialization.JsonPropertyName("ability_id")]
public string AbilityId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置通知 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_id")]
[System.Text.Json.Serialization.JsonPropertyName("notify_id")]
public string NotifyId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置请求的输入 JSON。
/// </summary>
[Newtonsoft.Json.JsonProperty("request_data")]
[System.Text.Json.Serialization.JsonPropertyName("request_data")]
public string? RequestDataJson { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
/// <summary>
/// <para>表示 [POST] /cgi-bin/chatdata/sync_call_program 接口的响应。</para>
/// </summary>
public class CgibinChatDataSyncCallProgramResponse : WechatWorkResponse
{
/// <summary>
/// 获取或设置专区程序的输出 JSON。
/// </summary>
[Newtonsoft.Json.JsonProperty("response_data")]
[System.Text.Json.Serialization.JsonPropertyName("response_data")]
public string? ResponseDataJson { get; set; }
}
}

60
src/src.sln Normal file
View File

@ -0,0 +1,60 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.Ads", "SKIT.FlurlHttpClient.Wechat.Ads\SKIT.FlurlHttpClient.Wechat.Ads.csproj", "{1199FEE5-D27A-23FA-2390-355051497DA8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.Api", "SKIT.FlurlHttpClient.Wechat.Api\SKIT.FlurlHttpClient.Wechat.Api.csproj", "{60E87902-3A99-5E21-375C-04DA40786B72}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.OpenAI", "SKIT.FlurlHttpClient.Wechat.OpenAI\SKIT.FlurlHttpClient.Wechat.OpenAI.csproj", "{4FD99934-3133-2E8A-276A-E08E935B2CDD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.TenpayBusiness", "SKIT.FlurlHttpClient.Wechat.TenpayBusiness\SKIT.FlurlHttpClient.Wechat.TenpayBusiness.csproj", "{74B1E0E0-5325-F373-A45F-133D20B3FEB4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.TenpayV2", "SKIT.FlurlHttpClient.Wechat.TenpayV2\SKIT.FlurlHttpClient.Wechat.TenpayV2.csproj", "{6F95E6BA-B2FD-7AC8-B8EE-6E57DF2A7A49}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.TenpayV3", "SKIT.FlurlHttpClient.Wechat.TenpayV3\SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj", "{A763CCAC-78B3-DD3D-AF3B-E1F7104C8523}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKIT.FlurlHttpClient.Wechat.Work", "SKIT.FlurlHttpClient.Wechat.Work\SKIT.FlurlHttpClient.Wechat.Work.csproj", "{04AE2971-1723-1774-7290-E3C1C16C005C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1199FEE5-D27A-23FA-2390-355051497DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1199FEE5-D27A-23FA-2390-355051497DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1199FEE5-D27A-23FA-2390-355051497DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1199FEE5-D27A-23FA-2390-355051497DA8}.Release|Any CPU.Build.0 = Release|Any CPU
{60E87902-3A99-5E21-375C-04DA40786B72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60E87902-3A99-5E21-375C-04DA40786B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60E87902-3A99-5E21-375C-04DA40786B72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60E87902-3A99-5E21-375C-04DA40786B72}.Release|Any CPU.Build.0 = Release|Any CPU
{4FD99934-3133-2E8A-276A-E08E935B2CDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FD99934-3133-2E8A-276A-E08E935B2CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4FD99934-3133-2E8A-276A-E08E935B2CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FD99934-3133-2E8A-276A-E08E935B2CDD}.Release|Any CPU.Build.0 = Release|Any CPU
{74B1E0E0-5325-F373-A45F-133D20B3FEB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74B1E0E0-5325-F373-A45F-133D20B3FEB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74B1E0E0-5325-F373-A45F-133D20B3FEB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74B1E0E0-5325-F373-A45F-133D20B3FEB4}.Release|Any CPU.Build.0 = Release|Any CPU
{6F95E6BA-B2FD-7AC8-B8EE-6E57DF2A7A49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F95E6BA-B2FD-7AC8-B8EE-6E57DF2A7A49}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F95E6BA-B2FD-7AC8-B8EE-6E57DF2A7A49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F95E6BA-B2FD-7AC8-B8EE-6E57DF2A7A49}.Release|Any CPU.Build.0 = Release|Any CPU
{A763CCAC-78B3-DD3D-AF3B-E1F7104C8523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A763CCAC-78B3-DD3D-AF3B-E1F7104C8523}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A763CCAC-78B3-DD3D-AF3B-E1F7104C8523}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A763CCAC-78B3-DD3D-AF3B-E1F7104C8523}.Release|Any CPU.Build.0 = Release|Any CPU
{04AE2971-1723-1774-7290-E3C1C16C005C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04AE2971-1723-1774-7290-E3C1C16C005C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04AE2971-1723-1774-7290-E3C1C16C005C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04AE2971-1723-1774-7290-E3C1C16C005C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BD91E3AB-01FA-4412-839E-69CC33529FB6}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,9 @@
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[program_notify]]></Event>
<NotifyId><![CDATA[data]]></NotifyId>
<NotifyScene>1</NotifyScene>
</xml>

View File

@ -0,0 +1,20 @@
{
"advanced_api_type": 1,
"custom_corpid": "wwxxx",
"buyer_userid": "xxxx",
"order_type": 1,
"chat_archive_api": {
"edition": 3,
"old_edition": 2,
"purchase_count": 100,
"take_effect_time": 1704038400,
"old_edition_info": {
"begin_time": 1704038000,
"end_time": 1704038000
},
"target_edition_info": {
"begin_time": 1704038000,
"end_time": 1704038000
}
}
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"order_id": "xxxx"
}

View File

@ -0,0 +1,4 @@
{
"advanced_api_type": 1,
"custom_corpid": "xxxxx"
}

View File

@ -0,0 +1,20 @@
{
"errcode": 0,
"errmsg": "ok",
"chat_archive_api_buy_info": {
"edition_list": [
{
"edition": 2,
"purchase_count": 100,
"begin_time": 1726588800,
"end_time": 1729180800
},
{
"edition": 3,
"purchase_count": 100,
"begin_time": 1726588800,
"end_time": 1729180800
}
]
}
}

View File

@ -0,0 +1,22 @@
{
"errcode": 0,
"errmsg": "ok",
"order": {
"advanced_api_type": 1,
"order_id": "xxxxx",
"order_type": 1,
"order_status": 1,
"custom_corpid": "wpxxxx",
"create_time": 150000000,
"buyer_userid": "xxx",
"paid_price": 10000,
"chat_archive_api": {
"edition": 2,
"purchase_count": 100,
"purchase_duration_days": 90,
"take_effect_time": 150000000,
"end_time": 150000000,
"original_price": 10010
}
}
}

View File

@ -0,0 +1,8 @@
{
"custom_corpid": "xxxxx",
"start_time": 1500000000,
"end_time": 1600000000,
"advanced_api_type": 1,
"cursor": "xxx",
"limit": 10
}

View File

@ -0,0 +1,14 @@
{
"errcode": 0,
"errmsg": "ok",
"next_cursor": "xxx",
"has_more": 1,
"order_list": [
{
"order_id": "xxx",
"order_type": 1,
"order_status": 1,
"create_time": 1704038400
}
]
}

View File

@ -0,0 +1,4 @@
{
"payer_userid": "USERID",
"order_id": "ORDERID"
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"debug_mode_status": 1
}

View File

@ -0,0 +1,4 @@
{
"program_id": "xxx",
"debug_token": "xxx"
}

View File

@ -0,0 +1,6 @@
{
"errcode": 0,
"errmsg": "ok",
"response_errcode": 0,
"response_data": "{\"output\":\"xxx\"}"
}

View File

@ -0,0 +1,5 @@
{
"program_id": "xxx",
"ability_id": "xxx",
"request_data": "{\"input\":\"xxx\"}"
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"jobid": "JOBID"
}

View File

@ -0,0 +1,6 @@
{
"program_id": "xxx",
"ability_id": "xxx",
"notify_id": "xxx",
"request_data": "{\"input\":\"xxx\"}"
}

View File

@ -0,0 +1,5 @@
{
"errcode": 0,
"errmsg": "ok",
"response_data": "{\"output\":\"xxx\"}"
}