Browse Source

支付模块配置

warr.qian 2 years ago
parent
commit
084ebee3c5

+ 2 - 0
Publish.ps1

@@ -65,5 +65,7 @@ BuildService "WingASRService" 1 0 "../WingASRService"
 
 BuildService "WingEducationService" 1 0 "../WingEducationService"
 
+BuildService "WingPaymentService" 1
+
 Write-Host 'Finished!' -NoNewline
 $null = [Console]::ReadKey('?')

+ 93 - 0
src/Plugin/PaymentPlugin.cs

@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using JsonRpcLite.Network;
+using JsonRpcLite.Services;
+using JsonRpcLite.Utilities;
+using Newtonsoft.Json;
+using WingInterfaceLibrary.DTO.ServerInfo;
+using WingInterfaceLibrary.DTO.User;
+using WingInterfaceLibrary.Enum;
+using WingInterfaceLibrary.Interface;
+using WingInterfaceLibrary.Request.Authentication;
+using WingInterfaceLibrary.Result.Device;
+using WingServerCommon.Config;
+using WingServerCommon.Config.Parameters;
+using WingServerCommon.Interfaces.Cache;
+using WingServerCommon.Log;
+using WingServerCommon.Service;
+
+namespace WingCloudServer.Plugin
+{
+    /// <summary>
+    /// 支付Plugin接口
+    /// </summary>
+    public interface IPaymentPlugin : IJsonRpcHttpServerEnginePlugin
+    {
+
+    }
+
+    /// <summary>
+    /// 支付Plugin
+    /// </summary>
+    public class PaymentPlugin : JsonRpcService, IPaymentPlugin
+    {
+        private IPaymentService _paymentService;
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        public override void Load(JsonRpcClientPool jsonRpcClientPool)
+        {
+            base.Load(jsonRpcClientPool);
+            _paymentService = GetProxy<IPaymentService>();
+        }
+
+        /// <summary>
+        /// 前处理
+        /// </summary>
+        /// <param name="context">上下文/param>
+        /// <param name="requestData">请求参数</param>
+        /// <returns></returns>
+        public PluginProcessResult PreProcess(IJsonRpcHttpContext context, byte[] requestData)
+        {
+            var dataLength = (int)context.GetRequestContentLength();
+            var requests = JsonRpcCodec.DecodeRequestsAsync(requestData, new System.Threading.CancellationToken(), dataLength).Result;
+            var apiName = $"{context.GetRequestPath().Trim('/')}/{requests[0].Method.Trim('/')}";
+            if(apiName == "IPaymentService/PayNotify")
+            {
+                var contentStr = GetInputStreamValue(requestData);
+                _paymentService.PayCallbackAsync(contentStr);
+            }
+            return new PluginProcessResult(requestData, false);
+        }
+
+        /// <summary>
+        /// 后处理
+        /// </summary>
+        /// <param name="context">上下文/param>
+        /// <param name="responseData">响应参数</param>
+        /// <returns></returns>
+        public PluginProcessResult PostProcess(IJsonRpcHttpContext context, byte[] responseData)
+        {
+            return new PluginProcessResult(responseData, false);
+        }
+
+        /// <summary>
+        /// Get InputStreamValue
+        /// </summary>
+        /// <returns></returns>
+        private string GetInputStreamValue(byte[] data)
+        {
+            using(StreamReader sr = new StreamReader(new MemoryStream(data)))
+            {
+                return sr.ReadToEnd();
+            }
+        }
+    }
+}

+ 1 - 0
src/Plugin/TokenVerifyPluginService.cs

@@ -80,6 +80,7 @@ namespace WingCloudServer.Plugin
             "IManagementService/ImitateLoginAsync",
             "IManagementService/FindCMSTemplateByUserAsync",
             "IManagementService/FindCMSStatisticRecordsAsync",
+            "IPaymentService/PayNotify",
         };
 
         public PluginProcessResult PreProcess(IJsonRpcHttpContext context, byte[] requestData)

+ 1 - 0
src/WingCloudServer.csproj

@@ -7,6 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>   
+    <PackageReference Include="AlipaySDKNet.Standard" Version="4.7.144" />   
     <PackageReference Include="CS-Script.Core" Version="2.0.0" />     
     <PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="5.0.0" />     
     <PackageReference Include="TencentCloudSDK" Version="3.0.665" />

+ 6 - 0
src/WingServer.cs

@@ -46,6 +46,8 @@ namespace WingCloudServer
         private ServerListPlugin _serverListPlugin;
         private LicensePlugin _licensePlugin;
 
+        private PaymentPlugin _paymentPlugin;
+
         /// <summary>
         /// Start server to load all service
         /// </summary>
@@ -57,6 +59,7 @@ namespace WingCloudServer
             _jsonRpcHttpServerEngine.RegisterPlugin(_ipAddressPlugin);
             _jsonRpcHttpServerEngine.RegisterPlugin(_serverListPlugin);
             _jsonRpcHttpServerEngine.RegisterPlugin(_licensePlugin);
+            _jsonRpcHttpServerEngine.RegisterPlugin(_paymentPlugin);
             _rpcInProcessServer.Start();
             LoadDataAfterRegister();
             _rpcHttpServer.Start();
@@ -236,6 +239,9 @@ namespace WingCloudServer
             _licensePlugin = new LicensePlugin();
             _rpcHttpServer.RegisterService(typeof(ILicensePlugin), _licensePlugin);
             _licensePlugin.Load(_rpcClientPool);
+            _paymentPlugin = new PaymentPlugin();
+            _rpcHttpServer.RegisterService(typeof(IPaymentPlugin), _paymentPlugin);
+            _paymentPlugin.Load(_rpcClientPool);
             //InitLicense
             ServerLicense.Instance.VerifyLicense(_licensePlugin.DisabledServerRequest);
         }

+ 12 - 0
src/appsettings.json

@@ -124,5 +124,17 @@
   },
   "Management": {
     "CMSUrl": "http://127.0.0.1:9302/cmsTemplatePreview?token={0}&lang={1}"
+  },
+  "Alipay":{
+	"Protocol":"https",
+	"GatewayHost":"openapi.alipay.com",
+	"SignType":"RSA2",
+	"AppId":"2016093000634680",
+	"MerchantPrivateKey":"MIIEogIBAAKCAQEAhygM6jtljPLN7LNlyOJwJxgkj39PdW6RmEG7hiUb4DHUIQi5LRg/y0EPZ7jR7XDyvGwXJK9QaCe6EvDX/cAwAbgdtjTXyrOGqcSvI/4IxSb/Ah75UhrQg8C1zbeI9L47Gi2EHJ0dYacY7oLx4udTw9susJlBTdrfSuCp+VOCQzuM5KC9QQKvaH7dIrU6wdjTxZpuRU2zxyKo44fTpdQy8FGW8OoLdykw9T8fQHrwCfmrqLhxwREgXa6oLPinm4gMts4Wu7biJQT6+WSNa7HV4R5U2BgldAKIT97jqgEM4rYtMGFhGo67ufCZoMfdUkrYrE6ttztIkjHYCzQvC77rSQIDAQABAoIBAFhruD9JCn+ynUu8ddt9YHgDEHAcjuQ5qOCeKEtzXZBHqQrPhS3eTmXvs19dB2G6YeMpJ97lHsp1KwOXMwccQ4vsYuvAGGjRGElalmYKnLw2beB6WQwA5Oc9HPNvnhbXmRzgKCz8EKvBQMtROWQDiMZ6T0pTiOihRzHaVvj5TCAlErCAlT4VGW4ADbxWB3MrNgVkeq5GmFPOkCXT5D7fxdmhECZ4DCoKg7zWJc7jDjN2Kwy+hiMB+ZvebXunjA2jgf48Q3nvZu5WbtyyeIoKAeZI7b8mrd8T5NlUNJaClm6QHlFVofEpZiRfCZbbODJ/8c/9HjxOTBcikbT0W8sUs20CgYEAw4v6a0mDRRguVKWxz2jy8kNrilmFpXfcNldOAIrkGGU4hhY5HPRcYdffISQW9JNW4pQAehPOPrC5Kq9LNJ8cGkm0gVFmV6nY41RuhSPPHq0v4Ivrx+rCiQxnE8gr0HRDMVO+NMdqqK+ovfKLCvBooKIyKEHk+vhEmuGaHB5LqnMCgYEAsPCkU9NiTepxbyC5MOjPL0BVbPu1xQJY840v292otLnhSBNPvY4xv1yPI/pQ1VAGtFtNcsTBgGfPdC0I/WzInd/jTe5fXgqsYXkdevW0og1omYTykUTcf9go3zqbP1/Jle/T9xoU291tN8shs7AbW6fu5xjYdY/CqWkqxd18uFMCgYB8Hlc+zhRyQNz3gYyRN+4s87pIwHXiB2hRXaz3DzGkgmsUQPrTdA9HU3wfTwb7CqJ1greixPt+MzH08/rqVavCy9G023P4ZKhz8t2LyKTotcjT4DwyUsJTtvmeRsn4sDMOFjd+zKzYkVar6k1zDhF7FDh98QVkfz0cieIFwv0IHQKBgGXok5y8GNhreR3aKQ9kZz/9u7XjW5O2gGj2HmRxzCMbFAehJ8IzTa+7ra25FClnyBTEqVy6ugAsyi1NauobZ4iWVKKj8kWFvDb/vNz++ySCuIYDLnpAwQbZBuFbLeNYVhCHavvdB7qCU89YrXaCrZ8in9R2WOWNAT71lW8U3CqFAoGARYE89ADTQYooxZoA4ukX/LkVvnrG5Z1mYzyL8+VVZKGVnbNV0wqycgmjf0tBc23ecmRhvYgWJg+HmCigJXNSj/L10A43mnUvcwjfsD191VGznP27AQfABJ8072FjT1IIf03mYES/eDvUYTEJ1WtiZMNzqoxwNL5XOrFyUWpJeQg=",
+	"MerchantCertPath":"mpath",
+	"AlipayCertPath":"certpath",
+	"AlipayRootCertPath":"rootpath",
+	"AlipayPublicKey":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1UCya1mWgLXDV8wNQbOe92N9w1pIrQEBsUkPS6tCT+30nzYqpyIIaDmb+xQZu8/SLKA95HS8WCX0ATV7m1szyuGoASM8ZIauBEdXA+68xhfjyxar8Xnfv7j33ecmJ2GYXSURJHQB2B2CIwka6mKptWC6DHiXT/LvRdRfvdfi8Kp2UHKFtPcpXk186lx0F/ME7IXRnuE4HF3/OCVZQ1UDXond8jVaM+4scWT9fpbuejeBvmNWB3l+VejvfroO++hrNfauV2NOHpwF+XhBM68fjYzeUm0IypfwyE4rHDv8huwKe/wKTK/LUqO+MYZXfON/IAan8j1zy311UTUX7GSaawIDAQAB",
+	"NotifyUrl" : "http://127.0.0.1/IPaymentService/PayNotify"
   }
 }