LianLianPayController.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System.Threading.Tasks;
  2. using Essensoft.AspNetCore.Payment.LianLianPay;
  3. using Essensoft.AspNetCore.Payment.LianLianPay.Notify;
  4. using Essensoft.AspNetCore.Payment.LianLianPay.Request;
  5. using Microsoft.AspNetCore.Mvc;
  6. using WebApplicationSample.Models;
  7. namespace WebApplicationSample.Controllers
  8. {
  9. public class LianLianPayController : Controller
  10. {
  11. private readonly ILianLianPayClient _client;
  12. private readonly ILianLianPayNotifyClient _notifyClient;
  13. public LianLianPayController(ILianLianPayClient client, ILianLianPayNotifyClient notifyClient)
  14. {
  15. _client = client;
  16. _notifyClient = notifyClient;
  17. }
  18. public IActionResult Index()
  19. {
  20. return View();
  21. }
  22. [HttpGet]
  23. public IActionResult WebQuickPay()
  24. {
  25. return View();
  26. }
  27. [HttpPost]
  28. public async Task<IActionResult> WebQuickPay(LianLianPayWebQuickPayViewModel viewModel)
  29. {
  30. var request = new LianLianPayCreateBillRequest
  31. {
  32. UserId = viewModel.UserId,
  33. NoOrder = viewModel.NoOrder,
  34. DtOrder = viewModel.DtOrder,
  35. NameGoods = viewModel.NameGoods,
  36. MoneyOrder = viewModel.MoneyOrder,
  37. NotifyUrl = viewModel.NotifyUrl,
  38. UrlReturn = viewModel.UrlReturn,
  39. RiskItem = viewModel.RiskItem,
  40. FlagPayProduct = "0",
  41. FlagChnl = "2"
  42. };
  43. var response = await _client.ExecuteAsync(request);
  44. return Redirect(response.GatewayUrl);
  45. }
  46. [HttpGet]
  47. public IActionResult H5QuickPay()
  48. {
  49. return View();
  50. }
  51. [HttpPost]
  52. public async Task<IActionResult> H5QuickPay(LianLianPayH5QuickPayViewModel viewModel)
  53. {
  54. var request = new LianLianPayCreateBillRequest
  55. {
  56. UserId = viewModel.UserId,
  57. NoOrder = viewModel.NoOrder,
  58. DtOrder = viewModel.DtOrder,
  59. NameGoods = viewModel.NameGoods,
  60. MoneyOrder = viewModel.MoneyOrder,
  61. NotifyUrl = viewModel.NotifyUrl,
  62. UrlReturn = viewModel.UrlReturn,
  63. RiskItem = viewModel.RiskItem,
  64. FlagPayProduct = "0",
  65. FlagChnl = "3"
  66. };
  67. var response = await _client.ExecuteAsync(request);
  68. return Redirect(response.GatewayUrl);
  69. }
  70. [HttpGet]
  71. public IActionResult OrderQuery()
  72. {
  73. return View();
  74. }
  75. [HttpPost]
  76. public async Task<IActionResult> OrderQuery(LianLianPayOrderQueryViewModel viewModel)
  77. {
  78. var request = new LianLianPayOrderQueryRequest
  79. {
  80. NoOrder = viewModel.NoOrder,
  81. DtOrder = viewModel.DtOrder,
  82. OidPayBill = viewModel.OidPayBill
  83. };
  84. var response = await _client.ExecuteAsync(request);
  85. ViewData["response"] = response.Body;
  86. return View();
  87. }
  88. [HttpGet]
  89. public IActionResult Refund()
  90. {
  91. return View();
  92. }
  93. [HttpPost]
  94. public async Task<IActionResult> Refund(LianLianPayRefundViewModel viewModel)
  95. {
  96. var request = new LianLianPayRefundRequest
  97. {
  98. NoRefund = viewModel.NoRefund,
  99. DtRefund = viewModel.DtRefund,
  100. MoneyRefund = viewModel.MoneyRefund,
  101. NoOrder = viewModel.NoOrder,
  102. DtOrder = viewModel.DtOrder,
  103. OidPaybill = viewModel.OidPayBill,
  104. NotifyUrl = viewModel.NotifyUrl
  105. };
  106. var response = await _client.ExecuteAsync(request);
  107. ViewData["response"] = response.Body;
  108. return View();
  109. }
  110. [HttpGet]
  111. public IActionResult RefundQuery()
  112. {
  113. return View();
  114. }
  115. [HttpPost]
  116. public async Task<IActionResult> RefundQuery(LianLianPayRefundQueryViewModel viewModel)
  117. {
  118. var request = new LianLianPayRefundQueryRequest
  119. {
  120. NoRefund = viewModel.NoRefund,
  121. DtRefund = viewModel.DtRefund,
  122. OidRefundNo = viewModel.OidRefundNo
  123. };
  124. var response = await _client.ExecuteAsync(request);
  125. ViewData["response"] = response.Body;
  126. return View();
  127. }
  128. [HttpPost]
  129. public async Task<IActionResult> QuickPayReturn()
  130. {
  131. try
  132. {
  133. var notify = await _notifyClient.ExecuteAsync<LianLianPayReceiveMoneyReturnResponse>(Request);
  134. ViewData["response"] = "支付成功";
  135. return View();
  136. }
  137. catch
  138. {
  139. ViewData["response"] = "出现错误";
  140. return View();
  141. }
  142. }
  143. }
  144. }