LianLianPayController.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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 Microsoft.Extensions.Options;
  7. using WebApplicationSample.Models;
  8. namespace WebApplicationSample.Controllers
  9. {
  10. public class LianLianPayController : Controller
  11. {
  12. private readonly ILianLianPayClient _client;
  13. private readonly ILianLianPayNotifyClient _notifyClient;
  14. private readonly IOptions<LianLianPayOptions> _optionsAccessor;
  15. public LianLianPayController(ILianLianPayClient client, ILianLianPayNotifyClient notifyClient, IOptions<LianLianPayOptions> optionsAccessor)
  16. {
  17. _client = client;
  18. _notifyClient = notifyClient;
  19. _optionsAccessor = optionsAccessor;
  20. }
  21. /// <summary>
  22. /// 连连支付指引页
  23. /// </summary>
  24. /// <returns></returns>
  25. public IActionResult Index()
  26. {
  27. return View();
  28. }
  29. /// <summary>
  30. /// WEB快捷支付
  31. /// </summary>
  32. /// <returns></returns>
  33. [HttpGet]
  34. public IActionResult WebQuickPay()
  35. {
  36. return View();
  37. }
  38. /// <summary>
  39. /// WEB快捷支付
  40. /// </summary>
  41. /// <param name="viewModel"></param>
  42. /// <returns></returns>
  43. [HttpPost]
  44. public async Task<IActionResult> WebQuickPay(LianLianPayWebQuickPayViewModel viewModel)
  45. {
  46. var request = new LianLianPayCreateBillRequest
  47. {
  48. UserId = viewModel.UserId,
  49. NoOrder = viewModel.NoOrder,
  50. DtOrder = viewModel.DtOrder,
  51. NameGoods = viewModel.NameGoods,
  52. MoneyOrder = viewModel.MoneyOrder,
  53. NotifyUrl = viewModel.NotifyUrl,
  54. UrlReturn = viewModel.UrlReturn,
  55. RiskItem = viewModel.RiskItem,
  56. FlagPayProduct = "0",
  57. FlagChnl = "2"
  58. };
  59. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  60. return Redirect(response.GatewayUrl);
  61. }
  62. /// <summary>
  63. /// H5快捷支付
  64. /// </summary>
  65. /// <returns></returns>
  66. [HttpGet]
  67. public IActionResult H5QuickPay()
  68. {
  69. return View();
  70. }
  71. /// <summary>
  72. /// H5快捷支付
  73. /// </summary>
  74. /// <param name="viewModel"></param>
  75. /// <returns></returns>
  76. [HttpPost]
  77. public async Task<IActionResult> H5QuickPay(LianLianPayH5QuickPayViewModel viewModel)
  78. {
  79. var request = new LianLianPayCreateBillRequest
  80. {
  81. UserId = viewModel.UserId,
  82. NoOrder = viewModel.NoOrder,
  83. DtOrder = viewModel.DtOrder,
  84. NameGoods = viewModel.NameGoods,
  85. MoneyOrder = viewModel.MoneyOrder,
  86. NotifyUrl = viewModel.NotifyUrl,
  87. UrlReturn = viewModel.UrlReturn,
  88. RiskItem = viewModel.RiskItem,
  89. FlagPayProduct = "0",
  90. FlagChnl = "3"
  91. };
  92. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  93. return Redirect(response.GatewayUrl);
  94. }
  95. /// <summary>
  96. /// 订单查询
  97. /// </summary>
  98. /// <returns></returns>
  99. [HttpGet]
  100. public IActionResult OrderQuery()
  101. {
  102. return View();
  103. }
  104. /// <summary>
  105. /// 订单查询
  106. /// </summary>
  107. /// <param name="viewModel"></param>
  108. /// <returns></returns>
  109. [HttpPost]
  110. public async Task<IActionResult> OrderQuery(LianLianPayOrderQueryViewModel viewModel)
  111. {
  112. var request = new LianLianPayOrderQueryRequest
  113. {
  114. NoOrder = viewModel.NoOrder,
  115. DtOrder = viewModel.DtOrder,
  116. OidPayBill = viewModel.OidPayBill
  117. };
  118. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  119. ViewData["response"] = response.Body;
  120. return View();
  121. }
  122. /// <summary>
  123. /// 退款
  124. /// </summary>
  125. /// <returns></returns>
  126. [HttpGet]
  127. public IActionResult Refund()
  128. {
  129. return View();
  130. }
  131. /// <summary>
  132. /// 退款
  133. /// </summary>
  134. /// <param name="viewModel"></param>
  135. /// <returns></returns>
  136. [HttpPost]
  137. public async Task<IActionResult> Refund(LianLianPayRefundViewModel viewModel)
  138. {
  139. var request = new LianLianPayRefundRequest
  140. {
  141. NoRefund = viewModel.NoRefund,
  142. DtRefund = viewModel.DtRefund,
  143. MoneyRefund = viewModel.MoneyRefund,
  144. NoOrder = viewModel.NoOrder,
  145. DtOrder = viewModel.DtOrder,
  146. OidPaybill = viewModel.OidPayBill,
  147. NotifyUrl = viewModel.NotifyUrl
  148. };
  149. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  150. ViewData["response"] = response.Body;
  151. return View();
  152. }
  153. /// <summary>
  154. /// 退款查询
  155. /// </summary>
  156. /// <returns></returns>
  157. [HttpGet]
  158. public IActionResult RefundQuery()
  159. {
  160. return View();
  161. }
  162. /// <summary>
  163. /// 退款查询
  164. /// </summary>
  165. /// <param name="viewModel"></param>
  166. /// <returns></returns>
  167. [HttpPost]
  168. public async Task<IActionResult> RefundQuery(LianLianPayRefundQueryViewModel viewModel)
  169. {
  170. var request = new LianLianPayRefundQueryRequest
  171. {
  172. NoRefund = viewModel.NoRefund,
  173. DtRefund = viewModel.DtRefund,
  174. OidRefundNo = viewModel.OidRefundNo
  175. };
  176. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  177. ViewData["response"] = response.Body;
  178. return View();
  179. }
  180. /// <summary>
  181. /// 快捷支付 - 同步跳转
  182. /// </summary>
  183. /// <returns></returns>
  184. [HttpPost]
  185. public async Task<IActionResult> QuickPayReturn()
  186. {
  187. try
  188. {
  189. var notify = await _notifyClient.ExecuteAsync<LianLianPayReceiveMoneyReturnResponse>(Request, _optionsAccessor.Value);
  190. ViewData["response"] = "支付成功";
  191. return View();
  192. }
  193. catch
  194. {
  195. ViewData["response"] = "出现错误";
  196. return View();
  197. }
  198. }
  199. }
  200. }