JDPayController.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. using System.Text;
  2. using System.Threading.Tasks;
  3. using Essensoft.AspNetCore.Payment.JDPay;
  4. using Essensoft.AspNetCore.Payment.JDPay.Notify;
  5. using Essensoft.AspNetCore.Payment.JDPay.Request;
  6. using Microsoft.AspNetCore.Mvc;
  7. using WebApplicationSample.Models;
  8. namespace WebApplicationSample.Controllers
  9. {
  10. public class JDPayController : Controller
  11. {
  12. private readonly IJDPayClient _client;
  13. private readonly IJDPayNotifyClient _notifyClient;
  14. public JDPayController(IJDPayClient client, IJDPayNotifyClient notifyClient)
  15. {
  16. _client = client;
  17. _notifyClient = notifyClient;
  18. }
  19. public IActionResult Index()
  20. {
  21. return View();
  22. }
  23. [HttpGet]
  24. public IActionResult SaveOrderPC()
  25. {
  26. return View();
  27. }
  28. [HttpPost]
  29. public async Task<IActionResult> SaveOrderPC(JDPaySaveOrderViewModel viewModel)
  30. {
  31. var request = new JDPaySaveOrderPCRequest
  32. {
  33. TradeNum = viewModel.TradeNum,
  34. TradeName = viewModel.TradeName,
  35. TradeTime = viewModel.TradeTime,
  36. Amount = viewModel.Amount,
  37. OrderType = viewModel.OrderType,
  38. Currency = viewModel.Currency,
  39. CallbackUrl = viewModel.CallbackUrl,
  40. NotifyUrl = viewModel.NotifyUrl,
  41. UserId = viewModel.UserId
  42. };
  43. var response = await _client.PageExecuteAsync(request);
  44. return Content(response.Body, "text/html", Encoding.UTF8);
  45. }
  46. [HttpGet]
  47. public IActionResult SaveOrderH5()
  48. {
  49. return View();
  50. }
  51. [HttpPost]
  52. public async Task<IActionResult> SaveOrderH5(JDPaySaveOrderViewModel viewModel)
  53. {
  54. var request = new JDPaySaveOrderH5Request
  55. {
  56. TradeNum = viewModel.TradeNum,
  57. TradeName = viewModel.TradeName,
  58. TradeTime = viewModel.TradeTime,
  59. Amount = viewModel.Amount,
  60. OrderType = viewModel.OrderType,
  61. Currency = viewModel.Currency,
  62. CallbackUrl = viewModel.CallbackUrl,
  63. NotifyUrl = viewModel.NotifyUrl,
  64. UserId = viewModel.UserId
  65. };
  66. var response = await _client.PageExecuteAsync(request);
  67. return Content(response.Body, "text/html", Encoding.UTF8);
  68. }
  69. [HttpGet]
  70. public IActionResult QRPay()
  71. {
  72. return View();
  73. }
  74. [HttpPost]
  75. public async Task<IActionResult> QRPay(JDPayUnifiedOrderViewModel viewModel)
  76. {
  77. var request = new JDPayUnifiedOrderRequest
  78. {
  79. TradeNum = viewModel.TradeNum,
  80. TradeName = viewModel.TradeName,
  81. TradeTime = viewModel.TradeTime,
  82. Amount = viewModel.Amount,
  83. OrderType = viewModel.OrderType,
  84. Currency = viewModel.Currency,
  85. NotifyUrl = viewModel.NotifyUrl,
  86. TradeType = viewModel.TradeType
  87. };
  88. var response = await _client.ExecuteAsync(request);
  89. ViewData["qrcode"] = response.QrCode;
  90. ViewData["response"] = response.Body;
  91. return View();
  92. }
  93. [HttpGet]
  94. public IActionResult Query()
  95. {
  96. return View();
  97. }
  98. [HttpPost]
  99. public async Task<IActionResult> Query(JDPayQueryViewModel viewModel)
  100. {
  101. var request = new JDPayQueryRequest
  102. {
  103. TradeNum = viewModel.TradeNum,
  104. OTradeNum = viewModel.OTradeNum,
  105. TradeType = viewModel.TradeType
  106. };
  107. var response = await _client.ExecuteAsync(request);
  108. ViewData["response"] = response.Body;
  109. return View();
  110. }
  111. [HttpGet]
  112. public IActionResult Refund()
  113. {
  114. return View();
  115. }
  116. [HttpPost]
  117. public async Task<IActionResult> Refund(JDPayRefundViewModel viewModel)
  118. {
  119. var request = new JDPayRefundRequest
  120. {
  121. TradeNum = viewModel.TradeNum,
  122. OTradeNum = viewModel.OTradeNum,
  123. Amount = viewModel.Amount,
  124. Currency = viewModel.Currency,
  125. NotifyUrl = viewModel.NotifyUrl
  126. };
  127. var response = await _client.ExecuteAsync(request);
  128. ViewData["response"] = response.Body;
  129. return View();
  130. }
  131. [HttpGet]
  132. public IActionResult QueryRefund()
  133. {
  134. return View();
  135. }
  136. [HttpPost]
  137. public async Task<IActionResult> QueryRefund(JDPayQueryRefundViewModel viewModel)
  138. {
  139. var request = new JDPayQueryRefundRequest
  140. {
  141. TradeNum = viewModel.TradeNum,
  142. OTradeNum = viewModel.OTradeNum,
  143. TradeType = viewModel.TradeType
  144. };
  145. var response = await _client.ExecuteAsync(request);
  146. ViewData["response"] = response.Body;
  147. return View();
  148. }
  149. [HttpGet]
  150. public IActionResult DefrayPay()
  151. {
  152. return View();
  153. }
  154. [HttpPost]
  155. public async Task<IActionResult> DefrayPay(JDPayDefrayPayViewModel viewModel)
  156. {
  157. var request = new JDPayDefrayPayRequest
  158. {
  159. RequestDatetime = viewModel.RequestDatetime,
  160. OutTradeNo = viewModel.OutTradeNo,
  161. BizTradeNo = viewModel.BizTradeNo,
  162. OutTradeDate = viewModel.OutTradeDate,
  163. TradeAmount = viewModel.TradeAmount,
  164. TradeCurrency = viewModel.TradeCurrency,
  165. SellerInfo = viewModel.SellerInfo,
  166. TradeSubject = viewModel.TradeSubject,
  167. CategoryCode = viewModel.CategoryCode,
  168. PayTool = viewModel.PayTool,
  169. TradeSource = viewModel.TradeSource,
  170. PayeeBankCode = viewModel.PayeeBankCode,
  171. PayeeBankAssociatedCode = viewModel.PayeeBankAssociatedCode,
  172. PayeeBankFullname = viewModel.PayeeBankFullname,
  173. PayeeBankCountryCode = viewModel.PayeeBankCountryCode,
  174. PayeeBankProvinceCode = viewModel.PayeeBankProvinceCode,
  175. PayeeBankCityCode = viewModel.PayeeBankCityCode,
  176. PayeeCardType = viewModel.PayeeCardType,
  177. PayeeAccountType = viewModel.PayeeAccountType,
  178. PayeeAccountNo = viewModel.PayeeAccountNo,
  179. PayeeAccountName = viewModel.PayeeAccountName,
  180. PayeeIdType = viewModel.PayeeIdType,
  181. PayeeIdNo = viewModel.PayeeIdNo,
  182. PayeeMobile = viewModel.PayeeMobile,
  183. NotifyUrl = viewModel.NotifyUrl,
  184. ReturnParams = viewModel.ReturnParams,
  185. ExtendParams = viewModel.ExtendParams,
  186. BankCardInfoType = viewModel.BankCardInfoType,
  187. BankCardId = viewModel.BankCardId
  188. };
  189. var response = await _client.ExecuteAsync(request);
  190. ViewData["response"] = response.Body;
  191. return View();
  192. }
  193. [HttpGet]
  194. public IActionResult TradeQuery()
  195. {
  196. return View();
  197. }
  198. [HttpPost]
  199. public async Task<IActionResult> TradeQuery(JDPayTradeQueryViewModel viewModel)
  200. {
  201. var request = new JDPayTradeQueryRequest
  202. {
  203. RequestDatetime = viewModel.RequestDatetime,
  204. OutTradeNo = viewModel.OutTradeNo,
  205. TradeNo = viewModel.TradeNo,
  206. TradeType = viewModel.TradeType
  207. };
  208. var response = await _client.ExecuteAsync(request);
  209. ViewData["response"] = response.Body;
  210. return View();
  211. }
  212. [HttpGet] // h5 get
  213. [HttpPost] // pc post
  214. public async Task<IActionResult> Return()
  215. {
  216. try
  217. {
  218. var notify = await _notifyClient.ExecuteAsync<JDPaySyncReturnResponse>(Request);
  219. ViewData["response"] = "支付成功";
  220. return View();
  221. }
  222. catch
  223. {
  224. ViewData["response"] = "出现错误";
  225. return View();
  226. }
  227. }
  228. }
  229. }