diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/ImageMessageEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/ImageMessageEvent.cs index 07c733a6..5ddbfb27 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/ImageMessageEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/ImageMessageEvent.cs @@ -45,5 +45,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events [System.Text.Json.Serialization.JsonPropertyName("Idx")] [System.Xml.Serialization.XmlElement("Idx", IsNullable = true)] public int? Index { get; set; } + + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("BusinessId")] + [System.Text.Json.Serialization.JsonPropertyName("BusinessId")] + [System.Xml.Serialization.XmlElement("BusinessId", IsNullable = true)] + public long? BusinessId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/LocationMessageEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/LocationMessageEvent.cs index 6bec6ae6..d5f2ac5a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/LocationMessageEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/LocationMessageEvent.cs @@ -61,5 +61,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events [System.Text.Json.Serialization.JsonPropertyName("Idx")] [System.Xml.Serialization.XmlElement("Idx", IsNullable = true)] public int? Index { get; set; } + + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("BusinessId")] + [System.Text.Json.Serialization.JsonPropertyName("BusinessId")] + [System.Xml.Serialization.XmlElement("BusinessId", IsNullable = true)] + public long? BusinessId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/TextMessageEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/TextMessageEvent.cs index c6848fe3..7b8925cd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/TextMessageEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/TextMessageEvent.cs @@ -37,5 +37,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events [System.Text.Json.Serialization.JsonPropertyName("Idx")] [System.Xml.Serialization.XmlElement("Idx", IsNullable = true)] public int? Index { get; set; } + + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("BusinessId")] + [System.Text.Json.Serialization.JsonPropertyName("BusinessId")] + [System.Xml.Serialization.XmlElement("BusinessId", IsNullable = true)] + public long? BusinessId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VideoMessageEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VideoMessageEvent.cs index ee9ccfb1..2908adfc 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VideoMessageEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VideoMessageEvent.cs @@ -45,5 +45,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events [System.Text.Json.Serialization.JsonPropertyName("Idx")] [System.Xml.Serialization.XmlElement("Idx", IsNullable = true)] public int? Index { get; set; } + + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("BusinessId")] + [System.Text.Json.Serialization.JsonPropertyName("BusinessId")] + [System.Xml.Serialization.XmlElement("BusinessId", IsNullable = true)] + public long? BusinessId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VoiceMessageEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VoiceMessageEvent.cs index 3aa0b411..71e1599c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VoiceMessageEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpMessage/VoiceMessageEvent.cs @@ -45,5 +45,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events [System.Text.Json.Serialization.JsonPropertyName("Idx")] [System.Xml.Serialization.XmlElement("Idx", IsNullable = true)] public int? Index { get; set; } + + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("BusinessId")] + [System.Text.Json.Serialization.JsonPropertyName("BusinessId")] + [System.Xml.Serialization.XmlElement("BusinessId", IsNullable = true)] + public long? BusinessId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs index 372b0c4b..1be16184 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/MpReply/TransferCustomerServiceReply.cs @@ -3,6 +3,7 @@ /// /// 表示被动回复转发消息的数据。 /// REF: https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Forwarding_of_messages_to_service_center.html + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%B0%86%E6%B6%88%E6%81%AF%E8%BD%AC%E5%8F%91%E5%88%B0%E5%AE%A2%E6%9C%8D /// public class TransferCustomerServiceReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinBusinessExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinBusinessExtensions.cs new file mode 100644 index 00000000..9f9703a2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinBusinessExtensions.cs @@ -0,0 +1,92 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.Api +{ + public static class WechatApiClientExecuteCgibinBusinessExtensions + { + /// + /// 异步调用 [POST] /cgi-bin/business/register 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%88%9B%E5%BB%BA%E5%95%86%E6%88%B7 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinBusinessRegisterAsync(this WechatApiClient client, Models.CgibinBusinessRegisterRequest 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", "business", "register") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/business/update 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E6%9B%B4%E6%96%B0%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinBusinessUpdateAsync(this WechatApiClient client, Models.CgibinBusinessUpdateRequest 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", "business", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/business/get 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E6%8B%89%E5%8F%96%E5%8D%95%E4%B8%AA%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinBusinessGetAsync(this WechatApiClient client, Models.CgibinBusinessGetRequest 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", "business", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/business/list 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E6%8B%89%E5%8F%96%E5%A4%9A%E4%B8%AA%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinBusinessListAsync(this WechatApiClient client, Models.CgibinBusinessListRequest 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", "business", "list") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageCustomExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageCustomExtensions.cs index 2bbd583b..44f3051a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageCustomExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageCustomExtensions.cs @@ -50,5 +50,47 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + #region Business + /// + /// 异步调用 [POST] /cgi-bin/message/custom/business/send 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%8F%91%E9%80%81%E5%AE%A2%E6%9C%8D%E6%B6%88%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageCustomBusinessSendAsync(this WechatApiClient client, Models.CgibinMessageCustomBusinessSendRequest 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", "message", "custom", "business", "send") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/message/custom/business/typing 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%AE%A2%E6%9C%8D%E8%BE%93%E5%85%A5%E7%8A%B6%E6%80%81 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageCustomBusinessTypingAsync(this WechatApiClient client, Models.CgibinMessageCustomBusinessTypingRequest 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", "message", "custom", "business", "typing") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetRequest.cs new file mode 100644 index 00000000..528c00b1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/get 接口的请求。 + /// + public class CgibinBusinessGetRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置商户 ID。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("business_id")] + [System.Text.Json.Serialization.JsonPropertyName("business_id")] + public long? BusinessId { get; set; } + + /// + /// 获取或设置商户账号。与字段 二选一。 + /// + [Newtonsoft.Json.JsonProperty("account_name")] + [System.Text.Json.Serialization.JsonPropertyName("account_name")] + public string? AccountName { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetResponse.cs new file mode 100644 index 00000000..6e33f366 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessGetResponse.cs @@ -0,0 +1,49 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/get 接口的响应。 + /// + public class CgibinBusinessGetResponse : WechatApiResponse + { + public static class Types + { + public class BusinessInfo + { + /// + /// 获取或设置商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("business_id")] + [System.Text.Json.Serialization.JsonPropertyName("business_id")] + public long BusinessId { get; set; } + + /// + /// 获取或设置商户账号。 + /// + [Newtonsoft.Json.JsonProperty("account_name")] + [System.Text.Json.Serialization.JsonPropertyName("account_name")] + public string AccountName { get; set; } = default!; + + /// + /// 获取或设置商户昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string Nickname { get; set; } = default!; + + /// + /// 获取或设置商户头像 URL。 + /// + [Newtonsoft.Json.JsonProperty("icon_url")] + [System.Text.Json.Serialization.JsonPropertyName("icon_url")] + public string IconUrl { get; set; } = default!; + } + } + + /// + /// 获取或设置商户信息。 + /// + [Newtonsoft.Json.JsonProperty("business_info")] + [System.Text.Json.Serialization.JsonPropertyName("business_info")] + public Types.BusinessInfo BusinessInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListRequest.cs new file mode 100644 index 00000000..07a7507d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListRequest.cs @@ -0,0 +1,23 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/list 接口的请求。 + /// + public class CgibinBusinessListRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListResponse.cs new file mode 100644 index 00000000..4ea96e20 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessListResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/list 接口的响应。 + /// + public class CgibinBusinessListResponse : WechatApiResponse + { + public static class Types + { + public class BusinessInfo : CgibinBusinessGetResponse.Types.BusinessInfo + { + } + } + + /// + /// 获取或设置商户列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public Types.BusinessInfo[] BusinessList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterRequest.cs new file mode 100644 index 00000000..fd5845dc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/register 接口的请求。 + /// + public class CgibinBusinessRegisterRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置商户账号。 + /// + [Newtonsoft.Json.JsonProperty("account_name")] + [System.Text.Json.Serialization.JsonPropertyName("account_name")] + public string AccountName { get; set; } = string.Empty; + + /// + /// 获取或设置商户昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string Nickname { get; set; } = string.Empty; + + /// + /// 获取或设置商户头像 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("icon_media_id")] + [System.Text.Json.Serialization.JsonPropertyName("icon_media_id")] + public string IconMediaId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterResponse.cs new file mode 100644 index 00000000..5c129e88 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessRegisterResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/register 接口的响应。 + /// + public class CgibinBusinessRegisterResponse : WechatApiResponse + { + /// + /// 获取或设置商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("business_id")] + [System.Text.Json.Serialization.JsonPropertyName("business_id")] + public long BusinessId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateRequest.cs new file mode 100644 index 00000000..df75a587 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/update 接口的请求。 + /// + public class CgibinBusinessUpdateRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("business_id")] + [System.Text.Json.Serialization.JsonPropertyName("business_id")] + public long BusinessId { get; set; } + + /// + /// 获取或设置商户昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string? Nickname { get; set; } + + /// + /// 获取或设置商户头像 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("icon_media_id")] + [System.Text.Json.Serialization.JsonPropertyName("icon_media_id")] + public string? IconMediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateResponse.cs new file mode 100644 index 00000000..93564e18 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinBusiness/CgibinBusinessUpdateResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/business/update 接口的响应。 + /// + public class CgibinBusinessUpdateResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.cs new file mode 100644 index 00000000..c80b4bb3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/custom/business/send 接口的请求。 + /// + public class CgibinMessageCustomBusinessSendRequest : CgibinMessageCustomSendRequest, IInferable + { + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("businessid")] + [System.Text.Json.Serialization.JsonPropertyName("businessid")] + public long BusinessId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendResponse.cs new file mode 100644 index 00000000..71e5f109 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/custom/business/send 接口的响应。 + /// + public class CgibinMessageCustomBusinessSendResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.cs new file mode 100644 index 00000000..fc8b70fa --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/custom/business/typing 接口的请求。 + /// + public class CgibinMessageCustomBusinessTypingRequest : CgibinMessageCustomTypingRequest, IInferable + { + /// + /// 获取或设置客服子商户 ID。 + /// + [Newtonsoft.Json.JsonProperty("businessid")] + [System.Text.Json.Serialization.JsonPropertyName("businessid")] + public long BusinessId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingResponse.cs new file mode 100644 index 00000000..c008ad2a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/custom/business/typing 接口的响应。 + /// + public class CgibinMessageCustomBusinessTypingResponse : WechatApiResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.json new file mode 100644 index 00000000..b544c0b0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.json @@ -0,0 +1,9 @@ +{ + "ToUserName": "toUser", + "FromUserName": "fromUser", + "CreateTime": 1482048670, + "MsgType": "text", + "Content": "this is a test", + "MsgId": 1234567890123456, + "BusinessId": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml index 6a1a2e8a..66314ae8 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml @@ -5,4 +5,5 @@ 1234567890123456 + 1 diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetRequest.json new file mode 100644 index 00000000..51bb9849 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetRequest.json @@ -0,0 +1,4 @@ +{ + "business_id": 1, + "account_name": "apple" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetResponse.json new file mode 100644 index 00000000..ec83d614 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessGetResponse.json @@ -0,0 +1,8 @@ +{ + "business_info": { + "business_id": 1, + "account_name": "apple", + "nickname": "苹果", + "icon_url": "icon_url" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListRequest.json new file mode 100644 index 00000000..eca139b1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListRequest.json @@ -0,0 +1,4 @@ +{ + "offset": 0, + "count": 100 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListResponse.json new file mode 100644 index 00000000..76fdf30d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessListResponse.json @@ -0,0 +1,16 @@ +{ + "list": [ + { + "business_id": 1, + "account_name": "apple", + "nickname": "苹果", + "icon_url": "icon_url" + }, + { + "business_id": 2, + "account_name": "apple", + "nickname": "苹果", + "icon_url": "icon_url" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterRequest.json new file mode 100644 index 00000000..d5aad0ff --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterRequest.json @@ -0,0 +1,5 @@ +{ + "account_name": "apple", + "nickname": "苹果", + "icon_media_id": "media_id" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterResponse.json new file mode 100644 index 00000000..bf78df57 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessRegisterResponse.json @@ -0,0 +1,3 @@ +{ + "business_id": 1 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessUpdateRequest.json new file mode 100644 index 00000000..e3f2b7d6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinBusiness/CgibinBusinessUpdateRequest.json @@ -0,0 +1,5 @@ +{ + "business_id": 1, + "nickname": "苹果", + "icon_media_id": "" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.json new file mode 100644 index 00000000..c4062ed6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessSendRequest.json @@ -0,0 +1,8 @@ +{ + "touser": "OPENID", + "businessid": 1, + "msgtype": "text", + "text": { + "content": "Hello World" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.json new file mode 100644 index 00000000..8d664333 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/Business/CgibinMessageCustomBusinessTypingRequest.json @@ -0,0 +1,5 @@ +{ + "businessid": 1, + "touser": "OPENID", + "command": "Typing" +}