diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeEditionEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeEditionEvent.cs
new file mode 100644
index 00000000..1ffaeb0d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeEditionEvent.cs
@@ -0,0 +1,21 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Events
+{
+ ///
+ /// 表示 INFO.change_editon 事件的数据。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91933
+ ///
+ public class ChangeEditionEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable
+ {
+ ///
+ /// 获取或设置第三方应用的 SuiteId。
+ ///
+ [System.Xml.Serialization.XmlElement("SuiteId")]
+ public string SuiteId { get; set; } = default!;
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [System.Xml.Serialization.XmlElement("PaidCorpId")]
+ public string PayerCorpId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeOrderEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeOrderEvent.cs
new file mode 100644
index 00000000..33b54b64
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/ChangeOrderEvent.cs
@@ -0,0 +1,33 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Events
+{
+ ///
+ /// 表示 INFO.change_order 事件的数据。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91930
+ ///
+ public class ChangeOrderEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable
+ {
+ ///
+ /// 获取或设置第三方应用的 SuiteId。
+ ///
+ [System.Xml.Serialization.XmlElement("SuiteId")]
+ public string SuiteId { get; set; } = default!;
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [System.Xml.Serialization.XmlElement("PaidCorpId")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置原订单 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("OldOrderId")]
+ public string OldOrderId { get; set; }= default!;
+
+ ///
+ /// 获取或设置新订单 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("NewOrderId")]
+ public string NewOrderId { get; set; }= default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/OpenOrderEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/OpenOrderEvent.cs
new file mode 100644
index 00000000..eb353134
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/OpenOrderEvent.cs
@@ -0,0 +1,33 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Events
+{
+ ///
+ /// 表示 INFO.open_order 事件的数据。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91929
+ ///
+ public class OpenOrderEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable
+ {
+ ///
+ /// 获取或设置第三方应用的 SuiteId。
+ ///
+ [System.Xml.Serialization.XmlElement("SuiteId")]
+ public string SuiteId { get; set; } = default!;
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [System.Xml.Serialization.XmlElement("PaidCorpId")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("OrderId")]
+ public string OrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置操作员 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("OperatorId", IsNullable = true)]
+ public string? OperatorId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/PayForAppSuccessEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/PayForAppSuccessEvent.cs
new file mode 100644
index 00000000..800757ae
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/PayForAppSuccessEvent.cs
@@ -0,0 +1,27 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Events
+{
+ ///
+ /// 表示 INFO.pay_for_app_success 事件的数据。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91931
+ ///
+ public class PayForAppSuccessEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable
+ {
+ ///
+ /// 获取或设置第三方应用的 SuiteId。
+ ///
+ [System.Xml.Serialization.XmlElement("SuiteId")]
+ public string SuiteId { get; set; } = default!;
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [System.Xml.Serialization.XmlElement("PaidCorpId")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("OrderId")]
+ public string OrderId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/RefundEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/RefundEvent.cs
new file mode 100644
index 00000000..fc7a1662
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/Order/RefundEvent.cs
@@ -0,0 +1,27 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Events
+{
+ ///
+ /// 表示 INFO.refund 事件的数据。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91932
+ ///
+ public class RefundEvent : WechatWorkEvent, WechatWorkEvent.Serialization.IXmlSerializable
+ {
+ ///
+ /// 获取或设置第三方应用的 SuiteId。
+ ///
+ [System.Xml.Serialization.XmlElement("SuiteId")]
+ public string SuiteId { get; set; } = default!;
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [System.Xml.Serialization.XmlElement("PaidCorpId")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [System.Xml.Serialization.XmlElement("OrderId")]
+ public string OrderId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs
index 0d8087de..43860e16 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinServiceExtensions.cs
@@ -717,5 +717,67 @@ namespace SKIT.FlurlHttpClient.Wechat.Work
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
+
+ #region Order
+ ///
+ /// 异步调用 [POST] /cgi-bin/service/prolong_try 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91913
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinServiceProlongTryAsync(this WechatWorkClient client, Models.CgibinServiceProlongTryRequest 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, "cgi-bin", "service", "prolong_try")
+ .SetQueryParam("suite_access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/service/get_order_list 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91910
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinServiceGetOrderListAsync(this WechatWorkClient client, Models.CgibinServiceGetOrderListRequest 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, "cgi-bin", "service", "get_order_list")
+ .SetQueryParam("suite_access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/service/get_order 接口。
+ /// REF: https://developer.work.weixin.qq.com/document/path/91909
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinServiceGetOrderAsync(this WechatWorkClient client, Models.CgibinServiceGetOrderRequest 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, "cgi-bin", "service", "get_order")
+ .SetQueryParam("suite_access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
}
}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAppQrcodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAppQrcodeRequest.cs
index a96313a3..c01582db 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAppQrcodeRequest.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAppQrcodeRequest.cs
@@ -1,4 +1,6 @@
-namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
///
/// 表示 [POST] /cgi-bin/service/get_app_qrcode 接口的请求。
@@ -6,8 +8,9 @@
public class CgibinServiceGetAppQrcodeRequest : WechatWorkRequest
{
///
- /// 获取或设置第三方应用 ID。
+ /// 获取或设置第三方套件应用 ID。
///
+ [Obsolete("相关接口或字段于 2020-01-13 下线。")]
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public int? AppId { get; set; }
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
index e3a7f43e..c4d820da 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/CgibinServiceGetAuthInfoResponse.cs
@@ -1,4 +1,6 @@
-namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
{
///
/// 表示 [POST] /cgi-bin/service/get_auth_info 接口的响应。
@@ -211,8 +213,9 @@
public string RoundLogoUrl { get; set; } = default!;
///
- /// 获取或设置 AppId。
+ /// 获取或设置第三方套件应用 AppId。
///
+ [Obsolete("相关接口或字段于 2020-01-13 下线。")]
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public int? AppId { get; set; }
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListRequest.cs
new file mode 100644
index 00000000..db400af5
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListRequest.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/get_order_list 接口的请求。
+ ///
+ public class CgibinServiceGetOrderListRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置起始时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("start_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("start_time")]
+ public long StartTimestamp { get; set; }
+
+ ///
+ /// 获取或设置终止时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("end_time")]
+ public long EndTimestamp { get; set; }
+
+ ///
+ /// 获取或设置测试模式。
+ ///
+ [Newtonsoft.Json.JsonProperty("test_mode")]
+ [System.Text.Json.Serialization.JsonPropertyName("test_mode")]
+ public int? TestMode { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListResponse.cs
new file mode 100644
index 00000000..b2778982
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderListResponse.cs
@@ -0,0 +1,185 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/get_order_list 接口的响应。
+ ///
+ public class CgibinServiceGetOrderListResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class Order
+ {
+ public static class Types
+ {
+ public class DealerCorp : CgibinServiceGetAuthInfoResponse.Types.DealerCorp
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("orderid")]
+ [System.Text.Json.Serialization.JsonPropertyName("orderid")]
+ public string OrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_status")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_status")]
+ public int OrderStatus { get; set; }
+
+ ///
+ /// 获取或设置订单类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_type")]
+ public int OrderType { get; set; }
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [Newtonsoft.Json.JsonProperty("paid_corpid")]
+ [System.Text.Json.Serialization.JsonPropertyName("paid_corpid")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置下单方 CorpId。
+ ///
+ [Newtonsoft.Json.JsonProperty("operator_corpid")]
+ [System.Text.Json.Serialization.JsonPropertyName("operator_corpid")]
+ public string? OperatorCorpId { get; set; }
+
+ ///
+ /// 获取或设置操作员 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("operator_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("operator_id")]
+ public string? OperatorId { get; set; }
+
+ ///
+ /// 获取或设置第三方应用 SuiteId。
+ ///
+ [Newtonsoft.Json.JsonProperty("suiteid")]
+ [System.Text.Json.Serialization.JsonPropertyName("suiteid")]
+ public string? SuiteId { get; set; }
+
+ ///
+ /// 获取或设置第三方套件应用 ID。
+ ///
+ [Obsolete("相关接口或字段于 2020-01-13 下线。")]
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public int AppId { get; set; }
+
+ ///
+ /// 获取或设置版本 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("edition_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("edition_id")]
+ public string EditionId { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("edition_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("edition_name")]
+ public string EditionName { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单价格(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("price")]
+ [System.Text.Json.Serialization.JsonPropertyName("price")]
+ public int Price { get; set; }
+
+ ///
+ /// 获取或设置购买的人数。
+ ///
+ [Newtonsoft.Json.JsonProperty("user_count")]
+ [System.Text.Json.Serialization.JsonPropertyName("user_count")]
+ public int PaidUserCount { get; set; }
+
+ ///
+ /// 获取或设置购买的天数。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_period")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_period")]
+ public int PaidDayCount { get; set; }
+
+ ///
+ /// 获取或设置下单时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_time")]
+ public long CreateTimestamp { get; set; }
+
+ ///
+ /// 获取或设置付款时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("paid_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("paid_time")]
+ public long PayTimestamp { get; set; }
+
+ ///
+ /// 获取或设置购买生效期的开始时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("begin_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("begin_time")]
+ public long BeginTimestamp { get; set; }
+
+ ///
+ /// 获取或设置购买生效期的结束时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("end_time")]
+ public long EndTimestamp { get; set; }
+
+ ///
+ /// 获取或设置下单来源。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_from")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_from")]
+ public int? OrderFrom { get; set; }
+
+ ///
+ /// 获取或设置服务商分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_share_amount")]
+ public int? ServiceShareAmount { get; set; }
+
+ ///
+ /// 获取或设置平台分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("platform_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("platform_share_amount")]
+ public int? PlatformShareAmount { get; set; }
+
+ ///
+ /// 获取或设置代理商分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("dealer_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("dealer_share_amount")]
+ public int? DealerShareAmount { get; set; }
+
+ ///
+ /// 获取或设置代理服务商企业信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("dealer_corp_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")]
+ public Types.DealerCorp? DealerCorp { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置订单列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_list")]
+ public Types.Order[] OrderList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderRequest.cs
new file mode 100644
index 00000000..e8311d6e
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/get_order 接口的请求。
+ ///
+ public class CgibinServiceGetOrderRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("orderid")]
+ [System.Text.Json.Serialization.JsonPropertyName("orderid")]
+ public string OrderId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderResponse.cs
new file mode 100644
index 00000000..b9cc0c14
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceGetOrderResponse.cs
@@ -0,0 +1,172 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/get_order 接口的响应。
+ ///
+ public class CgibinServiceGetOrderResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class DealerCorp : CgibinServiceGetAuthInfoResponse.Types.DealerCorp
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置订单 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("orderid")]
+ [System.Text.Json.Serialization.JsonPropertyName("orderid")]
+ public string OrderId { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单状态。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_status")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_status")]
+ public int OrderStatus { get; set; }
+
+ ///
+ /// 获取或设置订单类型。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_type")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_type")]
+ public int OrderType { get; set; }
+
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [Newtonsoft.Json.JsonProperty("paid_corpid")]
+ [System.Text.Json.Serialization.JsonPropertyName("paid_corpid")]
+ public string PayerCorpId { get; set; } = default!;
+
+ ///
+ /// 获取或设置下单方 CorpId。
+ ///
+ [Newtonsoft.Json.JsonProperty("operator_corpid")]
+ [System.Text.Json.Serialization.JsonPropertyName("operator_corpid")]
+ public string? OperatorCorpId { get; set; }
+
+ ///
+ /// 获取或设置操作员 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("operator_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("operator_id")]
+ public string? OperatorId { get; set; }
+
+ ///
+ /// 获取或设置第三方应用 SuiteId。
+ ///
+ [Newtonsoft.Json.JsonProperty("suiteid")]
+ [System.Text.Json.Serialization.JsonPropertyName("suiteid")]
+ public string? SuiteId { get; set; }
+
+ ///
+ /// 获取或设置第三方套件应用 ID。
+ ///
+ [Obsolete("相关接口或字段于 2020-01-13 下线。")]
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public int AppId { get; set; }
+
+ ///
+ /// 获取或设置版本 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("edition_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("edition_id")]
+ public string EditionId { get; set; } = default!;
+
+ ///
+ /// 获取或设置版本名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("edition_name")]
+ [System.Text.Json.Serialization.JsonPropertyName("edition_name")]
+ public string EditionName { get; set; } = default!;
+
+ ///
+ /// 获取或设置订单价格(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("price")]
+ [System.Text.Json.Serialization.JsonPropertyName("price")]
+ public int Price { get; set; }
+
+ ///
+ /// 获取或设置购买的人数。
+ ///
+ [Newtonsoft.Json.JsonProperty("user_count")]
+ [System.Text.Json.Serialization.JsonPropertyName("user_count")]
+ public int PaidUserCount { get; set; }
+
+ ///
+ /// 获取或设置购买的天数。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_period")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_period")]
+ public int PaidDayCount { get; set; }
+
+ ///
+ /// 获取或设置下单时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_time")]
+ public long CreateTimestamp { get; set; }
+
+ ///
+ /// 获取或设置付款时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("paid_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("paid_time")]
+ public long PayTimestamp { get; set; }
+
+ ///
+ /// 获取或设置购买生效期的开始时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("begin_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("begin_time")]
+ public long BeginTimestamp { get; set; }
+
+ ///
+ /// 获取或设置购买生效期的结束时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("end_time")]
+ public long EndTimestamp { get; set; }
+
+ ///
+ /// 获取或设置下单来源。
+ ///
+ [Newtonsoft.Json.JsonProperty("order_from")]
+ [System.Text.Json.Serialization.JsonPropertyName("order_from")]
+ public int? OrderFrom { get; set; }
+
+ ///
+ /// 获取或设置服务商分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("service_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("service_share_amount")]
+ public int? ServiceShareAmount { get; set; }
+
+ ///
+ /// 获取或设置平台分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("platform_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("platform_share_amount")]
+ public int? PlatformShareAmount { get; set; }
+
+ ///
+ /// 获取或设置代理商分成金额(单位:分)。
+ ///
+ [Newtonsoft.Json.JsonProperty("dealer_share_amount")]
+ [System.Text.Json.Serialization.JsonPropertyName("dealer_share_amount")]
+ public int? DealerShareAmount { get; set; }
+
+ ///
+ /// 获取或设置代理服务商企业信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("dealer_corp_info")]
+ [System.Text.Json.Serialization.JsonPropertyName("dealer_corp_info")]
+ public Types.DealerCorp? DealerCorp { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryRequest.cs
new file mode 100644
index 00000000..f5639ce4
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryRequest.cs
@@ -0,0 +1,32 @@
+using System;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/prolong_try 接口的请求。
+ ///
+ public class CgibinServiceProlongTryRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置购买方 CorpId。
+ ///
+ [Newtonsoft.Json.JsonProperty("buyer_corpid")]
+ [System.Text.Json.Serialization.JsonPropertyName("buyer_corpid")]
+ public string BuyerCorpId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置延长天数。
+ ///
+ [Newtonsoft.Json.JsonProperty("prolong_days")]
+ [System.Text.Json.Serialization.JsonPropertyName("prolong_days")]
+ public int ProlongDays { get; set; }
+
+ ///
+ /// 获取或设置第三方套件应用 ID。
+ ///
+ [Obsolete("相关接口或字段于 2020-01-13 下线。")]
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public int? AppId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryResponse.cs
new file mode 100644
index 00000000..5a853a75
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinService/Order/CgibinServiceProlongTryResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/service/prolong_try 接口的响应。
+ ///
+ public class CgibinServiceProlongTryResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置试用到期时间戳。
+ ///
+ [Newtonsoft.Json.JsonProperty("try_end_time")]
+ [System.Text.Json.Serialization.JsonPropertyName("try_end_time")]
+ public long TryEndTimestamp { get; set; }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeEditionEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeEditionEvent.xml
new file mode 100644
index 00000000..982162a8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeEditionEvent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+ 1403610513
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeOrderEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeOrderEvent.xml
new file mode 100644
index 00000000..eaae594d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/ChangeOrderEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ 1403610513
+
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/OpenOrderEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/OpenOrderEvent.xml
new file mode 100644
index 00000000..98b2074b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/OpenOrderEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ 1403610513
+
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/PayForAppSuccessEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/PayForAppSuccessEvent.xml
new file mode 100644
index 00000000..e93e79fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/PayForAppSuccessEvent.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ 1403610513
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/RefundEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/RefundEvent.xml
new file mode 100644
index 00000000..789315df
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/Order/RefundEvent.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ 1403610513
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListRequest.json
new file mode 100644
index 00000000..3aeb63a3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListRequest.json
@@ -0,0 +1,5 @@
+{
+ "start_time": 1542091572,
+ "end_time": 1542177972,
+ "test_mode": 1
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListResponse.json
new file mode 100644
index 00000000..a6b10b63
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderListResponse.json
@@ -0,0 +1,33 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_list": [
+ {
+ "orderid": "2018091822ks1sd3s",
+ "order_status": 1,
+ "order_type": 1,
+ "paid_corpid": "wwfedd7e5292d63aaa",
+ "operator_id": "zhangsan",
+ "suiteid": "wx67cce113441cc7a6",
+ "appid": 1,
+ "edition_id": "RLS65535",
+ "edition_name": "协同版",
+ "price": 100,
+ "user_count": 1000,
+ "order_period": 365,
+ "order_time": 1533702999,
+ "paid_time": 1533702910,
+ "begin_time": 1533702910,
+ "end_time": 1553515904,
+ "order_from": 1,
+ "operator_corpid": "wwfedd7e5292d63aaa",
+ "service_share_amount": 60,
+ "platform_share_amount": 10,
+ "dealer_share_amount": 30,
+ "dealer_corp_info": {
+ "corpid": "xxxx",
+ "corp_name": "name"
+ }
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderRequest.json
new file mode 100644
index 00000000..2aa219b5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderRequest.json
@@ -0,0 +1,3 @@
+{
+ "orderid": "2018091822ks1sd3s"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderResponse.json
new file mode 100644
index 00000000..63ebf947
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceGetOrderResponse.json
@@ -0,0 +1,29 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "orderid": "2018091822ks1sd3s",
+ "order_status": 1,
+ "order_type": 1,
+ "paid_corpid": "wwfedd7e5291d63aaa",
+ "operator_id": "zhangsan",
+ "suiteid": "wx67cce113441ccaaa",
+ "appid": 1,
+ "edition_id": "RLS65535",
+ "edition_name": "协同版",
+ "price": 100,
+ "user_count": 1000,
+ "order_period": 365,
+ "order_time": 1533702999,
+ "paid_time": 1533702910,
+ "begin_time": 1533702910,
+ "end_time": 1553515904,
+ "order_from": 1,
+ "operator_corpid": "wwfedd7e5292d63aaa",
+ "service_share_amount": 60,
+ "platform_share_amount": 10,
+ "dealer_share_amount": 30,
+ "dealer_corp_info": {
+ "corpid": "xxxx",
+ "corp_name": "name"
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryRequest.json
new file mode 100644
index 00000000..435d6c89
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryRequest.json
@@ -0,0 +1,5 @@
+{
+ "buyer_corpid": "wx7da9abf8ac62baaa",
+ "prolong_days": 7,
+ "appid": 1
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryResponse.json
new file mode 100644
index 00000000..1d483ad9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinService/Order/CgibinServiceProlongTryResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "try_end_time": 1565152189
+}