WeChatPayController.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using Essensoft.AspNetCore.Payment.WeChatPay;
  2. using Essensoft.AspNetCore.Payment.WeChatPay.Request;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System.Threading.Tasks;
  5. namespace WebApplicationSample.Controllers
  6. {
  7. public class WeChatPayController : Controller
  8. {
  9. private readonly WeChatPayClient _client = null;
  10. private 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, string notify_url)
  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. NotifyUrl = notify_url,
  65. };
  66. var response = await _certClient.ExecuteAsync(request);
  67. return Ok(response.Body);
  68. }
  69. [HttpPost]
  70. public async Task<IActionResult> RefundQuery(string refund_id, string out_refund_no, string transaction_id, string out_trade_no)
  71. {
  72. var request = new WeChatPayRefundQueryRequest()
  73. {
  74. RefundId = refund_id,
  75. OutRefundNo = out_refund_no,
  76. TransactionId = transaction_id,
  77. OutTradeNo = out_trade_no,
  78. };
  79. var response = await _client.ExecuteAsync(request);
  80. return Ok(response.Body);
  81. }
  82. [HttpPost]
  83. public async Task<IActionResult> DownloadBill(string bill_date, string bill_type, string tar_type)
  84. {
  85. var request = new WeChatPayDownloadBillRequest()
  86. {
  87. BillDate = bill_date,
  88. BillType = bill_type,
  89. TarType = tar_type,
  90. };
  91. var response = await _client.ExecuteAsync(request);
  92. return Ok(response.Body);
  93. }
  94. [HttpPost]
  95. 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)
  96. {
  97. var request = new WeChatPayTransfersRequest()
  98. {
  99. PartnerTradeNo = partner_trade_no,
  100. OpenId = openid,
  101. CheckName = check_name,
  102. ReUserName = re_user_name,
  103. Amount = amount,
  104. Desc = desc,
  105. SpbillCreateIp = spbill_create_ip
  106. };
  107. var response = await _certClient.ExecuteAsync(request);
  108. return Ok(response.Body);
  109. }
  110. [HttpPost]
  111. public async Task<IActionResult> GetTransferInfo(string partner_trade_no)
  112. {
  113. var request = new WeChatPayGetTransferInfoRequest()
  114. {
  115. PartnerTradeNo = partner_trade_no,
  116. };
  117. var response = await _certClient.ExecuteAsync(request);
  118. return Ok(response.Body);
  119. }
  120. [HttpPost]
  121. public async Task<IActionResult> GetPublicKey()
  122. {
  123. var request = new WeChatPayGetPublicKeyRequest();
  124. var response = await _certClient.ExecuteAsync(request);
  125. return Ok(response.Body);
  126. }
  127. [HttpPost]
  128. public async Task<IActionResult> PayBank(string partner_trade_no, string bank_no, string true_name, string bank_code, int amount, string desc)
  129. {
  130. var request = new WeChatPayPayBankRequest()
  131. {
  132. PartnerTradeNo = partner_trade_no,
  133. EncBankNo = bank_no,
  134. EncTrueName = true_name,
  135. BankCode = bank_code,
  136. Amount = amount,
  137. Desc = desc,
  138. };
  139. var response = await _certClient.ExecuteAsync(request);
  140. return Ok(response.Body);
  141. }
  142. [HttpPost]
  143. public async Task<IActionResult> QueryBank(string partner_trade_no)
  144. {
  145. var request = new WeChatPayQueryBankRequest()
  146. {
  147. PartnerTradeNo = partner_trade_no,
  148. };
  149. var response = await _certClient.ExecuteAsync(request);
  150. return Ok(response.Body);
  151. }
  152. [HttpPost]
  153. public async Task<IActionResult> DownloadFundFlow(string bill_date, string account_type, string tar_type)
  154. {
  155. var request = new WeChatPayDownloadFundFlowRequest()
  156. {
  157. BillDate = bill_date,
  158. AccountType = account_type,
  159. TarType = tar_type,
  160. };
  161. var response = await _certClient.ExecuteAsync(request);
  162. return Ok(response.Body);
  163. }
  164. }
  165. }