JdPayController.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using Essensoft.AspNetCore.Payment.JdPay;
  2. using Essensoft.AspNetCore.Payment.JdPay.Notify;
  3. using Essensoft.AspNetCore.Payment.JdPay.Request;
  4. using Microsoft.AspNetCore.Mvc;
  5. using System.Threading.Tasks;
  6. namespace WebApplicationSample.Controllers
  7. {
  8. public class JdPayController : Controller
  9. {
  10. private readonly JdPayClient _client = null;
  11. private readonly JdPayNotifyClient _notifyClient = null;
  12. public JdPayController(JdPayClient client, JdPayNotifyClient notifyClient)
  13. {
  14. _client = client;
  15. _notifyClient = notifyClient;
  16. }
  17. [HttpPost]
  18. public async Task<IActionResult> SaveOrderPC(string tradeNum, string tradeName, string tradeDesc, string tradeTime, string amount, string orderType, string currency, string note, string callbackUrl, string notifyUrl, string tradeType)
  19. {
  20. var request = new JdPaySaveOrderPCRequest()
  21. {
  22. TradeNum = tradeNum,
  23. TradeName = tradeName,
  24. TradeDesc = tradeDesc,
  25. TradeTime = tradeTime,
  26. Amount = amount,
  27. OrderType = orderType,
  28. Currency = currency,
  29. Note = note,
  30. CallbackUrl = callbackUrl,
  31. NotifyUrl = notifyUrl,
  32. };
  33. var response = await _client.PageExecuteAsync(request, "POST");
  34. return Content(response.Body, "text/html");
  35. }
  36. [HttpPost]
  37. public async Task<IActionResult> SaveOrderH5(string tradeNum, string tradeName, string tradeDesc, string tradeTime, string amount, string orderType, string currency, string note, string callbackUrl, string notifyUrl, string tradeType)
  38. {
  39. var request = new JdPaySaveOrderH5Request()
  40. {
  41. TradeNum = tradeNum,
  42. TradeName = tradeName,
  43. TradeDesc = tradeDesc,
  44. TradeTime = tradeTime,
  45. Amount = amount,
  46. OrderType = orderType,
  47. Currency = currency,
  48. Note = note,
  49. CallbackUrl = callbackUrl,
  50. NotifyUrl = notifyUrl,
  51. };
  52. var response = await _client.PageExecuteAsync(request, "POST");
  53. return Content(response.Body, "text/html");
  54. }
  55. [HttpPost]
  56. public async Task<IActionResult> Uniorder(string tradeNum, string tradeName, string tradeDesc, string tradeTime, string amount,
  57. string orderType, string currency, string note, string notifyUrl, string tradeType)
  58. {
  59. var request = new JdPayUnifiedOrderRequest()
  60. {
  61. TradeNum = tradeNum,
  62. TradeName = tradeName,
  63. TradeDesc = tradeDesc,
  64. TradeTime = tradeTime,
  65. Amount = amount,
  66. OrderType = orderType,
  67. Currency = currency,
  68. Note = note,
  69. NotifyUrl = notifyUrl,
  70. TradeType = tradeType
  71. };
  72. var response = await _client.ExecuteAsync(request);
  73. return Content(response.Body);
  74. }
  75. [HttpPost]
  76. public async Task<IActionResult> OrderQuery(string tradeNum, string oTradeNum)
  77. {
  78. var request = new JdPayOrderQueryRequest()
  79. {
  80. TradeNum = tradeNum,
  81. OTradeNum = oTradeNum
  82. };
  83. var response = await _client.ExecuteAsync(request);
  84. return Content(response.Body);
  85. }
  86. [HttpPost]
  87. public async Task<IActionResult> Refund(string tradeNum, string oTradeNum, long amount, string currency, string notifyUrl)
  88. {
  89. var request = new JdPayRefundRequest()
  90. {
  91. TradeNum = tradeNum,
  92. OTradeNum = oTradeNum,
  93. Amount = amount,
  94. Currency = currency,
  95. NotifyUrl = notifyUrl
  96. };
  97. var response = await _client.ExecuteAsync(request);
  98. return Content(response.Body);
  99. }
  100. [HttpPost]
  101. public async Task<IActionResult> RefundQuery(string tradeNum, string oTradeNum)
  102. {
  103. var request = new JdPayQueryRefundRequest()
  104. {
  105. TradeNum = tradeNum,
  106. OTradeNum = oTradeNum
  107. };
  108. var response = await _client.ExecuteAsync(request);
  109. return Content(response.Body);
  110. }
  111. [HttpGet] // h5 get
  112. [HttpPost] // pc post
  113. public async Task<IActionResult> Return()
  114. {
  115. try
  116. {
  117. var notify = await _notifyClient.ExecuteAsync<JdPaySyncReturnResponse>(Request);
  118. return Content("success", "text/plain");
  119. }
  120. catch
  121. {
  122. return Content("error", "text/plain");
  123. }
  124. }
  125. }
  126. }