Browse Source

重构 IWeChatPayGetRequest、IWeChatPayPostRequest、IWeChatPayPrivacyPostRequest

Roc 4 years ago
parent
commit
bc67a7b69b
53 changed files with 575 additions and 267 deletions
  1. 38 16
      samples/WebApplicationSample/Controllers/WeChatPayV3Controller.cs
  2. 19 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillDownloadQueryModel.cs
  3. 47 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillFundflowBillQueryModel.cs
  4. 60 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillTradeBillQueryModel.cs
  5. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsAppBodyModel.cs
  6. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsH5BodyModel.cs
  7. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsJsApiBodyModel.cs
  8. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsNativeBodyModel.cs
  9. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsOutTradeNoCloseBodyModel.cs
  10. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsBodyAppModel.cs
  11. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsH5BodyModel.cs
  12. 28 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsIdQueryModel.cs
  13. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsJsApiBodyModel.cs
  14. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsNativeBodyModel.cs
  15. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsOutTradeNoCloseBodyModel.cs
  16. 28 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsOutTradeNoQueryModel.cs
  17. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsAppBodyModel.cs
  18. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsH5BodyModel.cs
  19. 24 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsIdQueryModel.cs
  20. 3 3
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsJsApiBodyModel.cs
  21. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsNativeBodyModel.cs
  22. 2 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsOutTradeNoCloseBodyModel.cs
  23. 24 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsOutTradeNoQueryModel.cs
  24. 52 10
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Extensions/HttpClientExtensions.cs
  25. 11 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayGetRequest.cs
  26. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayPostRequest.cs
  27. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayPrivacyPostRequest.cs
  28. 15 9
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillDownloadRequest.cs
  29. 17 29
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillFundflowBillRequest.cs
  30. 17 41
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillTradeBillRequest.cs
  31. 13 2
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCertificatesRequest.cs
  32. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsAppRequest.cs
  33. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsH5Request.cs
  34. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsJsApiRequest.cs
  35. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsNativeRequest.cs
  36. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsOutTradeNoCloseRequest.cs
  37. 12 1
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsOutTradeNoRequest.cs
  38. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsAppRequest.cs
  39. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsH5Request.cs
  40. 12 14
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsIdRequest.cs
  41. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsJsApiRequest.cs
  42. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsNativeRequest.cs
  43. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsOutTradeNoCloseRequest.cs
  44. 12 14
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsOutTradeNoRequest.cs
  45. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsAppRequest.cs
  46. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsH5Request.cs
  47. 12 7
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsIdRequest.cs
  48. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsJsApiRequest.cs
  49. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsNativeRequest.cs
  50. 5 5
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsOutTradeNoCloseRequest.cs
  51. 12 7
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsOutTradeNoRequest.cs
  52. 1 1
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/WeChatPayClient.cs
  53. 5 0
      src/Essensoft.AspNetCore.Payment.WeChatPay/V3/WeChatPayTradeState.cs

+ 38 - 16
samples/WebApplicationSample/Controllers/WeChatPayV3Controller.cs

@@ -63,7 +63,7 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> AppPay(WeChatPayAppPayV3ViewModel viewModel)
         {
-            var model = new WeChatPayTransactionsAppModel
+            var model = new WeChatPayTransactionsAppBodyModel
             {
                 AppId = _optionsAccessor.Value.AppId,
                 MchId = _optionsAccessor.Value.MchId,
@@ -74,7 +74,7 @@ namespace WebApplicationSample.Controllers
             };
 
             var request = new WeChatPayTransactionsAppRequest();
-            request.SetQueryModel(model);
+            request.SetBodyModel(model);
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
@@ -114,7 +114,7 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> PubPay(WeChatPayPubPayV3ViewModel viewModel)
         {
-            var model = new WeChatPayTransactionsJsApiModel
+            var model = new WeChatPayTransactionsJsApiBodyModel
             {
                 AppId = _optionsAccessor.Value.AppId,
                 MchId = _optionsAccessor.Value.MchId,
@@ -126,7 +126,7 @@ namespace WebApplicationSample.Controllers
             };
 
             var request = new WeChatPayTransactionsJsApiRequest();
-            request.SetQueryModel(model);
+            request.SetBodyModel(model);
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
@@ -166,7 +166,7 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> QrCodePay(WeChatPayQrCodePayV3ViewModel viewModel)
         {
-            var model = new WeChatPayTransactionsNativeModel
+            var model = new WeChatPayTransactionsNativeBodyModel
             {
                 AppId = _optionsAccessor.Value.AppId,
                 MchId = _optionsAccessor.Value.MchId,
@@ -177,7 +177,7 @@ namespace WebApplicationSample.Controllers
             };
 
             var request = new WeChatPayTransactionsNativeRequest();
-            request.SetQueryModel(model);
+            request.SetBodyModel(model);
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
@@ -203,7 +203,7 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> H5Pay(WeChatPayH5PayV3ViewModel viewModel)
         {
-            var model = new WeChatPayTransactionsH5Model
+            var model = new WeChatPayTransactionsH5BodyModel
             {
                 AppId = _optionsAccessor.Value.AppId,
                 MchId = _optionsAccessor.Value.MchId,
@@ -215,7 +215,7 @@ namespace WebApplicationSample.Controllers
             };
 
             var request = new WeChatPayTransactionsH5Request();
-            request.SetQueryModel(model);
+            request.SetBodyModel(model);
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
@@ -241,12 +241,18 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> QueryByTransactionId(WeChatPayQueryByTransactionIdViewModel viewModel)
         {
-            var request = new WeChatPayTransactionsIdRequest
+            var model = new WeChatPayTransactionsIdQueryModel
             {
-                TransactionId = viewModel.TransactionId,
                 MchId = _optionsAccessor.Value.MchId,
             };
 
+            var request = new WeChatPayTransactionsIdRequest
+            {
+                TransactionId = viewModel.TransactionId
+            };
+
+            request.SetQueryModel(model);
+
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
             ViewData["response"] = response.Body;
@@ -269,12 +275,18 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> QueryByOutTradeNo(WeChatPayQueryByOutTradeNoViewModel viewModel)
         {
+            var model = new WeChatPayTransactionsOutTradeNoQueryModel
+            {
+                MchId = _optionsAccessor.Value.MchId,
+            };
+
             var request = new WeChatPayTransactionsOutTradeNoRequest
             {
                 OutTradeNo = viewModel.OutTradeNo,
-                MchId = _optionsAccessor.Value.MchId,
             };
 
+            request.SetQueryModel(model);
+
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
             ViewData["response"] = response.Body;
@@ -297,7 +309,7 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> OutTradeNoClose(WeChatPayOutTradeNoCloseViewModel viewModel)
         {
-            var model = new WeChatPayTransactionsOutTradeNoCloseModel
+            var model = new WeChatPayTransactionsOutTradeNoCloseBodyModel
             {
                 MchId = _optionsAccessor.Value.MchId,
             };
@@ -307,7 +319,7 @@ namespace WebApplicationSample.Controllers
                 OutTradeNo = viewModel.OutTradeNo,
             };
 
-            request.SetQueryModel(model);
+            request.SetBodyModel(model);
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
@@ -331,11 +343,15 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> TradeBill(WeChatPayTradeBillViewModel viewModel)
         {
-            var request = new WeChatPayBillTradeBillRequest
+            var model = new WeChatPayBillTradeBillQueryModel
             {
                 BillDate = viewModel.BillDate
             };
 
+            var request = new WeChatPayBillTradeBillRequest();
+
+            request.SetQueryModel(model);
+
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
             ViewData["response"] = response.Body;
@@ -358,11 +374,14 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> FundflowBill(WeChatPayFundflowBillViewModel viewModel)
         {
-            var request = new WeChatPayBillFundflowBillRequest
+            var model = new WeChatPayBillFundflowBillQueryModel
             {
                 BillDate = viewModel.BillDate
             };
 
+            var request = new WeChatPayBillFundflowBillRequest();
+            request.SetQueryModel(model);
+
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
             ViewData["response"] = response.Body;
@@ -385,11 +404,14 @@ namespace WebApplicationSample.Controllers
         [HttpPost]
         public async Task<IActionResult> BillDownload(WeChatPayBillDownloadViewModel viewModel)
         {
-            var request = new WeChatPayBillDownloadRequest
+            var model = new WeChatPayBillDownloadQueryModel()
             {
                 DownloadUrl = viewModel.DownloadUrl
             };
 
+            var request = new WeChatPayBillDownloadRequest();
+            request.SetQueryModel(model);
+
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
 
             ViewData["response"] = response.Body;

+ 19 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillDownloadQueryModel.cs

@@ -0,0 +1,19 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 账单-下载账单API(电商平台、服务商、直连商户) - 请求URL参数
+    /// 最新更新时间:2019.09.16
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_3.shtml
+
+    /// </summary>
+    public class WeChatPayBillDownloadQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 下载地址
+        /// </summary>
+        [JsonPropertyName("download_url")]
+        public string DownloadUrl { get; set; }
+    }
+}

+ 47 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillFundflowBillQueryModel.cs

@@ -0,0 +1,47 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 申请资金账单API(电商平台、服务商、直连商户) - 请求URL参数
+    /// 最新更新时间:2019.09.16
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_7.shtml
+    /// </summary>
+    public class WeChatPayBillFundflowBillQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 账单日期
+        /// 格式YYYY-MM-DD
+        /// 仅支持三个月内的账单下载申请。
+        /// 示例值:2019-06-11
+        /// </summary>
+        [JsonPropertyName("bill_date")]
+        public string BillDate { get; set; }
+
+        /// <summary>
+        /// 资金账户类型
+        /// 不填则默认是BASIC
+        /// 枚举值:
+        /// BASIC:基本账户
+        /// OPERATION:运营账户
+        /// FEES:手续费账户
+        /// 示例值:BASIC
+        /// </summary>
+        [JsonPropertyName("account_type")]
+        public string AccountType { get; set; }
+
+        /// <summary>
+        /// 压缩类型
+        /// 不填则默认是数据流
+        /// 枚举值:
+        /// GZIP:返回格式为.gzip的压缩包账单
+        /// 示例值:GZIP
+        /// </summary>
+        [JsonPropertyName("tar_type")]
+        public string TarType { get; set; }
+    }
+}

+ 60 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayBillTradeBillQueryModel.cs

@@ -0,0 +1,60 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 申请交易账单API(电商平台、服务商、直连商户) - 请求URL参数
+    /// 最新更新时间:2019.09.16
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_6.shtml
+    /// </summary>
+    public class WeChatPayBillTradeBillQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 账单日期
+        /// 格式YYYY-MM-DD
+        /// 仅支持三个月内的账单下载申请。
+        /// 示例值:2019-06-11
+        /// </summary>
+        [JsonPropertyName("bill_date")]
+        public string BillDate { get; set; }
+
+        /// <summary>
+        /// 二级商户号
+        /// 1、若商户是直连商户:无需填写该字段。
+        /// 2、若商户是服务商:
+        /// ● 不填则默认返回服务商下的交易或退款数据。
+        /// ● 如需下载某个子商户下的交易或退款数据,则该字段必填。
+        /// 特殊规则:最小字符长度为8
+        /// 注意:仅适用于电商平台 服务商
+        /// 示例值:1900000001
+        /// </summary>
+        [JsonPropertyName("sub_mchid")]
+        public string SubMchId { get; set; }
+
+        /// <summary>
+        /// 账单类型
+        /// 不填则默认是ALL
+        /// 枚举值:
+        /// ALL:返回当日所有订单信息(不含充值退款订单)
+        /// SUCCESS:返回当日成功支付的订单(不含充值退款订单)
+        /// REFUND:返回当日退款订单(不含充值退款订单)
+        /// 示例值:ALL
+        /// </summary>
+        [JsonPropertyName("bill_type")]
+        public string BillType { get; set; }
+
+        /// <summary>
+        /// 压缩类型
+        /// 不填则默认是数据流
+        /// 枚举值:
+        /// GZIP:返回格式为.gzip的压缩包账单
+        /// 示例值:GZIP
+        /// </summary>
+        [JsonPropertyName("tar_type")]
+        public string TarType { get; set; }
+    }
+}

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsAppModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsAppBodyModel.cs

@@ -5,11 +5,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 合单APP下单API-请求参数(电商平台、服务商、直连商户)
+    /// 合单APP下单API(电商平台、服务商、直连商户) - 请求JSON参数
     /// 最新更新时间:2020.05.21
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_1.shtml
     /// </summary>
-    public class WeChatPayCombineTransactionsAppModel : WeChatPayObject
+    public class WeChatPayCombineTransactionsAppBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 合单商户appid

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsH5Model.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsH5BodyModel.cs

@@ -5,11 +5,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 合单H5下单API-请求参数(电商平台、服务商、直连商户)
+    /// 合单H5下单API(电商平台、服务商、直连商户) - 请求JSON参数
     /// 最新更新时间:2020.06.09
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_2.shtml
     /// </summary>
-    public class WeChatPayCombineTransactionsH5Model : WeChatPayObject
+    public class WeChatPayCombineTransactionsH5BodyModel : WeChatPayObject
     {
         /// <summary>
         /// 合单商户appid

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsJsApiModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsJsApiBodyModel.cs

@@ -5,12 +5,12 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 合单JSAPI下单API、合单小程序下单API-请求参数(电商平台、服务商、直连商户)
+    /// 合单JSAPI下单API、合单小程序下单API(电商平台、服务商、直连商户) - 请求JSON参数
     /// 最新更新时间:2020.05.21
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_3.shtml
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_4.shtml
     /// </summary>
-    public class WeChatPayCombineTransactionsJsApiModel : WeChatPayObject
+    public class WeChatPayCombineTransactionsJsApiBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 合单商户appid

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsNativeModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsNativeBodyModel.cs

@@ -5,11 +5,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 合单Native下单API-请求参数(电商平台、服务商、直连商户)
+    /// 合单Native下单API(电商平台、服务商、直连商户) - 请求JSON参数
     /// 最新更新时间:2020.05.14
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_5.shtml
     /// </summary>
-    public class WeChatPayCombineTransactionsNativeModel : WeChatPayObject
+    public class WeChatPayCombineTransactionsNativeBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 合单商户appid

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsOutTradeNoCloseModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayCombineTransactionsOutTradeNoCloseBodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 合单关闭订单API-请求参数(电商平台、服务商、直连商户)
+    /// 合单关闭订单API(电商平台、服务商、直连商户) - 请求JSON参数
     /// 最新更新时间:2020.03.31
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_12.shtml
     /// </summary>
-    public class WeChatPayCombineTransactionsOutTradeNoCloseModel : WeChatPayObject
+    public class WeChatPayCombineTransactionsOutTradeNoCloseBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 合单商户appid

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsAppModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsBodyAppModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// APP下单API-请求参数(服务商)
+    /// APP下单API(服务商) - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_1.shtml
     /// </summary>
-    public class WeChatPayPartnerTransactionsAppModel : WeChatPayObject
+    public class WeChatPayPartnerTransactionsAppBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 服务商公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsH5Model.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsH5BodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// H5下单API-请求参数(服务商)
+    /// H5下单API(服务商) - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_4.shtml
     /// </summary>
-    public class WeChatPayPartnerTransactionsH5Model : WeChatPayObject
+    public class WeChatPayPartnerTransactionsH5BodyModel : WeChatPayObject
     {
         /// <summary>
         /// 服务商公众号ID

+ 28 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsIdQueryModel.cs

@@ -0,0 +1,28 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 查询订单API - 微信支付订单号查询(服务商) - 请求URL参数
+    /// 最新更新时间:2020.05.26
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_5.shtml
+    /// </summary>
+    public class WeChatPayPartnerTransactionsIdQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 服务商户号
+        /// 服务商户号,由微信支付生成并下发
+        /// 示例值:1230000109
+        /// </summary>
+        [JsonPropertyName("sp_mchid")]
+        public string SpMchId { get; set; }
+
+        /// <summary>
+        /// 子商户号
+        /// 子商户的商户号,有微信支付生成并下发。
+        /// 示例值:1900000109
+        /// </summary>
+        [JsonPropertyName("sub_mchid")]
+        public string SubMchId { get; set; }
+    }
+}

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsJsApiModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsJsApiBodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// JSAPI下单API-请求参数(服务商)
+    /// JSAPI下单API(服务商) - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_2.shtml
     /// </summary>
-    public class WeChatPayPartnerTransactionsJsApiModel : WeChatPayObject
+    public class WeChatPayPartnerTransactionsJsApiBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 服务商公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsNativeModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsNativeBodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// Native下单API-请求参数(服务商)
+    /// Native下单API(服务商) - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_3.shtml
     /// </summary>
-    public class WeChatPayPartnerTransactionsNativeModel : WeChatPayObject
+    public class WeChatPayPartnerTransactionsNativeBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 服务商公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsOutTradeNoCloseModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsOutTradeNoCloseBodyModel.cs

@@ -3,11 +3,11 @@
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 关闭订单API-请求参数(服务商)
+    /// 关闭订单API(服务商) - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter5_6.shtml
     /// </summary>
-    public class WeChatPayPartnerTransactionsOutTradeNoCloseModel : WeChatPayObject
+    public class WeChatPayPartnerTransactionsOutTradeNoCloseBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 服务商户号

+ 28 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayPartnerTransactionsOutTradeNoQueryModel.cs

@@ -0,0 +1,28 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 查询订单API - 商户订单号查询(服务商) - 请求URL参数
+    /// 最新更新时间:2020.05.26
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter3_5.shtml
+    /// </summary>
+    public class WeChatPayPartnerTransactionsOutTradeNoQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 服务商户号
+        /// 服务商户号,由微信支付生成并下发
+        /// 示例值:1230000109
+        /// </summary>
+        [JsonPropertyName("sp_mchid")]
+        public string SpMchId { get; set; }
+
+        /// <summary>
+        /// 子商户号
+        /// 子商户的商户号,有微信支付生成并下发。
+        /// 示例值:1900000109
+        /// </summary>
+        [JsonPropertyName("sub_mchid")]
+        public string SubMchId { get; set; }
+    }
+}

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsAppModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsAppBodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// APP支付-统一下单API-请求参数
+    /// APP支付-统一下单API - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_1.shtml
     /// </summary>
-    public class WeChatPayTransactionsAppModel : WeChatPayObject
+    public class WeChatPayTransactionsAppBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsH5Model.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsH5BodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// H5支付-统一下单API-请求参数
+    /// H5支付-统一下单API - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_1.shtml
     /// </summary>
-    public class WeChatPayTransactionsH5Model : WeChatPayObject
+    public class WeChatPayTransactionsH5BodyModel : WeChatPayObject
     {
         /// <summary>
         /// 公众号ID

+ 24 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsIdQueryModel.cs

@@ -0,0 +1,24 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 查询订单API - 微信支付订单号查询 - 请求URL参数
+    /// 最新更新时间:2021.1.14
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_2.shtml
+    /// </summary>
+    public class WeChatPayTransactionsIdQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 直连商户号
+        /// 直连商户的商户号,由微信支付生成并下发。
+        /// 示例值:1230000109
+        /// </summary>
+        [JsonPropertyName("mchid")]
+        public string MchId { get; set; }
+    }
+}

+ 3 - 3
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsJsApiModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsJsApiBodyModel.cs

@@ -4,13 +4,13 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// JSAPI支付-统一下单API-请求参数
-    /// 小程序支付-统一下单API-请求参数
+    /// JSAPI支付-统一下单API - 请求JSON参数
+    /// 小程序支付-统一下单API - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml
     /// </summary>
-    public class WeChatPayTransactionsJsApiModel : WeChatPayObject
+    public class WeChatPayTransactionsJsApiBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsNativeModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsNativeBodyModel.cs

@@ -4,11 +4,11 @@ using System.Text.Json.Serialization;
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// Native支付-统一下单API-请求参数
+    /// Native支付-统一下单API - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml
     /// </summary>
-    public class WeChatPayTransactionsNativeModel : WeChatPayObject
+    public class WeChatPayTransactionsNativeBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 公众号ID

+ 2 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsOutTradeNoCloseModel.cs → src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsOutTradeNoCloseBodyModel.cs

@@ -3,7 +3,7 @@
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
 {
     /// <summary>
-    /// 关单API-请求参数
+    /// 关单API - 请求JSON参数
     /// 最新更新时间:2020.05.26
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_3.shtml
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_3.shtml
@@ -11,7 +11,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_3.shtml
     /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_3.shtml
     /// </summary>
-    public class WeChatPayTransactionsOutTradeNoCloseModel : WeChatPayObject
+    public class WeChatPayTransactionsOutTradeNoCloseBodyModel : WeChatPayObject
     {
         /// <summary>
         /// 直连商户号

+ 24 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayTransactionsOutTradeNoQueryModel.cs

@@ -0,0 +1,24 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 查询订单API - 商户订单号查询 - 请求URL参数
+    /// 最新更新时间:2021.1.14
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_2.shtml
+    /// </summary>
+    public class WeChatPayTransactionsOutTradeNoQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 直连商户号
+        /// 直连商户的商户号,由微信支付生成并下发。
+        /// 示例值:1230000109
+        /// </summary>
+        [JsonPropertyName("mchid")]
+        public string MchId { get; set; }
+    }
+}

+ 52 - 10
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Extensions/HttpClientExtensions.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using System.Linq;
 using System.Net.Http;
 using System.Net.Http.Headers;
@@ -7,6 +8,8 @@ using System.Text.Encodings.Web;
 using System.Text.Json;
 using System.Threading.Tasks;
 using Essensoft.AspNetCore.Payment.Security;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Request;
 
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Extensions
 {
@@ -16,7 +19,33 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Extensions
 
         public static async Task<(WeChatPayHeaders headers, string body, int statusCode)> GetAsync<T>(this HttpClient client, IWeChatPayGetRequest<T> request, WeChatPayOptions options) where T : WeChatPayResponse
         {
-            var url = request.GetRequestUrl();
+            string url;
+
+            if (request is WeChatPayBillDownloadRequest && request.GetQueryModel() is WeChatPayBillDownloadQueryModel queryModel)
+            {
+                url = queryModel.DownloadUrl;
+            }
+
+            if (request is WeChatPayCertificatesRequest)
+            {
+                url = request.GetRequestUrl();
+            }
+            else
+            {
+                url = request.GetRequestUrl();
+
+                if (url.Contains("?"))
+                {
+                    var txtParams = QueryModelConvertToDictionary(request);
+                    url += "&" + WeChatPayUtility.BuildQuery(txtParams);
+                }
+                else
+                {
+                    var txtParams = QueryModelConvertToDictionary(request);
+                    url += "?" + WeChatPayUtility.BuildQuery(txtParams);
+                }
+            }
+
             var token = BuildToken(url, "GET", null, options);
 
             client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("WECHATPAY2-SHA256-RSA2048", token);
@@ -37,7 +66,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Extensions
         public static async Task<(WeChatPayHeaders headers, string body, int statusCode)> PostAsync<T>(this HttpClient client, IWeChatPayPostRequest<T> request, WeChatPayOptions options) where T : WeChatPayResponse
         {
             var url = request.GetRequestUrl();
-            var content = SerializeQueryModel(request);
+            var content = SerializeBodyModel(request);
             var token = BuildToken(url, "POST", content, options);
 
             client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("WECHATPAY2-SHA256-RSA2048", token);
@@ -59,7 +88,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Extensions
         public static async Task<(WeChatPayHeaders headers, string body, int statusCode)> PostAsync<T>(this HttpClient client, IWeChatPayPrivacyPostRequest<T> request, WeChatPayOptions options, string serialNo) where T : WeChatPayResponse
         {
             var url = request.GetRequestUrl();
-            var content = SerializeQueryModel(request);
+            var content = SerializeBodyModel(request);
             var token = BuildToken(url, "POST", content, options);
 
             client.DefaultRequestHeaders.Add(WeChatPayConsts.Wechatpay_Serial, serialNo);
@@ -79,26 +108,39 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Extensions
             }
         }
 
-        private static string SerializeQueryModel<T>(IWeChatPayPostRequest<T> request) where T : WeChatPayResponse
+        private static IDictionary<string, string> QueryModelConvertToDictionary<T>(IWeChatPayGetRequest<T> request) where T : WeChatPayResponse
         {
             var queryModel = request.GetQueryModel();
             if (queryModel != null)
             {
-                return JsonSerializer.Serialize(queryModel, queryModel.GetType(), jsonSerializerOptions);
+                var str = JsonSerializer.Serialize(queryModel, queryModel.GetType(), jsonSerializerOptions);
+
+                return JsonSerializer.Deserialize<IDictionary<string, string>>(str, jsonSerializerOptions);
             }
 
             throw new WeChatPayException("QueryModel is null!");
         }
 
-        private static string SerializeQueryModel<T>(IWeChatPayPrivacyPostRequest<T> request) where T : WeChatPayResponse
+        private static string SerializeBodyModel<T>(IWeChatPayPostRequest<T> request) where T : WeChatPayResponse
         {
-            var queryModel = request.GetQueryModel();
-            if (queryModel != null)
+            var bodyModel = request.GetBodyModel();
+            if (bodyModel != null)
             {
-                return JsonSerializer.Serialize(queryModel, queryModel.GetType(), jsonSerializerOptions);
+                return JsonSerializer.Serialize(bodyModel, bodyModel.GetType(), jsonSerializerOptions);
             }
 
-            throw new WeChatPayException("QueryModel is null!");
+            throw new WeChatPayException("BodyModel is null!");
+        }
+
+        private static string SerializeBodyModel<T>(IWeChatPayPrivacyPostRequest<T> request) where T : WeChatPayResponse
+        {
+            var bodyModel = request.GetBodyModel();
+            if (bodyModel != null)
+            {
+                return JsonSerializer.Serialize(bodyModel, bodyModel.GetType(), jsonSerializerOptions);
+            }
+
+            throw new WeChatPayException("BodyModel is null!");
         }
 
         private static string BuildToken(string url, string method, string body, WeChatPayOptions options)

+ 11 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayGetRequest.cs

@@ -11,6 +11,17 @@
         /// </summary>
         string GetRequestUrl();
 
+        /// <summary>
+        /// 获取QueryModel
+        /// </summary>
+        WeChatPayObject GetQueryModel();
+
+        /// <summary>
+        /// 设置QueryModel
+        /// </summary>
+        /// <param name="queryModel"></param>
+        void SetQueryModel(WeChatPayObject queryModel);
+
         /// <summary>
         /// 是否需要检查响应内容签名
         /// </summary>

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayPostRequest.cs

@@ -12,14 +12,14 @@
         string GetRequestUrl();
 
         /// <summary>
-        /// 获取QueryModel
+        /// 获取BodyModel
         /// </summary>
-        WeChatPayObject GetQueryModel();
+        WeChatPayObject GetBodyModel();
 
         /// <summary>
-        /// 设置QueryModel
+        /// 设置BodyModel
         /// </summary>
-        /// <param name="queryModel"></param>
-        void SetQueryModel(WeChatPayObject queryModel);
+        /// <param name="bodyModel"></param>
+        void SetBodyModel(WeChatPayObject bodyModel);
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/IWeChatPayPrivacyPostRequest.cs

@@ -12,14 +12,14 @@
         string GetRequestUrl();
 
         /// <summary>
-        /// 获取QueryModel
+        /// 获取BodyModel
         /// </summary>
-        WeChatPayObject GetQueryModel();
+        WeChatPayObject GetBodyModel();
 
         /// <summary>
-        /// 设置QueryModel
+        /// 设置BodyModel
         /// </summary>
-        /// <param name="queryModel"></param>
-        void SetQueryModel(WeChatPayObject queryModel);
+        /// <param name="bodyModel"></param>
+        void SetBodyModel(WeChatPayObject bodyModel);
     }
 }

+ 15 - 9
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillDownloadRequest.cs

@@ -1,22 +1,28 @@
-using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
+using System;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
 
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 {
     /// <summary>
-    /// 账单-下载账单API(电商平台、服务商、直连商户)
+    /// 下载账单API(电商平台、服务商、直连商户)
     /// 最新更新时间:2019.09.16
-    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_3.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_8.shtml
     /// </summary>
     public class WeChatPayBillDownloadRequest : IWeChatPayGetRequest<WeChatPayBillDownloadResponse>
     {
-        /// <summary>
-        /// 下载地址
-        /// </summary>
-        public string DownloadUrl { get; set; }
-
         public string GetRequestUrl()
         {
-            return DownloadUrl;
+            throw new NotImplementedException();
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            throw new NotImplementedException();
         }
 
         public bool GetNeedCheckSign()

+ 17 - 29
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillFundflowBillRequest.cs

@@ -3,43 +3,31 @@
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 {
     /// <summary>
-    /// 账单-申请资金账单API(电商平台、服务商、直连商户)
+    /// 申请资金账单API(电商平台、服务商、直连商户)
     /// 最新更新时间:2019.09.16
-    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_2.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_7.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_7.shtml
     /// </summary>
     public class WeChatPayBillFundflowBillRequest : IWeChatPayGetRequest<WeChatPayBillFundflowBillResponse>
     {
-        /// <summary>
-        /// 账单日期
-        /// 格式YYYY-MM-DD
-        /// 仅支持三个月内的账单下载申请。
-        /// 示例值:2019-06-11
-        /// </summary>
-        public string BillDate { get; set; }
+        private WeChatPayObject queryModel;
 
-        /// <summary>
-        /// 资金账户类型
-        /// 不填则默认是BASIC
-        /// 枚举值:
-        /// BASIC:基本账户
-        /// OPERATION:运营账户
-        /// FEES:手续费账户
-        /// 示例值:BASIC
-        /// </summary>
-        public string AccountType { get; set; }
+        public string GetRequestUrl()
+        {
+            return "https://api.mch.weixin.qq.com/v3/bill/fundflowbill";
+        }
 
-        /// <summary>
-        /// 压缩类型
-        /// 不填则默认是数据流
-        /// 枚举值:
-        /// GZIP:返回格式为.gzip的压缩包账单
-        /// 示例值:GZIP
-        /// </summary>
-        public string TarType { get; set; }
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
 
-        public string GetRequestUrl()
+        public void SetQueryModel(WeChatPayObject queryModel)
         {
-            return $"{$"https://api.mch.weixin.qq.com/v3/bill/fundflowbill?bill_date={BillDate}"}{(string.IsNullOrEmpty(AccountType) ? string.Empty : $"&account_type={AccountType}")}{(string.IsNullOrEmpty(TarType) ? string.Empty : $"&tar_type={TarType}")}";
+            this.queryModel = queryModel;
         }
     }
 }

+ 17 - 41
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayBillTradeBillRequest.cs

@@ -3,55 +3,31 @@
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 {
     /// <summary>
-    /// 账单-申请交易账单API(电商平台、服务商、直连商户)
+    /// 申请交易账单API(电商平台、服务商、直连商户)
     /// 最新更新时间:2019.09.16
-    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_1.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_6.shtml
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_6.shtml
     /// </summary>
     public class WeChatPayBillTradeBillRequest : IWeChatPayGetRequest<WeChatPayBillTradeBillResponse>
     {
-        /// <summary>
-        /// 账单日期
-        /// 格式YYYY-MM-DD
-        /// 仅支持三个月内的账单下载申请。
-        /// 示例值:2019-06-11
-        /// </summary>
-        public string BillDate { get; set; }
+        private WeChatPayObject queryModel;
 
-        /// <summary>
-        /// 二级商户号
-        /// 1、若商户是直连商户:无需填写该字段。
-        /// 2、若商户是服务商:
-        /// ● 不填则默认返回服务商下的交易或退款数据。
-        /// ● 如需下载某个子商户下的交易或退款数据,则该字段必填。
-        /// 特殊规则:最小字符长度为8
-        /// 注意:仅适用于电商平台 服务商
-        /// 示例值:1900000001
-        /// </summary>
-        public string SubMchId { get; set; }
-
-        /// <summary>
-        /// 账单类型
-        /// 不填则默认是ALL
-        /// 枚举值:
-        /// ALL:返回当日所有订单信息(不含充值退款订单)
-        /// SUCCESS:返回当日成功支付的订单(不含充值退款订单)
-        /// REFUND:返回当日退款订单(不含充值退款订单)
-        /// 示例值:ALL
-        /// </summary>
-        public string BillType { get; set; }
+        public string GetRequestUrl()
+        {
+            return "https://api.mch.weixin.qq.com/v3/bill/tradebill";
+        }
 
-        /// <summary>
-        /// 压缩类型
-        /// 不填则默认是数据流
-        /// 枚举值:
-        /// GZIP:返回格式为.gzip的压缩包账单
-        /// 示例值:GZIP
-        /// </summary>
-        public string TarType { get; set; }
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
 
-        public string GetRequestUrl()
+        public void SetQueryModel(WeChatPayObject queryModel)
         {
-            return $"{$"https://api.mch.weixin.qq.com/v3/bill/tradebill?bill_date={BillDate}"}{(string.IsNullOrEmpty(SubMchId) ? string.Empty : $"&sub_mchid={SubMchId}")}{(string.IsNullOrEmpty(BillType) ? string.Empty : $"&bill_type={BillType}")}{(string.IsNullOrEmpty(TarType) ? string.Empty : $"&tar_type={TarType}")}";
+            this.queryModel = queryModel;
         }
     }
 }

+ 13 - 2
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCertificatesRequest.cs

@@ -1,10 +1,11 @@
-using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
+using System;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
 
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 {
     /// <summary>
     /// 获取平台证书列表
-    /// https://wechatpay-api.gitbook.io/wechatpay-api-v3/jie-kou-wen-dang/ping-tai-zheng-shu
+    /// https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml
     /// </summary>
     public class WeChatPayCertificatesRequest : IWeChatPayGetRequest<WeChatPayCertificatesResponse>
     {
@@ -13,6 +14,16 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
             return "https://api.mch.weixin.qq.com/v3/certificates";
         }
 
+        public WeChatPayObject GetQueryModel()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            throw new NotImplementedException();
+        }
+
         public bool GetNeedCheckSign()
         {
             return false;

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsAppRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayCombineTransactionsAppRequest : IWeChatPayPostRequest<WeChatPayCombineTransactionsAppResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/combine-transactions/app";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsH5Request.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayCombineTransactionsH5Request : IWeChatPayPostRequest<WeChatPayCombineTransactionsH5Response>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/combine-transactions/h5";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsJsApiRequest.cs

@@ -10,21 +10,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayCombineTransactionsJsApiRequest : IWeChatPayPostRequest<WeChatPayCombineTransactionsJsApiResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/combine-transactions/jsapi";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsNativeRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayCombineTransactionsNativeRequest : IWeChatPayPostRequest<WeChatPayCombineTransactionsNativeResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/combine-transactions/native";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsOutTradeNoCloseRequest.cs

@@ -16,21 +16,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
         /// </summary>
         public string CombineOutTradeNo { get; set; }
 
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return $"https://api.mch.weixin.qq.com/v3/combine-transactions/out-trade-no/{CombineOutTradeNo}/close";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 12 - 1
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayCombineTransactionsOutTradeNoRequest.cs

@@ -1,4 +1,5 @@
-using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
+using System;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
 
 namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 {
@@ -20,5 +21,15 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
         {
             return $"https://api.mch.weixin.qq.com/v3/combine-transactions/out-trade-no/{CombineOutTradeNo}";
         }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            throw new NotImplementedException();
+        }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsAppRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsAppRequest : IWeChatPayPostRequest<WeChatPayPartnerTransactionsAppResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/partner/transactions/app";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsH5Request.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsH5Request : IWeChatPayPostRequest<WeChatPayPartnerTransactionsH5Response>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/partner/transactions/h5";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 12 - 14
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsIdRequest.cs

@@ -9,19 +9,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsIdRequest : IWeChatPayGetRequest<WeChatPayPartnerTransactionsIdResponse>
     {
-        /// <summary>
-        /// 服务商户号
-        /// 服务商户号,由微信支付生成并下发
-        /// 示例值:1230000109
-        /// </summary>
-        public string SpMchId { get; set; }
-
-        /// <summary>
-        /// 子商户号
-        /// 子商户的商户号,有微信支付生成并下发。
-        /// 示例值:1900000109
-        /// </summary>
-        public string SubMchId { get; set; }
+        private WeChatPayObject queryModel;
 
         /// <summary>
         /// 微信支付订单号
@@ -32,7 +20,17 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 
         public string GetRequestUrl()
         {
-            return $"https://api.mch.weixin.qq.com/v3/pay/partner/transactions/id/{TransactionId}?sp_mchid={SpMchId}&sub_mchid={SubMchId}";
+            return $"https://api.mch.weixin.qq.com/v3/pay/partner/transactions/id/{TransactionId}";
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            this.queryModel = queryModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsJsApiRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsJsApiRequest : IWeChatPayPostRequest<WeChatPayPartnerTransactionsJsApiResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/partner/transactions/jsapi";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsNativeRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsNativeRequest : IWeChatPayPostRequest<WeChatPayPartnerTransactionsNativeResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/partner/transactions/native";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsOutTradeNoCloseRequest.cs

@@ -17,21 +17,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
         /// </summary>
         public string OutTradeNo { get; set; }
 
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return $"https://api.mch.weixin.qq.com/v3/pay/partner/transactions/out-trade-no/{OutTradeNo}/close";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 12 - 14
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayPartnerTransactionsOutTradeNoRequest.cs

@@ -9,19 +9,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayPartnerTransactionsOutTradeNoRequest : IWeChatPayGetRequest<WeChatPayPartnerTransactionsOutTradeNoResponse>
     {
-        /// <summary>
-        /// 服务商户号
-        /// 服务商户号,由微信支付生成并下发
-        /// 示例值:1230000109
-        /// </summary>
-        public string SpMchId { get; set; }
-
-        /// <summary>
-        /// 子商户号
-        /// 子商户的商户号,有微信支付生成并下发。
-        /// 示例值:1900000109
-        /// </summary>
-        public string SubMchId { get; set; }
+        private WeChatPayObject queryModel;
 
         /// <summary>
         /// 商户订单号
@@ -33,7 +21,17 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 
         public string GetRequestUrl()
         {
-            return $"https://api.mch.weixin.qq.com/v3/pay/partner/transactions/out-trade-no/{OutTradeNo}?sp_mchid={SpMchId}&sub_mchid={SubMchId}";
+            return $"https://api.mch.weixin.qq.com/v3/pay/partner/transactions/out-trade-no/{OutTradeNo}";
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            this.queryModel = queryModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsAppRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsAppRequest : IWeChatPayPostRequest<WeChatPayTransactionsAppResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/transactions/app";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsH5Request.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsH5Request : IWeChatPayPostRequest<WeChatPayTransactionsH5Response>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/transactions/h5";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 12 - 7
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsIdRequest.cs

@@ -9,12 +9,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsIdRequest : IWeChatPayGetRequest<WeChatPayTransactionsIdResponse>
     {
-        /// <summary>
-        /// 直连商户号
-        /// 直连商户的商户号,由微信支付生成并下发。
-        /// 示例值:1230000109
-        /// </summary>
-        public string MchId { get; set; }
+        private WeChatPayObject queryModel;
 
         /// <summary>
         /// 微信支付订单号
@@ -25,7 +20,17 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 
         public string GetRequestUrl()
         {
-            return $"https://api.mch.weixin.qq.com/v3/pay/transactions/id/{TransactionId}?mchid={MchId}";
+            return $"https://api.mch.weixin.qq.com/v3/pay/transactions/id/{TransactionId}";
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            this.queryModel = queryModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsJsApiRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsJsApiRequest : IWeChatPayPostRequest<WeChatPayTransactionsJsApiResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsNativeRequest.cs

@@ -9,21 +9,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsNativeRequest : IWeChatPayPostRequest<WeChatPayTransactionsNativeResponse>
     {
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return "https://api.mch.weixin.qq.com/v3/pay/transactions/native";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 5 - 5
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsOutTradeNoCloseRequest.cs

@@ -17,21 +17,21 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
         /// </summary>
         public string OutTradeNo { get; set; }
 
-        private WeChatPayObject queryModel;
+        private WeChatPayObject bodyModel;
 
         public string GetRequestUrl()
         {
             return $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{OutTradeNo}/close";
         }
 
-        public WeChatPayObject GetQueryModel()
+        public WeChatPayObject GetBodyModel()
         {
-            return queryModel;
+            return bodyModel;
         }
 
-        public void SetQueryModel(WeChatPayObject queryModel)
+        public void SetBodyModel(WeChatPayObject bodyModel)
         {
-            this.queryModel = queryModel;
+            this.bodyModel = bodyModel;
         }
     }
 }

+ 12 - 7
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayTransactionsOutTradeNoRequest.cs

@@ -9,12 +9,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
     /// </summary>
     public class WeChatPayTransactionsOutTradeNoRequest : IWeChatPayGetRequest<WeChatPayTransactionsOutTradeNoResponse>
     {
-        /// <summary>
-        /// 直连商户号
-        /// 直连商户的商户号,由微信支付生成并下发。
-        /// 示例值:1230000109
-        /// </summary>
-        public string MchId { get; set; }
+        private WeChatPayObject queryModel;
 
         /// <summary>
         /// 商户订单号
@@ -26,7 +21,17 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
 
         public string GetRequestUrl()
         {
-            return $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{OutTradeNo}?mchid={MchId}";
+            return $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{OutTradeNo}";
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            this.queryModel = queryModel;
         }
     }
 }

+ 1 - 1
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/WeChatPayClient.cs

@@ -151,7 +151,7 @@ namespace Essensoft.AspNetCore.Payment.WeChatPay.V3
 
             var cert = await _platformCertificateManager.GetCertificateAsync(this, options);
 
-            EncryptPrivacyProperty(cert.Certificate.GetRSAPublicKey(), request.GetQueryModel());
+            EncryptPrivacyProperty(cert.Certificate.GetRSAPublicKey(), request.GetBodyModel());
 
             var client = _httpClientFactory.CreateClient(Name);
             var (headers, body, statusCode) = await client.PostAsync(request, options, cert.SerialNo);

+ 5 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/WeChatPayTradeState.cs

@@ -39,5 +39,10 @@
         /// 支付失败(其他原因,如银行返回失败)
         /// </summary>
         public const string PayError = "PAYERROR";
+
+        /// <summary>
+        /// 已接收,等待扣款
+        /// </summary>
+        public const string Accept = "ACCEPT";
     }
 }