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