From e71dcccec6a1cf51c928a5143264cbbec105ff2f Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期四, 22 八月 2024 08:35:21 +0800
Subject: [PATCH] 对接财富通

---
 cylsg/EzUpFile/EzFileUploadService.cs       |   39 +++++++++
 cylsg/EzWechat/WechatConfig.json            |    9 ++
 .gitignore                                  |    2 
 cylsg/EzWechat/WechatService.cs             |   12 +++
 cylsg/EzUpFile/UpFileController.cs          |   69 +++++++++++++++--
 cylsg/EzWechat/WecharPayServicecs.cs        |   43 ++++++++++
 cylsg/EzWechat/EzWechat.csproj              |    1 
 cylsg/EzTencentCloud/TencentCloudService.cs |    6 
 cylsg/EzWechat/IWecharPayServicecs.cs       |   19 ++++
 cylsg/EzUpFile/IEzFileUploadService.cs      |   12 ++
 10 files changed, 197 insertions(+), 15 deletions(-)

diff --git a/.gitignore b/.gitignore
index c6f6863..324afb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,5 @@
 cylsg/EzUpFile/obj/
 cylsg/cylsg.services/bin/
 cylsg/EzUpFile/bin/
+cylsg/cylsg.Web.Entry/wwwroot/wechartKey/
+cylsg/cylsg.Web.Entry/wwwroot/1669018589_20240820_cert.zip
diff --git a/cylsg/EzTencentCloud/TencentCloudService.cs b/cylsg/EzTencentCloud/TencentCloudService.cs
index 1f80d16..ceafd97 100644
--- a/cylsg/EzTencentCloud/TencentCloudService.cs
+++ b/cylsg/EzTencentCloud/TencentCloudService.cs
@@ -63,7 +63,7 @@
                 httpProfile.Endpoint = ("ocr.tencentcloudapi.com");
                 clientProfile.HttpProfile = httpProfile;
 
-                var _ocrClient = new OcrClient(cred, "ap-chengdu", clientProfile);
+                var _ocrClient = new OcrClient(cred, "ap-shanghai", clientProfile);
 
                 IDCardOCRRequest req = new IDCardOCRRequest();
                 if (isFRONT)
@@ -175,7 +175,7 @@
             httpProfile.Endpoint = ("iai.tencentcloudapi.com");
             clientProfile.HttpProfile = httpProfile;
 
-            var iaiClient = new IaiClient(cred, "ap-chengdu", clientProfile);
+            var iaiClient = new IaiClient(cred, "ap-shanghai", clientProfile);
             try
             {
                 var retinfo = iaiClient.GetGroupInfoSync(new GetGroupInfoRequest
@@ -220,7 +220,7 @@
             httpProfile.Endpoint = ("iai.tencentcloudapi.com");
             clientProfile.HttpProfile = httpProfile;
 
-            var iaiClient = new IaiClient(cred, "ap-chengdu", clientProfile);
+            var iaiClient = new IaiClient(cred, "ap-shanghai", clientProfile);
            var ret=  iaiClient.CreatePerson(new TencentCloud.Iai.V20200303.Models.CreatePersonRequest
             {
                 GroupId = App.Configuration["IAIGroupSet:ID"],
diff --git a/cylsg/EzUpFile/EzFileUploadService.cs b/cylsg/EzUpFile/EzFileUploadService.cs
index e877b52..da61bfd 100644
--- a/cylsg/EzUpFile/EzFileUploadService.cs
+++ b/cylsg/EzUpFile/EzFileUploadService.cs
@@ -10,6 +10,8 @@
 using Microsoft.AspNetCore.Http;
 
 using SqlSugar;
+using System;
+using System.Buffers.Text;
 using System.Drawing;
 using System.Globalization;
 using System.Security.Policy;
@@ -339,6 +341,7 @@
                     idcordinfo = _tcs.IdCord(img64, PageName == "FRONT");
 
                     url = await UploadFilesFByBase64(_tcs.GetIdCordImg());
+                    idcordinfo.AdvancedInfo = null;
 
                     return (idcordinfo, url);
 
@@ -487,8 +490,42 @@
                 throw Oops.Oh(e.Message);
             }
         }
+/// <inheritdoc/>
 
-       
+        public async Task<(bool, string)> IaiAddPerso(string imgBase64, string CoredID, string Name, int PersonGender)
+        {
+            if (string.IsNullOrEmpty(imgBase64))
+            {
+                throw Oops.Oh("娌℃湁鍐呭");
+            }
+
+            //妫�鏌ヤ笂浼犲ぇ灏�
+            if (!CommonHelper.CheckBase64Size(imgBase64, 5))
+            {
+                throw Oops.Oh("涓婁紶鏂囦欢澶у皬瓒呰繃闄愬埗锛屾渶澶у厑璁镐笂浼�" + "5" + "M");
+            }
+
+            imgBase64 = imgBase64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//灏哹ase64澶撮儴淇℃伅鏇挎崲
+            bool info = false;
+            string url = "";
+
+            try
+            {
+                info = _tcs.IaiAddPerso(imgBase64, CoredID, Name, PersonGender);
+
+                url = await UploadFilesFByBase64(imgBase64);
+
+                return (info, url);
+
+            }
+            catch (Exception e)
+            {
+
+                throw Oops.Oh(e.Message);
+            }
+        }
+
+
         #endregion
     }
 }
diff --git a/cylsg/EzUpFile/IEzFileUploadService.cs b/cylsg/EzUpFile/IEzFileUploadService.cs
index 28cd115..dbf822d 100644
--- a/cylsg/EzUpFile/IEzFileUploadService.cs
+++ b/cylsg/EzUpFile/IEzFileUploadService.cs
@@ -42,14 +42,22 @@
         Task<(BizLicenseOCRResponse, string)> UpBizLicense();
 
         /// <summary>
-        /// 鍒涘缓浜鸿劯鐗瑰緛
+        /// 鍒涘缓浜鸿劯鐗瑰緛 鏂囦欢浼犻��
         /// </summary>
         /// <param name="CoredID"> 韬唤璇佸彿</param>
         /// <param name="Name">濮撳悕</param>  
         /// <param name="PersonGender"> 鎬у埆    0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param>
         /// <returns></returns>
         Task<(bool, string)> IaiAddPerso(string CoredID, string Name, int PersonGender);
-
+        /// <summary>
+        /// 鍒涘缓浜鸿劯鐗瑰緛
+        /// </summary>
+        /// <param name="imgBase64">img base64</param>
+        /// <param name="CoredID"> 韬唤璇佸彿</param>
+        /// <param name="Name">濮撳悕</param>  
+        /// <param name="PersonGender"> 鎬у埆    0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param>
+        /// <returns></returns>
+        Task<(bool, string)> IaiAddPerso(string imgBase64, string CoredID, string Name, int PersonGender);
 
     }
 
diff --git a/cylsg/EzUpFile/UpFileController.cs b/cylsg/EzUpFile/UpFileController.cs
index fb6614d..a3ee514 100644
--- a/cylsg/EzUpFile/UpFileController.cs
+++ b/cylsg/EzUpFile/UpFileController.cs
@@ -1,4 +1,5 @@
 锘縰sing EzTencentCloud;
+using Furion.FriendlyException;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Http.HttpResults;
 using Microsoft.AspNetCore.Mvc;
@@ -28,12 +29,12 @@
         /// <param name="PageName"> 韬唤璇佹鍙嶉潰 FRONT 姝i潰  Back  鍥藉窘鍙嶉潰 </param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<(IDCardOCRResponse, string)> UploadIdCord([FromServices] IEzFileUploadService fileUploadService,IFormFile file, [FromQuery] string PageName = "FRONT")
+        public async Task<Object> UploadIdCord([FromServices] IEzFileUploadService fileUploadService,IFormFile file, [FromQuery] string PageName = "FRONT")
         {
 
 
-            return await fileUploadService.UpIdCord(PageName);
-
+            var ret= await fileUploadService.UpIdCord(PageName);
+            return new { Info = ret.Item1, url = ret.Item2 };
         }
 
         /// <summary>
@@ -42,11 +43,12 @@
         /// <param name="PageName"> 韬唤璇佹鍙嶉潰 FRONT 姝i潰  Back  鍥藉窘鍙嶉潰 </param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<(BizLicenseOCRResponse, string)> UpBizLicense([FromServices] IEzFileUploadService fileUploadService, IFormFile file)
+        public async Task<Object> UpBizLicense([FromServices] IEzFileUploadService fileUploadService, IFormFile file)
         {
 
 
-            return await fileUploadService.UpBizLicense();
+            var ret= await fileUploadService.UpBizLicense();
+            return new { Info = ret.Item1, url = ret.Item2 };
 
         }
         /// <summary>
@@ -57,11 +59,32 @@
         /// <param name="Gender">0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<(bool , string)> IaiAddPerso([FromServices] IEzFileUploadService fileUploadService, IFormFile file,[FromQuery] string CordId, [FromQuery] string Name, [FromQuery] int Gender)
+        public async Task<object> IaiAddPerso([FromServices] IEzFileUploadService fileUploadService, IFormFile file,[FromQuery] string CordId, [FromQuery] string Name, [FromQuery] int Gender)
         {
 
 
-            return await fileUploadService.IaiAddPerso(CordId, Name,Gender);
+            var ret= await fileUploadService.IaiAddPerso(CordId, Name,Gender);
+            return new { IsOK = ret.Item1, url = ret.Item2 };
+
+
+        }
+
+        /// <summary>
+        /// 澧炲姞浜鸿劯搴� base64
+        /// </summary>   
+        /// <param name="param"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<object> IaiAddPersoBase64([FromServices] IEzFileUploadService fileUploadService, UpDataFileData param)
+        {
+            if (string.IsNullOrEmpty(param.imgBase64))
+                throw Oops.Oh("娌℃湁鏂囦欢绫诲");
+            if (string.IsNullOrEmpty(param.Name))
+                throw Oops.Oh("娌℃湁濮撳悕");
+            if (string.IsNullOrEmpty(param.CordId))
+                throw Oops.Oh("娌℃湁韬唤璇佷俊鎭�");
+            var ret = await fileUploadService.IaiAddPerso(param.imgBase64, param.CordId, param. Name, param.Gender??0);
+            return new { IsOK = ret.Item1, url = ret.Item2 };
 
 
         }
@@ -103,7 +126,7 @@
         [HttpPost]
         public async Task<string> UpdateFileBase64([FromServices] IEzFileUploadService fileUploadService, UpDataFileData Param)
         {
-            return await fileUploadService.UploadFilesFByBase64(Param.FileBase64);
+            return await fileUploadService.UploadFilesFByBase64(Param.imgBase64);
         }
         [HttpPost]
         public async Task<bool> DelFile([FromServices] IEzFileUploadService fileUploadService, DelFileData Param)
@@ -120,7 +143,19 @@
         /// <summary>
         /// 鏁版嵁base64
         /// </summary>
-        public string FileBase64 { get; set; }
+        public string imgBase64 { get; set; }
+        /// <summary>
+        /// 韬唤璇佸彿鐮�
+        /// </summary>
+        public string? CordId { get; set; }
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string? Name { get; set; }
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        public int? Gender { get; set; }
     }
     /// <summary>
     /// 涓婁紶鏁版嵁
@@ -133,4 +168,20 @@
         /// </summary>
         public string FilePath { get; set; }
     }
+    /// <summary>
+    /// 韬唤璇佽繑鍥炶緭鍑�
+    /// </summary>
+    public class IdCordOuput
+    {
+        /// <summary>
+        /// 韬唤璇佺浉鍏充俊鎭�
+        /// </summary>
+        public IDCardOCRResponse IdCordInfo { get; set; }
+
+        /// <summary>
+        ///  url
+        /// </summary>
+        public string Url {  get; set; }
+
+    }
 }
diff --git a/cylsg/EzWechat/EzWechat.csproj b/cylsg/EzWechat/EzWechat.csproj
index 1e28ec0..ed480b7 100644
--- a/cylsg/EzWechat/EzWechat.csproj
+++ b/cylsg/EzWechat/EzWechat.csproj
@@ -8,6 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.4.0" />
+    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.7.0" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/cylsg/EzWechat/IWecharPayServicecs.cs b/cylsg/EzWechat/IWecharPayServicecs.cs
new file mode 100644
index 0000000..21173bd
--- /dev/null
+++ b/cylsg/EzWechat/IWecharPayServicecs.cs
@@ -0,0 +1,19 @@
+锘縰sing SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EzWechat
+{
+    public interface IWecharPayServicecs
+    {
+        /// <summary>
+        /// 鏀粯涓�鍗�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+       Task<CreateTransferBatchResponse> PayOderAsync(CreateTransferBatchRequest request);
+    }
+}
diff --git a/cylsg/EzWechat/WecharPayServicecs.cs b/cylsg/EzWechat/WecharPayServicecs.cs
new file mode 100644
index 0000000..e4a37ab
--- /dev/null
+++ b/cylsg/EzWechat/WecharPayServicecs.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion;
+using Furion.DependencyInjection;
+using SKIT.FlurlHttpClient.Wechat.TenpayV3;
+using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
+using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinOpenApiRequestIdGetResponse.Types;
+
+namespace EzWechat
+{
+    /// <summary>
+    /// 寰俊鏀粯鏈嶅姟
+    /// </summary>
+    public class WecharPayServicecs:IWecharPayServicecs, IScoped
+    {
+        private readonly WechatTenpayClient _V3Client;
+
+        public WecharPayServicecs() {
+            var manager = new InMemoryCertificateManager();
+            var options = new WechatTenpayClientOptions()
+            {
+                MerchantId = App.Configuration["WechartPay:MerchantId"],
+                MerchantV3Secret = App.Configuration["WechartPay:lojdhuqyt5648dikunm623ddsl2543a5"],
+                MerchantCertificateSerialNumber = App.Configuration["WechartPay:MerchantCertificateSerialNumber"],
+                MerchantCertificatePrivateKey = System.IO.File.ReadAllText(App.Configuration["WechartPay:apiclient_keyFile"]),
+                PlatformCertificateManager = manager // 骞冲彴璇佷功绠$悊鍣ㄧ殑鍏蜂綋鐢ㄦ硶璇峰弬闃呬笅鏂囩殑鍩虹鐢ㄦ硶涓庡姞瀵嗐�侀獙绛炬湁鍏崇殑绔犺妭
+            };
+             _V3Client = WechatTenpayClientBuilder.Create(options).Build();
+        }
+
+        public async Task<CreateTransferBatchResponse> PayOderAsync(CreateTransferBatchRequest request)
+        {
+
+            var response = await _V3Client.ExecuteCreateTransferBatchAsync(request);
+            return response;
+
+        }
+    }
+}
diff --git a/cylsg/EzWechat/WechatConfig.json b/cylsg/EzWechat/WechatConfig.json
index f238b57..a7d7366 100644
--- a/cylsg/EzWechat/WechatConfig.json
+++ b/cylsg/EzWechat/WechatConfig.json
@@ -3,5 +3,14 @@
     "AppId": "wx983556688354dd14",
     "AppSecret": "2ab1aefaac926855dc9d5f7bf7f04477"
 
+  },
+
+  "WechartPay": {
+
+    "MerchantV3Secret": "lojdhuqyt5648dikunm623ddsl2543a5",
+    "MerchantId": "1669018589",
+    "MerchantCertificateSerialNumber": "49FFE8CB27B5EDD026BFF23C41F0DAA83405EB10",
+    "apiclient_keyFile": "wwwroot\\wechartKey\\apiclient_key.pem"
+
   }
 }
\ No newline at end of file
diff --git a/cylsg/EzWechat/WechatService.cs b/cylsg/EzWechat/WechatService.cs
index 1d07cce..5070c70 100644
--- a/cylsg/EzWechat/WechatService.cs
+++ b/cylsg/EzWechat/WechatService.cs
@@ -13,6 +13,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
+
 namespace EzWechat
 {
 
@@ -106,5 +107,16 @@
             return key;
         }
 
+
+
+
+
+
+
+
+
+
     }
+
+  
 }

--
Gitblit v1.9.1