From 6d17a6787543a051c4e3beb0961ffd52a4464e56 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 14 Jan 2022 12:42:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E6=8D=A2?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E6=89=8B=E6=9C=BA=E5=8F=B7=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...atApiClientExecuteWxaBusinessExtensions.cs | 22 +++++- .../WxaBusinessGetUserPhoneNumberRequest.cs | 18 +++++ .../WxaBusinessGetUserPhoneNumberResponse.cs | 73 +++++++++++++++++++ .../WxaBusinessGetUserPhoneNumberRequest.json | 3 + ...WxaBusinessGetUserPhoneNumberResponse.json | 13 ++++ 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs index 55e280de..b6a44646 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs @@ -35,7 +35,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - /// /// 异步调用 [POST] /wxa/business/checkencryptedmsg 接口。 /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/user-info/auth.checkEncryptedData.html @@ -57,6 +56,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /wxa/business/getuserphonenumber 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html + /// REF: https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html + /// + /// + /// + /// + /// + public static async Task ExecuteWxaBusinessGetUserPhoneNumberAsync(this WechatApiClient client, Models.WxaBusinessGetUserPhoneNumberRequest 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, "wxa", "business", "getuserphonenumber") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #region GameMatch /// /// 异步调用 [POST] /wxa/business/gamematch/creatematchrule 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.cs new file mode 100644 index 00000000..18b98256 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/business/getuserphonenumber 接口的请求。 + /// + public class WxaBusinessGetUserPhoneNumberRequest : WechatApiRequest + { + /// + /// 获取或设置手机号获取凭证。 + /// + [Newtonsoft.Json.JsonProperty("code")] + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string Code { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.cs new file mode 100644 index 00000000..2acfb389 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/business/getuserphonenumber 接口的响应。 + /// + public class WxaBusinessGetUserPhoneNumberResponse : WechatApiResponse + { + public static class Types + { + public class PhoneInfo + { + public static class Types + { + public class Watermark + { + /// + /// 获取或设置小程序 AppId + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置用户获取手机号操作的时间戳。 + /// + [Newtonsoft.Json.JsonProperty("timestamp")] + [System.Text.Json.Serialization.JsonPropertyName("timestamp")] + public long Timestamp { get; set; } + } + } + + /// + /// 获取或设置用户绑定的手机号。 + /// + [Newtonsoft.Json.JsonProperty("phoneNumber")] + [System.Text.Json.Serialization.JsonPropertyName("phoneNumber")] + public string PhoneNumber { get; set; } = default!; + + /// + /// 获取或设置没有区号的手机号。 + /// + [Newtonsoft.Json.JsonProperty("purePhoneNumber")] + [System.Text.Json.Serialization.JsonPropertyName("purePhoneNumber")] + public string PurePhoneNumber { get; set; } = default!; + + /// + /// 获取或设置区号。 + /// + [Newtonsoft.Json.JsonProperty("countryCode")] + [System.Text.Json.Serialization.JsonPropertyName("countryCode")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringConverter))] + public string CountryCode { get; set; } = default!; + + /// + /// 获取或设置数据水印。 + /// + [Newtonsoft.Json.JsonProperty("watermark")] + [System.Text.Json.Serialization.JsonPropertyName("watermark")] + public Types.Watermark Watermark { get; set; } = default!; + } + } + + /// + /// 获取或设置用户手机号信息。 + /// + [Newtonsoft.Json.JsonProperty("phone_info")] + [System.Text.Json.Serialization.JsonPropertyName("phone_info")] + public Types.PhoneInfo PhoneInfo { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.json new file mode 100644 index 00000000..0da9fd6c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberRequest.json @@ -0,0 +1,3 @@ +{ + "code": "e31968a7f94cc5ee25fafc2aef2773f0bb8c3937b22520eb8ee345274d00c144" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.json new file mode 100644 index 00000000..261e82bd --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/WxaBusinessGetUserPhoneNumberResponse.json @@ -0,0 +1,13 @@ +{ + "errcode": 0, + "errmsg": "ok", + "phone_info": { + "phoneNumber": "xxxxxx", + "purePhoneNumber": "xxxxxx", + "countryCode": 86, + "watermark": { + "timestamp": 1637744274, + "appid": "xxxx" + } + } +} \ No newline at end of file