WeChatPayController.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using Essensoft.AspNetCore.WeChatPay;
  2. using Essensoft.AspNetCore.WeChatPay.Request;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System.Threading.Tasks;
  5. namespace WebApplicationSample.Controllers
  6. {
  7. public class WeChatPayController : Controller
  8. {
  9. public readonly WeChatPayClient _client = null;
  10. public readonly WeChatPayCertificateClient _certClient = null;
  11. public WeChatPayController(WeChatPayClient client, WeChatPayCertificateClient certClient)
  12. {
  13. _client = client;
  14. _certClient = certClient;
  15. }
  16. [HttpPost]
  17. public async Task<IActionResult> UnifiedOrder(string out_trade_no, string body, int total_fee, string spbill_create_ip, string notify_url, string trade_type, string openid)
  18. {
  19. var request = new WeChatPayUnifiedOrderRequest()
  20. {
  21. OutTradeNo = out_trade_no,
  22. Body = body,
  23. TotalFee = total_fee,
  24. SpbillCreateIp = spbill_create_ip,
  25. NotifyUrl = notify_url,
  26. TradeType = trade_type,
  27. OpenId = openid,
  28. };
  29. var response = await _client.ExecuteAsync(request);
  30. return Ok(response.Body);
  31. }
  32. [HttpPost]
  33. public async Task<IActionResult> OrderQuery(string transaction_id, string out_trade_no)
  34. {
  35. var request = new WeChatPayOrderQueryRequest()
  36. {
  37. TransactionId = transaction_id,
  38. OutTradeNo = out_trade_no,
  39. };
  40. var response = await _client.ExecuteAsync(request);
  41. return Ok(response.Body);
  42. }
  43. [HttpPost]
  44. public async Task<IActionResult> CloseOrder(string out_trade_no)
  45. {
  46. var request = new WeChatPayCloseOrderRequest()
  47. {
  48. OutTradeNo = out_trade_no,
  49. };
  50. var response = await _client.ExecuteAsync(request);
  51. return Ok(response.Body);
  52. }
  53. [HttpPost]
  54. public async Task<IActionResult> Refund(string out_refund_no, string transaction_id, string out_trade_no, int total_fee, int refund_fee, string refund_desc)
  55. {
  56. var request = new WeChatPayRefundRequest()
  57. {
  58. OutRefundNo = out_refund_no,
  59. TransactionId = transaction_id,
  60. OutTradeNo = out_trade_no,
  61. TotalFee = total_fee,
  62. RefundFee = refund_fee,
  63. RefundDesc = refund_desc,
  64. };
  65. var response = await _certClient.ExecuteAsync(request);
  66. return Ok(response.Body);
  67. }
  68. [HttpPost]
  69. public async Task<IActionResult> RefundQuery(string refund_id, string out_refund_no, string transaction_id, string out_trade_no)
  70. {
  71. var request = new WeChatPayRefundQueryRequest()
  72. {
  73. RefundId = refund_id,
  74. OutRefundNo = out_refund_no,
  75. TransactionId = transaction_id,
  76. OutTradeNo = out_trade_no,
  77. };
  78. var response = await _client.ExecuteAsync(request);
  79. return Ok(response.Body);
  80. }
  81. [HttpPost]
  82. public async Task<IActionResult> DownloadBill(string bill_date, string bill_type, string tar_type)
  83. {
  84. var request = new WeChatPayDownloadBillRequest()
  85. {
  86. BillDate = bill_date,
  87. BillType = bill_type,
  88. TarType = tar_type,
  89. };
  90. var response = await _client.ExecuteAsync(request);
  91. return Ok(response.Body);
  92. }
  93. [HttpPost]
  94. public async Task<IActionResult> Transfers(string partner_trade_no, string openid, string check_name, string re_user_name, int amount, string desc, string spbill_create_ip)
  95. {
  96. var request = new WeChatPayTransfersRequest()
  97. {
  98. PartnerTradeNo = partner_trade_no,
  99. OpenId = openid,
  100. CheckName = check_name,
  101. ReUserName = re_user_name,
  102. Amount = amount,
  103. Desc = desc,
  104. SpbillCreateIp = spbill_create_ip
  105. };
  106. var response = await _certClient.ExecuteAsync(request);
  107. return Ok(response.Body);
  108. }
  109. [HttpPost]
  110. public async Task<IActionResult> GetTransferInfo(string partner_trade_no)
  111. {
  112. var request = new WeChatPayGetTransferInfoRequest()
  113. {
  114. PartnerTradeNo = partner_trade_no,
  115. };
  116. var response = await _certClient.ExecuteAsync(request);
  117. return Ok(response.Body);
  118. }
  119. [HttpPost]
  120. public async Task<IActionResult> GetPublicKey()
  121. {
  122. var request = new WeChatPayGetPublicKeyRequest();
  123. var response = await _certClient.ExecuteAsync(request);
  124. return Ok(response.Body);
  125. }
  126. [HttpPost]
  127. public async Task<IActionResult> PayBank(string partner_trade_no, string bank_no, string true_name, string bank_code, int amount, string desc)
  128. {
  129. var request = new WeChatPayPayBankRequest()
  130. {
  131. PartnerTradeNo = partner_trade_no,
  132. EncBankNo = bank_no,
  133. EncTrueName = true_name,
  134. BankCode = bank_code,
  135. Amount = amount,
  136. Desc = desc,
  137. };
  138. var response = await _certClient.ExecuteAsync(request);
  139. return Ok(response.Body);
  140. }
  141. [HttpPost]
  142. public async Task<IActionResult> QueryBank(string partner_trade_no)
  143. {
  144. var request = new WeChatPayQueryBankRequest()
  145. {
  146. PartnerTradeNo = partner_trade_no,
  147. };
  148. var response = await _certClient.ExecuteAsync(request);
  149. return Ok(response.Body);
  150. }
  151. }
  152. }