AlipayController.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. using Essensoft.AspNetCore.Alipay;
  2. using Essensoft.AspNetCore.Alipay.Domain;
  3. using Essensoft.AspNetCore.Alipay.Request;
  4. using Microsoft.AspNetCore.Mvc;
  5. using System.Threading.Tasks;
  6. using Essensoft.AspNetCore.Alipay.Notify;
  7. namespace WebApplicationSample.Controllers
  8. {
  9. public class AlipayController : Controller
  10. {
  11. public readonly AlipayClient _client = null;
  12. private readonly AlipayNotifyClient _notifyClient = null;
  13. public AlipayController(AlipayClient client, AlipayNotifyClient notifyClient)
  14. {
  15. _client = client;
  16. _notifyClient = notifyClient;
  17. }
  18. [HttpPost]
  19. public async Task<IActionResult> PagePay(string out_trade_no, string subject, string total_amount, string body, string product_code, string notify_url, string return_url)
  20. {
  21. var model = new AlipayTradePagePayModel()
  22. {
  23. Body = body,
  24. Subject = subject,
  25. TotalAmount = total_amount,
  26. OutTradeNo = out_trade_no,
  27. ProductCode = product_code,
  28. };
  29. var req = new AlipayTradePagePayRequest();
  30. req.SetBizModel(model);
  31. req.SetNotifyUrl(notify_url);
  32. req.SetReturnUrl(return_url);
  33. var response = await _client.PageExecuteAsync(req, null, "GET");
  34. return Redirect(response.Body);
  35. }
  36. [HttpPost]
  37. public async Task<IActionResult> PreCreate(string out_trade_no, string subject, string total_amount, string body, string notify_url)
  38. {
  39. var builder = new AlipayTradePrecreateModel()
  40. {
  41. Body = body,
  42. Subject = subject,
  43. TotalAmount = total_amount,
  44. OutTradeNo = out_trade_no,
  45. };
  46. var req = new AlipayTradePrecreateRequest();
  47. req.SetBizModel(builder);
  48. req.SetNotifyUrl(notify_url);
  49. var response = await _client.ExecuteAsync(req);
  50. return Ok(response.Body);
  51. }
  52. [HttpPost]
  53. public async Task<IActionResult> Query(string out_trade_no, string trade_no)
  54. {
  55. var builder = new AlipayTradeQueryModel()
  56. {
  57. OutTradeNo = out_trade_no,
  58. TradeNo = trade_no
  59. };
  60. var req = new AlipayTradeQueryRequest();
  61. req.SetBizModel(builder);
  62. var response = await _client.ExecuteAsync(req);
  63. return Ok(response.Body);
  64. }
  65. [HttpPost]
  66. public async Task<IActionResult> Refund(string out_trade_no, string trade_no, string refund_amount, string refund_reason, string out_request_no)
  67. {
  68. var builder = new AlipayTradeRefundModel()
  69. {
  70. OutTradeNo = out_trade_no,
  71. TradeNo = trade_no,
  72. RefundAmount = refund_amount,
  73. OutRequestNo = out_request_no,
  74. RefundReason = refund_reason
  75. };
  76. var req = new AlipayTradeRefundRequest();
  77. req.SetBizModel(builder);
  78. var response = await _client.ExecuteAsync(req);
  79. return Ok(response.Body);
  80. }
  81. [HttpPost]
  82. public async Task<IActionResult> RefundQuery(string out_trade_no, string trade_no, string out_request_no)
  83. {
  84. var builder = new AlipayTradeFastpayRefundQueryModel()
  85. {
  86. OutTradeNo = out_trade_no,
  87. TradeNo = trade_no,
  88. OutRequestNo = out_request_no
  89. };
  90. var req = new AlipayTradeFastpayRefundQueryRequest();
  91. req.SetBizModel(builder);
  92. var response = await _client.ExecuteAsync(req);
  93. return Ok(response.Body);
  94. }
  95. [HttpPost]
  96. public async Task<IActionResult> Close(string out_trade_no, string trade_no)
  97. {
  98. var builder = new AlipayTradeCloseModel()
  99. {
  100. OutTradeNo = out_trade_no,
  101. TradeNo = trade_no,
  102. };
  103. var req = new AlipayTradeCloseRequest();
  104. req.SetBizModel(builder);
  105. var response = await _client.ExecuteAsync(req);
  106. return Ok(response.Body);
  107. }
  108. [HttpPost]
  109. public async Task<IActionResult> Trans(string out_biz_no, string payee_account, string payee_type, string amount, string remark)
  110. {
  111. var builder = new AlipayFundTransToaccountTransferModel()
  112. {
  113. OutBizNo = out_biz_no,
  114. PayeeType = payee_type,
  115. PayeeAccount = payee_account,
  116. Amount = amount,
  117. Remark = remark
  118. };
  119. var req = new AlipayFundTransToaccountTransferRequest();
  120. req.SetBizModel(builder);
  121. var response = await _client.ExecuteAsync(req);
  122. return Ok(response.Body);
  123. }
  124. [HttpPost]
  125. public async Task<IActionResult> TransQuery(string out_biz_no, string order_id)
  126. {
  127. var builder = new AlipayFundTransOrderQueryModel()
  128. {
  129. OutBizNo = out_biz_no,
  130. OrderId = order_id,
  131. };
  132. var req = new AlipayFundTransOrderQueryRequest();
  133. req.SetBizModel(builder);
  134. var response = await _client.ExecuteAsync(req);
  135. return Ok(response.Body);
  136. }
  137. [HttpPost]
  138. public async Task<IActionResult> BillDownloadurlQuery(string bill_date, string bill_type)
  139. {
  140. var builder = new AlipayDataDataserviceBillDownloadurlQueryModel()
  141. {
  142. BillDate = bill_date,
  143. BillType = bill_type
  144. };
  145. var req = new AlipayDataDataserviceBillDownloadurlQueryRequest();
  146. req.SetBizModel(builder);
  147. var response = await _client.ExecuteAsync(req);
  148. return Ok(response.Body);
  149. }
  150. [HttpGet]
  151. public IActionResult Return()
  152. {
  153. try
  154. {
  155. var notify = _notifyClient.Execute<AlipayTradePagePayReturnResponse>(Request);
  156. return Content("success", "text/plain");
  157. }
  158. catch
  159. {
  160. return Content("error", "text/plain");
  161. }
  162. }
  163. }
  164. }