Jelajahi Sumber

[WebApplicationSample] 新增 “添加分账接收方、单次分账 ”

Roc 4 tahun lalu
induk
melakukan
7c99a9d420

+ 52 - 1
samples/WebApplicationSample/Controllers/WeChatPayController.cs

@@ -127,7 +127,8 @@ namespace WebApplicationSample.Controllers
                 TotalFee = viewModel.TotalFee,
                 SpBillCreateIp = viewModel.SpBillCreateIp,
                 NotifyUrl = viewModel.NotifyUrl,
-                TradeType = viewModel.TradeType
+                TradeType = viewModel.TradeType,
+                ProfitSharing = viewModel.ProfitSharing
             };
 
             var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
@@ -582,5 +583,55 @@ namespace WebApplicationSample.Controllers
 
             return View();
         }
+
+        /// <summary>
+        /// 添加分账接收方
+        /// </summary>
+        [HttpGet]
+        public IActionResult ProfitSharingAddReceiver()
+        {
+            return View();
+        }
+
+        /// <summary>
+        /// 添加分账接收方
+        /// </summary>
+        [HttpPost]
+        public async Task<IActionResult> ProfitSharingAddReceiver(WeChatPayProfitSharingAddReceiverViewModel viewModel)
+        {
+            var request = new WeChatPayProfitSharingAddReceiverRequest
+            {
+                Receiver = viewModel.Receiver
+            };
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            ViewData["response"] = response.Body;
+            return View();
+        }
+
+        /// <summary>
+        /// 单次分账
+        /// </summary>
+        [HttpGet]
+        public IActionResult ProfitSharing()
+        {
+            return View();
+        }
+
+        /// <summary>
+        /// 单次分账
+        /// </summary>
+        [HttpPost]
+        public async Task<IActionResult> ProfitSharing(WeChatPayProfitSharingViewModel viewModel)
+        {
+            var request = new WeChatPayProfitSharingRequest
+            {
+                TransactionId = viewModel.TransactionId,
+                OutOrderNo = viewModel.OutOrderNo,
+                Receivers = viewModel.Receivers
+            };
+            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
+            ViewData["response"] = response.Body;
+            return View();
+        }
     }
 }

+ 24 - 0
samples/WebApplicationSample/Models/WeChatPayViewModel.cs

@@ -81,6 +81,9 @@ namespace WebApplicationSample.Models
         [Required]
         [Display(Name = "trade_type")]
         public string TradeType { get; set; }
+
+        [Display(Name = "profit_sharing")]
+        public string ProfitSharing { get; set; }
     }
 
     public class WeChatPayAppPayViewModel
@@ -332,4 +335,25 @@ namespace WebApplicationSample.Models
         [Display(Name = "partner_trade_no")]
         public string PartnerTradeNo { get; set; }
     }
+
+    public class WeChatPayProfitSharingAddReceiverViewModel
+    {
+        [Required]
+        [Display(Name = "receiver")]
+        public string Receiver { get; set; }
+    }
+
+    public class WeChatPayProfitSharingViewModel
+    {
+        [Display(Name = "transaction_id")]
+        public string TransactionId { get; set; }
+
+        [Required]
+        [Display(Name = "out_order_no")]
+        public string OutOrderNo { get; set; }
+
+        [Required]
+        [Display(Name = "receivers")]
+        public string Receivers { get; set; }
+    }
 }

+ 12 - 0
samples/WebApplicationSample/Views/WeChatPay/Index.cshtml

@@ -126,5 +126,17 @@
             <td><a href="https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7&index=4" target="_blank">https://fraud.mch.weixin.qq.com/risk/getpublickey</a></td>
             <td><a asp-controller="WeChatPay" asp-action="GetPublicKey">立即测试</a></td>
         </tr>
+        <tr>
+            <th scope="row">19</th>
+            <td>添加分账接收方</td>
+            <td><a href="https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_3&index=4" target="_blank">https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_3&index=4</a></td>
+            <td><a asp-controller="WeChatPay" asp-action="ProfitSharingAddReceiver">立即测试</a></td>
+        </tr>
+        <tr>
+            <th scope="row">20</th>
+            <td>单次分账</td>
+            <td><a href="https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_1&index=1" target="_blank">https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_1&index=1</a></td>
+            <td><a asp-controller="WeChatPay" asp-action="ProfitSharing">立即测试</a></td>
+        </tr>
     </tbody>
 </table>

+ 41 - 0
samples/WebApplicationSample/Views/WeChatPay/ProfitSharing.cshtml

@@ -0,0 +1,41 @@
+@model WeChatPayProfitSharingViewModel
+@{
+    ViewData["Title"] = "分账-单次分账";
+}
+<nav aria-label="breadcrumb">
+    <ol class="breadcrumb">
+        <li class="breadcrumb-item"><a asp-controller="WeChatPay" asp-action="Index">微信支付</a></li>
+        <li class="breadcrumb-item active" aria-current="page">@ViewData["Title"]</li>
+    </ol>
+</nav>
+<br />
+<div class="card">
+    <div class="card-body">
+        <form asp-controller="WeChatPay" asp-action="ProfitSharing">
+            <div asp-validation-summary="All" class="text-danger"></div>
+            <div class="form-group">
+                <label asp-for="TransactionId"></label>
+                <input type="text" class="form-control" asp-for="TransactionId">
+            </div>
+            <div class="form-group">
+                <label asp-for="OutOrderNo"></label>
+                <input type="text" class="form-control" asp-for="OutOrderNo" value="@DateTime.Now.ToString("yyyyMMddHHmmssfff")">
+            </div>
+            <div class="form-group">
+                <label asp-for="Receivers"></label>
+                <input type="text" class="form-control" asp-for="Receivers">
+            </div>
+            <button type="submit" class="btn btn-primary">提交请求</button>
+        </form>
+        <hr />
+        <form class="form-horizontal">
+            <div class="form-group">
+                <label>Response:</label>
+                <textarea class="form-control" rows="10">@ViewData["response"]</textarea>
+            </div>
+        </form>
+    </div>
+</div>
+@section Scripts {
+    @{await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
+}

+ 33 - 0
samples/WebApplicationSample/Views/WeChatPay/ProfitSharingAddReceiver.cshtml

@@ -0,0 +1,33 @@
+@model WeChatPayProfitSharingAddReceiverViewModel
+@{
+    ViewData["Title"] = "分账-添加分账接收方";
+}
+<nav aria-label="breadcrumb">
+    <ol class="breadcrumb">
+        <li class="breadcrumb-item"><a asp-controller="WeChatPay" asp-action="Index">微信支付</a></li>
+        <li class="breadcrumb-item active" aria-current="page">@ViewData["Title"]</li>
+    </ol>
+</nav>
+<br />
+<div class="card">
+    <div class="card-body">
+        <form asp-controller="WeChatPay" asp-action="ProfitSharingAddReceiver">
+            <div asp-validation-summary="All" class="text-danger"></div>
+            <div class="form-group">
+                <label asp-for="Receiver"></label>
+                <input type="text" class="form-control" asp-for="Receiver">
+            </div>
+            <button type="submit" class="btn btn-primary">提交请求</button>
+        </form>
+        <hr />
+        <form class="form-horizontal">
+            <div class="form-group">
+                <label>Response:</label>
+                <textarea class="form-control" rows="10">@ViewData["response"]</textarea>
+            </div>
+        </form>
+    </div>
+</div>
+@section Scripts {
+    @{await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
+}

+ 4 - 0
samples/WebApplicationSample/Views/WeChatPay/QrCodePay.cshtml

@@ -37,6 +37,10 @@
                 <label asp-for="TradeType"></label>
                 <input type="text" class="form-control" asp-for="TradeType" value="NATIVE">
             </div>
+            <div class="form-group">
+                <label asp-for="ProfitSharing"></label>
+                <input type="text" class="form-control" asp-for="ProfitSharing">
+            </div>
             <button type="submit" class="btn btn-primary">提交请求</button>
         </form>
         <hr />