diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenExtensions.cs index f9a397ed..d0aea8ca 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -108,5 +108,25 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [GET] /cgi-bin/open/sameentity 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/getBindOpenAccountEntity.html + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinOpenSameEntityAsync(this WechatApiClient client, Models.CgibinOpenSameEntityRequest 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.Get, "cgi-bin", "open", "sameentity") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityRequest.cs new file mode 100644 index 00000000..3fabcec6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /cgi-bin/open/sameentity 接口的请求。 + /// + public class CgibinOpenSameEntityRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityResponse.cs new file mode 100644 index 00000000..56a99520 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinOpen/CgibinOpenSameEntityResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [GET] /cgi-bin/open/sameentity 接口的响应。 + /// + public class CgibinOpenSameEntityResponse : WechatApiResponse + { + /// + /// 获取或设置是否相同主体。 + /// + [Newtonsoft.Json.JsonProperty("same_entity")] + [System.Text.Json.Serialization.JsonPropertyName("same_entity")] + public bool IsSameEntity { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenSameEntityResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenSameEntityResponse.json new file mode 100644 index 00000000..d7a8d73a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenSameEntityResponse.json @@ -0,0 +1,5 @@ +{ + "same_entity": false, + "errcode": 0, + "errmsg": "ok" +}