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 +}