From d6e560e1d30bd6af259b0c07ffb51b9caf8ab925 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期四, 15 八月 2024 10:17:04 +0800 Subject: [PATCH] 萨达 --- cylsg/EzWechat/WechatService.cs | 83 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 78 insertions(+), 5 deletions(-) diff --git a/cylsg/EzWechat/WechatService.cs b/cylsg/EzWechat/WechatService.cs index cc1cf84..b0d3e4b 100644 --- a/cylsg/EzWechat/WechatService.cs +++ b/cylsg/EzWechat/WechatService.cs @@ -1,26 +1,35 @@ -锘縰sing Furion; +锘縰sing EzCoreNet.Redis; +using Furion; +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Furion.FriendlyException; +using Microsoft.Extensions.Options; using SKIT.FlurlHttpClient.Wechat.Api; using SKIT.FlurlHttpClient.Wechat.Api.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace EzWechat { - public class WechatService:IWechatService + public class WechatService:IWechatService ,IScoped { + private readonly WechatApiClient _client; + private readonly IEzCoreNetRedisService _redisService; - public WechatService() { - + public WechatService(IEzCoreNetRedisService ezCoreNetRedis) { + /* 浠ュ叕浼楀彿鑾峰彇鐢ㄦ埛淇℃伅鎺ュ彛涓轰緥 */ var request = new WechatApiClientOptions() { AppId = App.Configuration["WechatAPP:AppId"], AppSecret = App.Configuration["WechatAPP:AppSecret"], - + Timeout=3000, + //ImmeDeliveryAppKey = "鍗虫椂閰嶉�佺浉鍏虫湇鍔� AppKey锛屼笉鐢ㄥ垯涓嶅~", //ImmeDeliveryAppSecret = "鍗虫椂閰嶉�佺浉鍏虫湇鍔� AppSecret锛屼笉鐢ㄥ垯涓嶅~", //VirtualPaymentAppKey = "铏氭嫙鏀粯鐩稿叧鏈嶅姟 AppKey锛屼笉鐢ㄥ垯涓嶅~", @@ -28,9 +37,73 @@ //MidasAppKey = "绫冲ぇ甯� 1.0 鐩稿叧鏈嶅姟 AppKey锛屼笉鐢ㄥ垯涓嶅~", //MidasOfferIdV2 = "绫冲ぇ甯� 2.0 鐩稿叧鏈嶅姟 OfferId锛屼笉鐢ㄥ垯涓嶅~", //MidasAppKeyV2 = "绫冲ぇ甯� 2.0 鐩稿叧鏈嶅姟 AppKey锛屼笉鐢ㄥ垯涓嶅~" + }; + _client = WechatApiClientBuilder.Create(request).Build(); + + _redisService = ezCoreNetRedis; + + + } + + public async Task<string> GetOpenID(string jscode) + { + + var reques = new SnsComponentJsCode2SessionRequest() + { + AppId = App.Configuration["WechatAPP:AppId"], + + + JsCode = jscode + }; + var a= await _client.ExecuteSnsComponentJsCode2SessionAsync(reques); + if(a.IsSuccessful()) + { + return a.OpenId; + } + else + { + throw Oops.Oh($"{a.ErrorCode}+++{a.ErrorMessage}"); + } + } + public async Task<string> GetPhone( string bindgetphonenumber) + { + + + var requs = new WxaBusinessGetUserPhoneNumberRequest() + { + AccessToken = await GetAccessToken(), + Code= bindgetphonenumber + }; + var a= await _client.ExecuteWxaBusinessGetUserPhoneNumberAsync(requs); + if (a.IsSuccessful()) + return a.PhoneInfo.PurePhoneNumber; + else + { + throw Oops.Oh($"{a.ErrorCode}+++{a.ErrorMessage}"); + } } + /// <summary> + /// 鑾峰彇AccToken + /// </summary> + /// <returns></returns> + private async Task<string> GetAccessToken() + { + string key = _redisService.Get<string>("WxAccessToken"); + if(string.IsNullOrEmpty(key)) + { + var a = await _client.ExecuteCgibinTokenAsync(new CgibinTokenRequest { }); + if(!a.IsSuccessful()) + { + throw Oops.Oh($"{a.ErrorCode}+++{a.ErrorMessage}"); + } + key=a.AccessToken; + _redisService.Add<string>("WxAccessToken", a.AccessToken, 7000); + } + return key; + } + } } -- Gitblit v1.9.1