diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaExtensions.cs index 99b72c55..ff6b6a49 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -324,6 +324,27 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [POST] /wxa/generatenfcscheme 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generateNFC.html + /// REF: https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/url-scheme/urlscheme.generateNFC.html + /// + /// + /// + /// + /// + public static async Task ExecuteWxaGenerateNFCSchemeAsync(this WechatApiClient client, Models.WxaGenerateNFCSchemeRequest 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", "generatenfcscheme") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } #endregion #region UrlLink diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.cs new file mode 100644 index 00000000..62bbef96 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/generatenfcscheme 接口的请求。 + /// + public class WxaGenerateNFCSchemeRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class MiniProgram : WxaGenerateSchemeRequest.Types.MiniProgram + { + } + } + + /// + /// 获取或设置跳转到的目标小程序信息。 + /// + [Newtonsoft.Json.JsonProperty("jump_wxa")] + [System.Text.Json.Serialization.JsonPropertyName("jump_wxa")] + public Types.MiniProgram MiniProgram { get; set; } = new Types.MiniProgram(); + + /// + /// 获取或设置设备 ID。 + /// + [Newtonsoft.Json.JsonProperty("model_id")] + [System.Text.Json.Serialization.JsonPropertyName("model_id")] + public string ModelId { get; set; } = string.Empty; + + /// + /// 获取或设置设备序列号。 + /// + [Newtonsoft.Json.JsonProperty("sn")] + [System.Text.Json.Serialization.JsonPropertyName("sn")] + public string? SerialNumber { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.cs new file mode 100644 index 00000000..89d39ed1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/generatenfcscheme 接口的响应。 + /// + public class WxaGenerateNFCSchemeResponse : WechatApiResponse + { + /// + /// 获取或设置生成的小程序 URL Scheme。 + /// + [Newtonsoft.Json.JsonProperty("openlink")] + [System.Text.Json.Serialization.JsonPropertyName("openlink")] + public string UrlScheme { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.json new file mode 100644 index 00000000..96f7ad9e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeRequest.json @@ -0,0 +1,8 @@ +{ + "jump_wxa": { + "path": "/pages/publishHomework/publishHomework", + "query": "" + }, + "sn": "xxx", + "model_id": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.json new file mode 100644 index 00000000..7e37ec33 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateNFCSchemeResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "openlink": "Scheme" +}