Преглед изворни кода

[Sample] 新增 PaylinkOptions

Roc пре 10 месеци
родитељ
комит
5a01685d48

+ 14 - 14
samples/WebApplicationSample/Controllers/AlipayController.cs

@@ -14,9 +14,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<AlipayController> _logger;
         private readonly IAlipayClient _client;
-        private readonly IOptions<AlipayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public AlipayController(ILogger<AlipayController> logger, IAlipayClient client, IOptions<AlipayOptions> optionsAccessor)
+        public AlipayController(ILogger<AlipayController> logger, IAlipayClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -58,7 +58,7 @@ namespace WebApplicationSample.Controllers
             req.SetBizModel(model);
             req.SetNotifyUrl(viewModel.NotifyUrl);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             if (!response.IsError)
             {
                 ViewData["qrcode"] = response.QrCode;
@@ -95,7 +95,7 @@ namespace WebApplicationSample.Controllers
             var req = new AlipayTradePayRequest();
             req.SetBizModel(model);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -127,7 +127,7 @@ namespace WebApplicationSample.Controllers
             req.SetBizModel(model);
             req.SetNotifyUrl(viewModel.NotifyUrl);
 
-            var response = await _client.SdkExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.SdkExecuteAsync(req, _optionsAccessor.Value.Alipay);
             // 将response.Body给 ios、android端,由其去完成调起支付宝APP。
             // 客户端 Android 集成流程: https://opendocs.alipay.com/open/204/105296/
             // 客户端 iOS 集成流程: https://opendocs.alipay.com/open/204/105295/
@@ -164,7 +164,7 @@ namespace WebApplicationSample.Controllers
             req.SetNotifyUrl(viewModel.NotifyUrl);
             req.SetReturnUrl(viewModel.ReturnUrl);
 
-            var response = await _client.PageExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.PageExecuteAsync(req, _optionsAccessor.Value.Alipay);
             return Content(response.Body, "text/html", Encoding.UTF8);
         }
 
@@ -196,7 +196,7 @@ namespace WebApplicationSample.Controllers
             req.SetNotifyUrl(viewMode.NotifyUrl);
             req.SetReturnUrl(viewMode.ReturnUrl);
 
-            var response = await _client.PageExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.PageExecuteAsync(req, _optionsAccessor.Value.Alipay);
             return Content(response.Body, "text/html", Encoding.UTF8);
         }
 
@@ -224,7 +224,7 @@ namespace WebApplicationSample.Controllers
             var req = new AlipayTradeQueryRequest();
             req.SetBizModel(model);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = ((AlipayResponse)response).Body;
             return View();
         }
@@ -256,7 +256,7 @@ namespace WebApplicationSample.Controllers
             var req = new AlipayTradeRefundRequest();
             req.SetBizModel(model);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -286,7 +286,7 @@ namespace WebApplicationSample.Controllers
             var req = new AlipayTradeFastpayRefundQueryRequest();
             req.SetBizModel(model);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -316,7 +316,7 @@ namespace WebApplicationSample.Controllers
             req.SetBizModel(model);
             req.SetNotifyUrl(viewMode.NotifyUrl);
 
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -347,7 +347,7 @@ namespace WebApplicationSample.Controllers
             };
             var req = new AlipayFundTransUniTransferRequest();
             req.SetBizModel(model);
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -375,7 +375,7 @@ namespace WebApplicationSample.Controllers
 
             var req = new AlipayFundTransCommonQueryRequest();
             req.SetBizModel(model);
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -403,7 +403,7 @@ namespace WebApplicationSample.Controllers
 
             var req = new AlipayFundAccountQueryRequest();
             req.SetBizModel(model);
-            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);
+            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value.Alipay);
             ViewData["response"] = response.Body;
             return View();
         }

+ 17 - 17
samples/WebApplicationSample/Controllers/AlipayNotifyController.cs

@@ -12,9 +12,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<AlipayNotifyController> _logger;
         private readonly IAlipayNotifyClient _client;
-        private readonly IOptions<AlipayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public AlipayNotifyController(ILogger<AlipayNotifyController> logger, IAlipayNotifyClient client, IOptions<AlipayOptions> optionsAccessor)
+        public AlipayNotifyController(ILogger<AlipayNotifyController> logger, IAlipayNotifyClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -37,61 +37,61 @@ namespace WebApplicationSample.Controllers
                     // 资金单据状态变更通知
                     case "alipay.fund.trans.order.changed":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayFundTransOrderChangedNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayFundTransOrderChangedNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 第三方应用授权取消消息
                     case "alipay.open.auth.appauth.cancelled":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayOpenAuthAppauthCancelledNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayOpenAuthAppauthCancelledNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 用户授权取消消息
                     case "alipay.open.auth.userauth.cancelled":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayOpenAuthUserauthCancelledNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayOpenAuthUserauthCancelledNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 小程序审核通过通知
                     case "alipay.open.mini.version.audit.passed":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayOpenMiniVersionAuditPassedNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayOpenMiniVersionAuditPassedNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 小程序审核驳回通知
                     case "alipay.open.mini.version.audit.rejected":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayOpenMiniVersionAuditRejectedNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayOpenMiniVersionAuditRejectedNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 收单退款冲退完成通知
                     case "alipay.trade.refund.depositback.completed":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayTradeRefundDepositbackCompletedNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayTradeRefundDepositbackCompletedNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 收单资金结算到银行账户,结算退票的异步通知
                     case "alipay.trade.settle.dishonoured":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleDishonouredNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleDishonouredNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 收单资金结算到银行账户,结算失败的异步通知
                     case "alipay.trade.settle.fail":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleFailNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleFailNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 收单资金结算到银行账户,结算成功的异步通知
                     case "alipay.trade.settle.success":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleSuccessNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayTradeSettleSuccessNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     // 身份认证记录消息
                     case "alipay.user.certify.open.notify.completed":
                         {
-                            var notify = await _client.CertificateExecuteAsync<AlipayUserCertifyOpenNotifyCompletedNotify>(Request, _optionsAccessor.Value);
+                            var notify = await _client.CertificateExecuteAsync<AlipayUserCertifyOpenNotifyCompletedNotify>(Request, _optionsAccessor.Value.Alipay);
                             return AlipayNotifyResult.Success;
                         }
                     default:
@@ -114,7 +114,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.CertificateExecuteAsync<AlipayTradePrecreateNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.CertificateExecuteAsync<AlipayTradePrecreateNotify>(Request, _optionsAccessor.Value.Alipay);
                 switch (notify.TradeStatus)
                 {
                     case AlipayTradeStatus.Wait: // 等待付款
@@ -143,7 +143,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.CertificateExecuteAsync<AlipayTradeAppPayNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.CertificateExecuteAsync<AlipayTradeAppPayNotify>(Request, _optionsAccessor.Value.Alipay);
                 switch (notify.TradeStatus)
                 {
                     case AlipayTradeStatus.Success: // 支付成功
@@ -175,7 +175,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.CertificateExecuteAsync<AlipayTradePagePayNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.CertificateExecuteAsync<AlipayTradePagePayNotify>(Request, _optionsAccessor.Value.Alipay);
                 switch (notify.TradeStatus)
                 {
                     case AlipayTradeStatus.Success: // 支付成功
@@ -207,7 +207,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.CertificateExecuteAsync<AlipayTradeWapPayNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.CertificateExecuteAsync<AlipayTradeWapPayNotify>(Request, _optionsAccessor.Value.Alipay);
                 switch (notify.TradeStatus)
                 {
                     case AlipayTradeStatus.Success: // 支付成功
@@ -239,7 +239,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.CertificateExecuteAsync<AlipayTradeCloseNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.CertificateExecuteAsync<AlipayTradeCloseNotify>(Request, _optionsAccessor.Value.Alipay);
                 if (notify.TradeStatus == AlipayTradeStatus.Closed)
                 {
                     _logger.LogInformation("交易关闭异步通知 => OutTradeNo: " + notify.OutTradeNo);

+ 4 - 4
samples/WebApplicationSample/Controllers/AlipayReturnController.cs

@@ -12,9 +12,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<AlipayReturnController> _logger;
         private readonly IAlipayNotifyClient _client;
-        private readonly IOptions<AlipayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public AlipayReturnController(ILogger<AlipayReturnController> logger, IAlipayNotifyClient client, IOptions<AlipayOptions> optionsAccessor)
+        public AlipayReturnController(ILogger<AlipayReturnController> logger, IAlipayNotifyClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -30,7 +30,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<AlipayTradePagePayReturn>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<AlipayTradePagePayReturn>(Request, _optionsAccessor.Value.Alipay);
                 ViewData["response"] = "支付成功";
                 return View();
             }
@@ -51,7 +51,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<AlipayTradeWapPayReturn>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<AlipayTradeWapPayReturn>(Request, _optionsAccessor.Value.Alipay);
                 ViewData["response"] = "支付成功";
                 return View();
             }

+ 25 - 25
samples/WebApplicationSample/Controllers/WeChatPayController.cs

@@ -14,9 +14,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<WeChatPayController> _logger;
         private readonly IWeChatPayClient _client;
-        private readonly IOptions<WeChatPayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public WeChatPayController(ILogger<WeChatPayController> logger, IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
+        public WeChatPayController(ILogger<WeChatPayController> logger, IWeChatPayClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -55,7 +55,7 @@ namespace WebApplicationSample.Controllers
                 SpBillCreateIp = viewModel.SpBillCreateIp,
                 AuthCode = viewModel.AuthCode
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -87,7 +87,7 @@ namespace WebApplicationSample.Controllers
                 OpenId = viewModel.OpenId
             };
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
             {
                 var req = new WeChatPayJsApiSdkRequest
@@ -95,7 +95,7 @@ namespace WebApplicationSample.Controllers
                     Package = "prepay_id=" + response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6)
                 ViewData["parameter"] = JsonSerializer.Serialize(parameter);
@@ -134,7 +134,7 @@ namespace WebApplicationSample.Controllers
                 ProfitSharing = viewModel.ProfitSharing
             };
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             // response.CodeUrl 给前端生成二维码
             ViewData["qrcode"] = response.CodeUrl;
@@ -167,7 +167,7 @@ namespace WebApplicationSample.Controllers
                 NotifyUrl = viewModel.NotifyUrl,
                 TradeType = viewModel.TradeType
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
             {
@@ -176,7 +176,7 @@ namespace WebApplicationSample.Controllers
                     PrepayId = response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 ios/android端 让他调起微信APP(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5)
                 ViewData["parameter"] = JsonSerializer.Serialize(parameter);
@@ -214,7 +214,7 @@ namespace WebApplicationSample.Controllers
                 TradeType = viewModel.TradeType
             };
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。
             ViewData["response"] = response.Body;
@@ -248,7 +248,7 @@ namespace WebApplicationSample.Controllers
                 OpenId = viewModel.OpenId
             };
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
             {
                 var req = new WeChatPayMiniProgramSdkRequest
@@ -256,7 +256,7 @@ namespace WebApplicationSample.Controllers
                     Package = "prepay_id=" + response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 小程序前端 让他调起支付API(https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5)
                 ViewData["parameter"] = JsonSerializer.Serialize(parameter);
@@ -289,7 +289,7 @@ namespace WebApplicationSample.Controllers
                 TransactionId = viewModel.TransactionId,
                 OutTradeNo = viewModel.OutTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -315,7 +315,7 @@ namespace WebApplicationSample.Controllers
                 TransactionId = viewModel.TransactionId,
                 OutTradeNo = viewModel.OutTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -340,7 +340,7 @@ namespace WebApplicationSample.Controllers
             {
                 OutTradeNo = viewModel.OutTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -371,7 +371,7 @@ namespace WebApplicationSample.Controllers
                 RefundDesc = viewModel.RefundDesc,
                 NotifyUrl = viewModel.NotifyUrl
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -399,7 +399,7 @@ namespace WebApplicationSample.Controllers
                 TransactionId = viewModel.TransactionId,
                 OutTradeNo = viewModel.OutTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -426,7 +426,7 @@ namespace WebApplicationSample.Controllers
                 BillType = viewModel.BillType,
                 TarType = viewModel.TarType
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -453,7 +453,7 @@ namespace WebApplicationSample.Controllers
                 AccountType = viewModel.AccountType,
                 TarType = viewModel.TarType
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -484,7 +484,7 @@ namespace WebApplicationSample.Controllers
                 Desc = viewModel.Desc,
                 SpBillCreateIp = viewModel.SpBillCreateIp
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -509,7 +509,7 @@ namespace WebApplicationSample.Controllers
             {
                 PartnerTradeNo = viewModel.PartnerTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -539,7 +539,7 @@ namespace WebApplicationSample.Controllers
                 Amount = viewModel.Amount,
                 Desc = viewModel.Desc
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -564,7 +564,7 @@ namespace WebApplicationSample.Controllers
             {
                 PartnerTradeNo = viewModel.PartnerTradeNo
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -579,7 +579,7 @@ namespace WebApplicationSample.Controllers
             if (Request.Method == "POST")
             {
                 var request = new WeChatPayRiskGetPublicKeyRequest();
-                var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+                var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
                 ViewData["response"] = response.Body;
                 return View();
             }
@@ -606,7 +606,7 @@ namespace WebApplicationSample.Controllers
             {
                 Receiver = viewModel.Receiver
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -632,7 +632,7 @@ namespace WebApplicationSample.Controllers
                 OutOrderNo = viewModel.OutOrderNo,
                 Receivers = viewModel.Receivers
             };
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }

+ 4 - 4
samples/WebApplicationSample/Controllers/WeChatPayNotifyController.cs

@@ -13,9 +13,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<WeChatPayNotifyController> _logger;
         private readonly IWeChatPayNotifyClient _client;
-        private readonly IOptions<WeChatPayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public WeChatPayNotifyController(ILogger<WeChatPayNotifyController> logger, IWeChatPayNotifyClient client, IOptions<WeChatPayOptions> optionsAccessor)
+        public WeChatPayNotifyController(ILogger<WeChatPayNotifyController> logger, IWeChatPayNotifyClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -31,7 +31,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayUnifiedOrderNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayUnifiedOrderNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.ReturnCode == WeChatPayCode.Success)
                 {
                     if (notify.ResultCode == WeChatPayCode.Success)
@@ -59,7 +59,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayRefundNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayRefundNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.ReturnCode == WeChatPayCode.Success)
                 {
                     if (notify.RefundStatus == WeChatPayRefundStatus.Success)

+ 55 - 55
samples/WebApplicationSample/Controllers/WeChatPayV3Controller.cs

@@ -16,9 +16,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<WeChatPayV3Controller> _logger;
         private readonly IWeChatPayClient _client;
-        private readonly IOptions<WeChatPayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public WeChatPayV3Controller(ILogger<WeChatPayV3Controller> logger, IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
+        public WeChatPayV3Controller(ILogger<WeChatPayV3Controller> logger, IWeChatPayClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -51,8 +51,8 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsAppBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
-                MchId = _optionsAccessor.Value.MchId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
                 Amount = new Amount { Total = viewModel.Total, Currency = "CNY" },
                 Description = viewModel.Description,
                 NotifyUrl = viewModel.NotifyUrl,
@@ -62,7 +62,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayTransactionsAppRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             if (!response.IsError)
             {
@@ -71,7 +71,7 @@ namespace WebApplicationSample.Controllers
                     PrepayId = response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 ios/android端 
                 // https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_4.shtml
@@ -102,8 +102,8 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsJsApiBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
-                MchId = _optionsAccessor.Value.MchId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
                 Amount = new Amount { Total = viewModel.Total, Currency = "CNY" },
                 Description = viewModel.Description,
                 NotifyUrl = viewModel.NotifyUrl,
@@ -114,7 +114,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayTransactionsJsApiRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             if (!response.IsError)
             {
@@ -123,7 +123,7 @@ namespace WebApplicationSample.Controllers
                     Package = "prepay_id=" + response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 公众号前端
                 // https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml
@@ -154,8 +154,8 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsNativeBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
-                MchId = _optionsAccessor.Value.MchId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
                 Amount = new Amount { Total = viewModel.Total, Currency = "CNY" },
                 Description = viewModel.Description,
                 NotifyUrl = viewModel.NotifyUrl,
@@ -165,7 +165,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayTransactionsNativeRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             if (!response.IsError)
             {
                 // response.CodeUrl 给前端生成二维码
@@ -194,8 +194,8 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsH5BodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
-                MchId = _optionsAccessor.Value.MchId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
                 Amount = new Amount { Total = viewModel.Total, Currency = "CNY" },
                 Description = viewModel.Description,
                 NotifyUrl = viewModel.NotifyUrl,
@@ -206,7 +206,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayTransactionsH5Request();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             // h5_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,h5_url的有效期为5分钟。
             // https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_4.shtml
@@ -232,8 +232,8 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsJsApiBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
-                MchId = _optionsAccessor.Value.MchId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
                 Amount = new Amount { Total = viewModel.Total, Currency = "CNY" },
                 Description = viewModel.Description,
                 NotifyUrl = viewModel.NotifyUrl,
@@ -244,7 +244,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayTransactionsJsApiRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             if (!response.IsError)
             {
@@ -253,7 +253,7 @@ namespace WebApplicationSample.Controllers
                     Package = "prepay_id=" + response.PrepayId
                 };
 
-                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
+                var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value.WeChatPay);
 
                 // 将参数(parameter)给 小程序端
                 // https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_4.shtml
@@ -284,7 +284,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsIdQueryModel
             {
-                MchId = _optionsAccessor.Value.MchId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
             };
 
             var request = new WeChatPayTransactionsIdRequest
@@ -294,7 +294,7 @@ namespace WebApplicationSample.Controllers
 
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -318,7 +318,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsOutTradeNoQueryModel
             {
-                MchId = _optionsAccessor.Value.MchId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
             };
 
             var request = new WeChatPayTransactionsOutTradeNoRequest
@@ -328,7 +328,7 @@ namespace WebApplicationSample.Controllers
 
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -352,7 +352,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayTransactionsOutTradeNoCloseBodyModel
             {
-                MchId = _optionsAccessor.Value.MchId,
+                MchId = _optionsAccessor.Value.WeChatPay.MchId,
             };
 
             var request = new WeChatPayTransactionsOutTradeNoCloseRequest
@@ -362,7 +362,7 @@ namespace WebApplicationSample.Controllers
 
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -393,7 +393,7 @@ namespace WebApplicationSample.Controllers
 
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -423,7 +423,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayBillFundflowBillRequest();
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -448,7 +448,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayBillDownloadRequest();
             request.SetRequestUrl(viewModel.DownloadUrl);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -482,7 +482,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayRefundDomesticRefundsRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -509,7 +509,7 @@ namespace WebApplicationSample.Controllers
                 OutRefundNo = viewModel.OutRefundNo
             };
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
 
             ViewData["response"] = response.Body;
             return View();
@@ -533,7 +533,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 OutOrderNo = viewModel.OutOrderNo,
                 ServiceIntroduction = viewModel.ServiceIntroduction,
@@ -554,7 +554,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayScoreServiceOrderRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -575,7 +575,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderQueryModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 OutOrderNo = viewModel.OutOrderNo,
                 QueryId = viewModel.QueryId
@@ -584,7 +584,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayScoreServiceOrderQueryRequest();
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -605,7 +605,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderOutOrderNoCancelBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 Reason = viewModel.Reason
             };
@@ -616,7 +616,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -637,7 +637,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderOutOrderNoModifyBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 PostPayments = new List<PostPayment> {
                    new PostPayment{
@@ -656,7 +656,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -677,7 +677,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderOutOrderNoCompleteBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 PostPayments = new List<PostPayment>
                 {
@@ -697,7 +697,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -718,7 +718,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderPayBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
             };
 
@@ -728,7 +728,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -749,7 +749,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderSyncBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 Type = viewModel.Type,
                 Detail = new SyncDetail
@@ -764,7 +764,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -785,7 +785,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScoreServiceOrderDirectCompleteBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 OutOrderNo = viewModel.OutOrderNo,
                 ServiceIntroduction = viewModel.ServiceIntroduction,
@@ -810,7 +810,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayScoreServiceOrderDirectCompleteRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -831,7 +831,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScorePermissionsBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 AuthorizationCode = viewModel.AuthorizationCode,
                 NotifyUrl = viewModel.NotifyUrl
@@ -840,7 +840,7 @@ namespace WebApplicationSample.Controllers
             var request = new WeChatPayScorePermissionsRequest();
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -870,7 +870,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -901,7 +901,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -922,7 +922,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScorePermissionsQueryForOpenIdQueryModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
             };
 
@@ -932,7 +932,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetQueryModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }
@@ -953,7 +953,7 @@ namespace WebApplicationSample.Controllers
         {
             var model = new WeChatPayScorePermissionsTerminateForOpenIdBodyModel
             {
-                AppId = _optionsAccessor.Value.AppId,
+                AppId = _optionsAccessor.Value.WeChatPay.AppId,
                 ServiceId = viewModel.ServiceId,
                 Reason = viewModel.Reason
             };
@@ -964,7 +964,7 @@ namespace WebApplicationSample.Controllers
             };
             request.SetBodyModel(model);
 
-            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value.WeChatPay);
             ViewData["response"] = response.Body;
             return View();
         }

+ 9 - 9
samples/WebApplicationSample/Controllers/WeChatPayV3NotifyController.cs

@@ -14,9 +14,9 @@ namespace WebApplicationSample.Controllers
     {
         private readonly ILogger<WeChatPayV3NotifyController> _logger;
         private readonly IWeChatPayNotifyClient _client;
-        private readonly IOptions<WeChatPayOptions> _optionsAccessor;
+        private readonly IOptions<PaylinkOptions> _optionsAccessor;
 
-        public WeChatPayV3NotifyController(ILogger<WeChatPayV3NotifyController> logger, IWeChatPayNotifyClient client, IOptions<WeChatPayOptions> optionsAccessor)
+        public WeChatPayV3NotifyController(ILogger<WeChatPayV3NotifyController> logger, IWeChatPayNotifyClient client, IOptions<PaylinkOptions> optionsAccessor)
         {
             _logger = logger;
             _client = client;
@@ -32,7 +32,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayTransactionsNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayTransactionsNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.TradeState == WeChatPayTradeState.Success)
                 {
                     _logger.LogInformation("支付结果通知 => OutTradeNo: " + notify.OutTradeNo);
@@ -57,7 +57,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayRefundDomesticRefundsNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayRefundDomesticRefundsNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.RefundStatus == WeChatPayRefundStatus.Success)
                 {
                     _logger.LogInformation("退款结果通知 => OutTradeNo: " + notify.OutTradeNo);
@@ -84,7 +84,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayScoreUserOpenOrCloseNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayScoreUserOpenOrCloseNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.UserServiceStatus == WeChatPayScoreUserServiceStatus.Opened ||
                     notify.UserServiceStatus == WeChatPayScoreUserServiceStatus.Closed)
                 {
@@ -110,7 +110,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayScoreUserConfirmNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayScoreUserConfirmNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.State == WeChatPayServiceOrderState.Doing)
                 {
                     _logger.LogInformation("确认订单回调通知 => " + notify.Body);
@@ -135,7 +135,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayScoreUserPaidNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayScoreUserPaidNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.State == WeChatPayServiceOrderState.Done)
                 {
                     _logger.LogInformation("订单支付成功回调通知 => " + notify.Body);
@@ -160,7 +160,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayScoreUserPaidNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayScoreUserPaidNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 if (notify.State == WeChatPayServiceOrderState.Doing || notify.State == WeChatPayServiceOrderState.Done)
                 {
                     _logger.LogInformation("订单确认或支付成功回调通知: " + notify.Body);
@@ -187,7 +187,7 @@ namespace WebApplicationSample.Controllers
         {
             try
             {
-                var notify = await _client.ExecuteAsync<WeChatPayTransferBatchesFinishedNotify>(Request, _optionsAccessor.Value);
+                var notify = await _client.ExecuteAsync<WeChatPayTransferBatchesFinishedNotify>(Request, _optionsAccessor.Value.WeChatPay);
                 switch (notify.NotifyCiphertext.EventType)
                 {
                     case "MCHTRANSFER.BATCH.FINISHED":

+ 12 - 0
samples/WebApplicationSample/PaylinkOptions.cs

@@ -0,0 +1,12 @@
+using Essensoft.Paylink.Alipay;
+using Essensoft.Paylink.WeChatPay;
+
+namespace WebApplicationSample
+{
+    public class PaylinkOptions
+    {
+        public AlipayOptions Alipay { get; set; }
+
+        public WeChatPayOptions WeChatPay { get; set; }
+    }
+}

+ 1 - 2
samples/WebApplicationSample/Startup.cs

@@ -25,8 +25,7 @@ namespace WebApplicationSample
             services.AddWeChatPay();
 
             // 在 appsettings.json(开发环境:appsettings.Development.json) 中 配置选项
-            services.Configure<AlipayOptions>(Configuration.GetSection("Alipay"));
-            services.Configure<WeChatPayOptions>(Configuration.GetSection("WeChatPay"));
+            services.Configure<PaylinkOptions>(Configuration.GetSection("Paylink"));
 
             services.AddControllersWithViews();
         }

+ 91 - 90
samples/WebApplicationSample/appsettings.Development.json

@@ -9,95 +9,96 @@
 
   // 正式环境配置:appsettings.json
   // 开发环境配置:appsettings.Development.json
-
-  // 微信支付
-  // 更多配置,请查看WeChatPayOptions类
-  "WeChatPay": {
-    // 应用号
-    // 如:微信公众平台AppId、微信开放平台AppId、微信小程序AppId、企业微信CorpId等
-    "AppId": "",
-
-    // 商户号
-    // 为微信支付商户平台的商户号
-    "MchId": "",
-
-    // 商户API密钥
-    // 为微信支付商户平台的API密钥,请注意不是APIv3密钥
-    "APIKey": "",
-
-    // 商户APIv3密钥
-    // 为微信支付商户平台的APIv3密钥,请注意不是API密钥,v3接口必填
-    "APIv3Key": "",
-
-    // 商户API证书
-    // 使用V2退款、付款等接口时必填
-    // 使用V3接口时必填
-    // 可为证书文件路径 / 证书文件的base64字符串
-    "Certificate": "",
-
-    // 微信支付公钥Id
-    // 使用V3接口微信支付公钥时必填
-    "WeChatPayPublicKeyId": "",
-
-    // 微信支付公钥
-    // 使用V3接口微信支付公钥时必填
-    "WeChatPayPublicKey": "",
-
-    // RSA公钥
-    // 目前仅调用"企业付款到银行卡API [V2]"时使用,执行本示例中的"获取RSA加密公钥API [V2]"即可获取。
-    "RsaPublicKey": ""
-  },
-
-  // 支付宝
-  // 更多配置,请查看AlipayOptions类
-  "Alipay": {
-
-    // 注意: 
-    // 若涉及资金类支出接口(如转账、红包等)接入,必须使用“公钥证书”方式。不涉及到资金类接口,也可以使用“普通公钥”方式进行加签。
-    // 本示例默认的加签方式为“公钥证书”方式,并调用 CertificateExecuteAsync 方法 执行API。
-    // 若使用“普通公钥”方式,除了遵守下方注释的规则外,调用 CertificateExecuteAsync 也需改成 ExecuteAsync。
-    // 支付宝后台密钥/证书官方配置教程:https://opendocs.alipay.com/open/291/105971
-    // 密钥格式:请选择 PKCS1(非JAVA适用),切记 切记 切记
-
-    // 应用Id
-    // 为支付宝开放平台-APPID
-    "AppId": "",
-
-    // 支付宝公钥 RSA公钥
-    // 为支付宝开放平台-支付宝公钥
-    // “公钥证书”方式时,留空
-    // “普通公钥”方式时,必填
-    "AlipayPublicKey": "",
-
-    // 应用私钥 RSA私钥
-    // 为“支付宝开放平台开发助手”所生成的应用私钥
-    "AppPrivateKey": "",
-
-    // 服务网关地址
-    // 默认为正式环境地址
-    "ServerUrl": "https://openapi.alipay.com/gateway.do",
-
-    // 签名类型
-    // 支持:RSA2(SHA256WithRSA)、RSA1(SHA1WithRSA)
-    // 默认为RSA2
-    "SignType": "RSA2",
-
-    // 应用公钥证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AppPublicCert": "",
-
-    // 支付宝公钥证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AlipayPublicCert": "",
-
-    // 支付宝根证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AlipayRootCert": ""
+  "Paylink": {
+    // 微信支付
+    // 更多配置,请查看WeChatPayOptions类
+    "WeChatPay": {
+      // 应用号
+      // 如:微信公众平台AppId、微信开放平台AppId、微信小程序AppId、企业微信CorpId等
+      "AppId": "",
+
+      // 商户号
+      // 为微信支付商户平台的商户号
+      "MchId": "",
+
+      // 商户API密钥
+      // 为微信支付商户平台的API密钥,请注意不是APIv3密钥
+      "APIKey": "",
+
+      // 商户APIv3密钥
+      // 为微信支付商户平台的APIv3密钥,请注意不是API密钥,v3接口必填
+      "APIv3Key": "",
+
+      // 商户API证书
+      // 使用V2退款、付款等接口时必填
+      // 使用V3接口时必填
+      // 可为证书文件路径 / 证书文件的base64字符串
+      "Certificate": "",
+
+      // 微信支付公钥Id
+      // 使用V3接口微信支付公钥时必填
+      "WeChatPayPublicKeyId": "",
+
+      // 微信支付公钥
+      // 使用V3接口微信支付公钥时必填
+      "WeChatPayPublicKey": "",
+
+      // RSA公钥
+      // 目前仅调用"企业付款到银行卡API [V2]"时使用,执行本示例中的"获取RSA加密公钥API [V2]"即可获取。
+      "RsaPublicKey": ""
+    },
+
+    // 支付宝
+    // 更多配置,请查看AlipayOptions类
+    "Alipay": {
+
+      // 注意: 
+      // 若涉及资金类支出接口(如转账、红包等)接入,必须使用“公钥证书”方式。不涉及到资金类接口,也可以使用“普通公钥”方式进行加签。
+      // 本示例默认的加签方式为“公钥证书”方式,并调用 CertificateExecuteAsync 方法 执行API。
+      // 若使用“普通公钥”方式,除了遵守下方注释的规则外,调用 CertificateExecuteAsync 也需改成 ExecuteAsync。
+      // 支付宝后台密钥/证书官方配置教程:https://opendocs.alipay.com/open/291/105971
+      // 密钥格式:请选择 PKCS1(非JAVA适用),切记 切记 切记
+
+      // 应用Id
+      // 为支付宝开放平台-APPID
+      "AppId": "",
+
+      // 支付宝公钥 RSA公钥
+      // 为支付宝开放平台-支付宝公钥
+      // “公钥证书”方式时,留空
+      // “普通公钥”方式时,必填
+      "AlipayPublicKey": "",
+
+      // 应用私钥 RSA私钥
+      // 为“支付宝开放平台开发助手”所生成的应用私钥
+      "AppPrivateKey": "",
+
+      // 服务网关地址
+      // 默认为正式环境地址
+      "ServerUrl": "https://openapi.alipay.com/gateway.do",
+
+      // 签名类型
+      // 支持:RSA2(SHA256WithRSA)、RSA1(SHA1WithRSA)
+      // 默认为RSA2
+      "SignType": "RSA2",
+
+      // 应用公钥证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AppPublicCert": "",
+
+      // 支付宝公钥证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AlipayPublicCert": "",
+
+      // 支付宝根证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AlipayRootCert": ""
+    }
   }
 }

+ 91 - 89
samples/WebApplicationSample/appsettings.json

@@ -11,94 +11,96 @@
   // 正式环境配置:appsettings.json
   // 开发环境配置:appsettings.Development.json
 
-  // 微信支付
-  // 更多配置,请查看WeChatPayOptions类
-  "WeChatPay": {
-    // 应用号
-    // 如:微信公众平台AppId、微信开放平台AppId、微信小程序AppId、企业微信CorpId等
-    "AppId": "",
-
-    // 商户号
-    // 为微信支付商户平台的商户号
-    "MchId": "",
-
-    // 商户API密钥
-    // 为微信支付商户平台的API密钥,请注意不是APIv3密钥
-    "APIKey": "",
-
-    // 商户APIv3密钥
-    // 为微信支付商户平台的APIv3密钥,请注意不是API密钥,v3接口必填
-    "APIv3Key": "",
-
-    // 商户API证书
-    // 使用V2退款、付款等接口时必填
-    // 使用V3接口时必填
-    // 可为证书文件路径 / 证书文件的base64字符串
-    "Certificate": "",
-
-    // 微信支付公钥Id
-    // 使用V3接口微信支付公钥时必填
-    "WeChatPayPublicKeyId": "",
-
-    // 微信支付公钥
-    // 使用V3接口微信支付公钥时必填
-    "WeChatPayPublicKey": "",
-
-    // RSA公钥
-    // 目前仅调用"企业付款到银行卡API [V2]"时使用,执行本示例中的"获取RSA加密公钥API [V2]"即可获取。
-    "RsaPublicKey": ""
-  },
-
-  // 支付宝
-  // 更多配置,请查看AlipayOptions类
-  "Alipay": {
-
-    // 注意: 
-    // 若涉及资金类支出接口(如转账、红包等)接入,必须使用“公钥证书”方式。不涉及到资金类接口,也可以使用“普通公钥”方式进行加签。
-    // 本示例默认的加签方式为“公钥证书”方式,并调用 CertificateExecuteAsync 方法 执行API。
-    // 若使用“普通公钥”方式,除了遵守下方注释的规则外,调用 CertificateExecuteAsync 也需改成 ExecuteAsync。
-    // 支付宝后台密钥/证书官方配置教程:https://opendocs.alipay.com/open/291/105971
-    // 密钥格式:请选择 PKCS1(非JAVA适用),切记 切记 切记
-
-    // 应用Id
-    // 为支付宝开放平台-APPID
-    "AppId": "",
-
-    // 支付宝公钥 RSA公钥
-    // 为支付宝开放平台-支付宝公钥
-    // “公钥证书”方式时,留空
-    // “普通公钥”方式时,必填
-    "AlipayPublicKey": "",
-
-    // 应用私钥 RSA私钥
-    // 为“支付宝开放平台开发助手”所生成的应用私钥
-    "AppPrivateKey": "",
-
-    // 服务网关地址
-    // 默认为正式环境地址
-    "ServerUrl": "https://openapi.alipay.com/gateway.do",
-
-    // 签名类型
-    // 支持:RSA2(SHA256WithRSA)、RSA1(SHA1WithRSA)
-    // 默认为RSA2
-    "SignType": "RSA2",
-
-    // 应用公钥证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AppPublicCert": "",
-
-    // 支付宝公钥证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AlipayPublicCert": "",
-
-    // 支付宝根证书
-    // 可为证书文件路径 / 证书文件的base64字符串
-    // “公钥证书”方式时,必填
-    // “普通公钥”方式时,留空
-    "AlipayRootCert": ""
+  "Paylink": {
+    // 微信支付
+    // 更多配置,请查看WeChatPayOptions类
+    "WeChatPay": {
+      // 应用号
+      // 如:微信公众平台AppId、微信开放平台AppId、微信小程序AppId、企业微信CorpId等
+      "AppId": "",
+
+      // 商户号
+      // 为微信支付商户平台的商户号
+      "MchId": "",
+
+      // 商户API密钥
+      // 为微信支付商户平台的API密钥,请注意不是APIv3密钥
+      "APIKey": "",
+
+      // 商户APIv3密钥
+      // 为微信支付商户平台的APIv3密钥,请注意不是API密钥,v3接口必填
+      "APIv3Key": "",
+
+      // 商户API证书
+      // 使用V2退款、付款等接口时必填
+      // 使用V3接口时必填
+      // 可为证书文件路径 / 证书文件的base64字符串
+      "Certificate": "",
+
+      // 微信支付公钥Id
+      // 使用V3接口微信支付公钥时必填
+      "WeChatPayPublicKeyId": "",
+
+      // 微信支付公钥
+      // 使用V3接口微信支付公钥时必填
+      "WeChatPayPublicKey": "",
+
+      // RSA公钥
+      // 目前仅调用"企业付款到银行卡API [V2]"时使用,执行本示例中的"获取RSA加密公钥API [V2]"即可获取。
+      "RsaPublicKey": ""
+    },
+
+    // 支付宝
+    // 更多配置,请查看AlipayOptions类
+    "Alipay": {
+
+      // 注意: 
+      // 若涉及资金类支出接口(如转账、红包等)接入,必须使用“公钥证书”方式。不涉及到资金类接口,也可以使用“普通公钥”方式进行加签。
+      // 本示例默认的加签方式为“公钥证书”方式,并调用 CertificateExecuteAsync 方法 执行API。
+      // 若使用“普通公钥”方式,除了遵守下方注释的规则外,调用 CertificateExecuteAsync 也需改成 ExecuteAsync。
+      // 支付宝后台密钥/证书官方配置教程:https://opendocs.alipay.com/open/291/105971
+      // 密钥格式:请选择 PKCS1(非JAVA适用),切记 切记 切记
+
+      // 应用Id
+      // 为支付宝开放平台-APPID
+      "AppId": "",
+
+      // 支付宝公钥 RSA公钥
+      // 为支付宝开放平台-支付宝公钥
+      // “公钥证书”方式时,留空
+      // “普通公钥”方式时,必填
+      "AlipayPublicKey": "",
+
+      // 应用私钥 RSA私钥
+      // 为“支付宝开放平台开发助手”所生成的应用私钥
+      "AppPrivateKey": "",
+
+      // 服务网关地址
+      // 默认为正式环境地址
+      "ServerUrl": "https://openapi.alipay.com/gateway.do",
+
+      // 签名类型
+      // 支持:RSA2(SHA256WithRSA)、RSA1(SHA1WithRSA)
+      // 默认为RSA2
+      "SignType": "RSA2",
+
+      // 应用公钥证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AppPublicCert": "",
+
+      // 支付宝公钥证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AlipayPublicCert": "",
+
+      // 支付宝根证书
+      // 可为证书文件路径 / 证书文件的base64字符串
+      // “公钥证书”方式时,必填
+      // “普通公钥”方式时,留空
+      "AlipayRootCert": ""
+    }
   }
 }