QPayController.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. using System.Threading.Tasks;
  2. using Essensoft.AspNetCore.Payment.QPay;
  3. using Essensoft.AspNetCore.Payment.QPay.Request;
  4. using Microsoft.AspNetCore.Mvc;
  5. using WebApplicationSample.Models;
  6. namespace WebApplicationSample.Controllers
  7. {
  8. public class QPayController : Controller
  9. {
  10. private readonly IQPayClient _client;
  11. public QPayController(IQPayClient client)
  12. {
  13. _client = client;
  14. }
  15. /// <summary>
  16. /// QQ钱包指引页
  17. /// </summary>
  18. /// <returns></returns>
  19. public IActionResult Index()
  20. {
  21. return View();
  22. }
  23. /// <summary>
  24. /// 付款码支付
  25. /// </summary>
  26. /// <returns></returns>
  27. [HttpGet]
  28. public IActionResult MicroPay()
  29. {
  30. return View();
  31. }
  32. /// <summary>
  33. /// 付款码支付
  34. /// </summary>
  35. /// <param name="viewModel"></param>
  36. /// <returns></returns>
  37. [HttpPost]
  38. public async Task<IActionResult> MicroPay(QPayMicroPayViewModel viewModel)
  39. {
  40. var request = new QPayMicroPayRequest
  41. {
  42. OutTradeNo = viewModel.OutTradeNo,
  43. Body = viewModel.Body,
  44. FeeType = viewModel.FeeType,
  45. TotalFee = viewModel.TotalFee,
  46. SpbillCreateIp = viewModel.SpbillCreateIp,
  47. DeviceInfo = viewModel.DeviceInfo,
  48. AuthCode = viewModel.AuthCode,
  49. TradeType = viewModel.TradeType,
  50. NotifyUrl = viewModel.NotifyUrl
  51. };
  52. var response = await _client.ExecuteAsync(request);
  53. ViewData["response"] = response.Body;
  54. return View();
  55. }
  56. /// <summary>
  57. /// 扫码支付
  58. /// </summary>
  59. /// <returns></returns>
  60. [HttpGet]
  61. public IActionResult QrCodePay()
  62. {
  63. return View();
  64. }
  65. /// <summary>
  66. /// 扫码支付
  67. /// </summary>
  68. /// <param name="viewModel"></param>
  69. /// <returns></returns>
  70. [HttpPost]
  71. public async Task<IActionResult> QrCodePay(QPayUnifiedOrderViewModel viewModel)
  72. {
  73. var request = new QPayUnifiedOrderRequest
  74. {
  75. OutTradeNo = viewModel.OutTradeNo,
  76. Body = viewModel.Body,
  77. FeeType = viewModel.FeeType,
  78. TotalFee = viewModel.TotalFee,
  79. SpbillCreateIp = viewModel.SpbillCreateIp,
  80. TradeType = viewModel.TradeType,
  81. NotifyUrl = viewModel.NotifyUrl
  82. };
  83. var response = await _client.ExecuteAsync(request);
  84. ViewData["qrcode"] = response.CodeUrl;
  85. ViewData["response"] = response.Body;
  86. return View();
  87. }
  88. /// <summary>
  89. /// 公众号支付
  90. /// </summary>
  91. /// <returns></returns>
  92. [HttpGet]
  93. public IActionResult PubPay()
  94. {
  95. return View();
  96. }
  97. /// <summary>
  98. /// 公众号支付
  99. /// </summary>
  100. /// <param name="viewModel"></param>
  101. /// <returns></returns>
  102. [HttpPost]
  103. public async Task<IActionResult> PubPay(QPayUnifiedOrderViewModel viewModel)
  104. {
  105. var request = new QPayUnifiedOrderRequest
  106. {
  107. OutTradeNo = viewModel.OutTradeNo,
  108. Body = viewModel.Body,
  109. FeeType = viewModel.FeeType,
  110. TotalFee = viewModel.TotalFee,
  111. SpbillCreateIp = viewModel.SpbillCreateIp,
  112. TradeType = viewModel.TradeType,
  113. NotifyUrl = viewModel.NotifyUrl
  114. };
  115. var response = await _client.ExecuteAsync(request);
  116. ViewData["response"] = response.Body;
  117. return View();
  118. }
  119. /// <summary>
  120. /// APP支付
  121. /// </summary>
  122. /// <returns></returns>
  123. [HttpGet]
  124. public IActionResult AppPay()
  125. {
  126. return View();
  127. }
  128. /// <summary>
  129. /// APP支付
  130. /// </summary>
  131. /// <param name="viewModel"></param>
  132. /// <returns></returns>
  133. [HttpPost]
  134. public async Task<IActionResult> AppPay(QPayUnifiedOrderViewModel viewModel)
  135. {
  136. var request = new QPayUnifiedOrderRequest
  137. {
  138. OutTradeNo = viewModel.OutTradeNo,
  139. Body = viewModel.Body,
  140. FeeType = viewModel.FeeType,
  141. TotalFee = viewModel.TotalFee,
  142. SpbillCreateIp = viewModel.SpbillCreateIp,
  143. TradeType = viewModel.TradeType,
  144. NotifyUrl = viewModel.NotifyUrl
  145. };
  146. var response = await _client.ExecuteAsync(request);
  147. ViewData["response"] = response.Body;
  148. return View();
  149. }
  150. /// <summary>
  151. /// 订单查询
  152. /// </summary>
  153. /// <returns></returns>
  154. [HttpGet]
  155. public IActionResult OrderQuery()
  156. {
  157. return View();
  158. }
  159. /// <summary>
  160. /// 订单查询
  161. /// </summary>
  162. /// <param name="viewModel"></param>
  163. /// <returns></returns>
  164. [HttpPost]
  165. public async Task<IActionResult> OrderQuery(QPayOrderQueryViewModel viewModel)
  166. {
  167. var request = new QPayOrderQueryRequest
  168. {
  169. TransactionId = viewModel.TransactionId,
  170. OutTradeNo = viewModel.OutTradeNo
  171. };
  172. var response = await _client.ExecuteAsync(request);
  173. ViewData["response"] = response.Body;
  174. return View();
  175. }
  176. /// <summary>
  177. /// 撤销订单
  178. /// </summary>
  179. /// <returns></returns>
  180. [HttpGet]
  181. public IActionResult Reverse()
  182. {
  183. return View();
  184. }
  185. /// <summary>
  186. /// 撤销订单
  187. /// </summary>
  188. /// <param name="viewModel"></param>
  189. /// <returns></returns>
  190. [HttpPost]
  191. public async Task<IActionResult> Reverse(QPayReverseViewModel viewModel)
  192. {
  193. var request = new QPayReverseRequest
  194. {
  195. OutTradeNo = viewModel.OutTradeNo
  196. };
  197. var response = await _client.ExecuteAsync(request, "qpayCertificateName");
  198. ViewData["response"] = response.Body;
  199. return View();
  200. }
  201. /// <summary>
  202. /// 关闭订单
  203. /// </summary>
  204. /// <returns></returns>
  205. [HttpGet]
  206. public IActionResult CloseOrder()
  207. {
  208. return View();
  209. }
  210. /// <summary>
  211. /// 关闭订单
  212. /// </summary>
  213. /// <param name="viewModel"></param>
  214. /// <returns></returns>
  215. [HttpPost]
  216. public async Task<IActionResult> CloseOrder(QPayCloseOrderViewModel viewModel)
  217. {
  218. var request = new QPayCloseOrderRequest
  219. {
  220. OutTradeNo = viewModel.OutTradeNo
  221. };
  222. var response = await _client.ExecuteAsync(request);
  223. ViewData["response"] = response.Body;
  224. return View();
  225. }
  226. /// <summary>
  227. /// 关闭订单
  228. /// </summary>
  229. /// <returns></returns>
  230. [HttpGet]
  231. public IActionResult Refund()
  232. {
  233. return View();
  234. }
  235. /// <summary>
  236. /// 关闭订单
  237. /// </summary>
  238. /// <param name="viewModel"></param>
  239. /// <returns></returns>
  240. [HttpPost]
  241. public async Task<IActionResult> Refund(QPayRefundViewModel viewModel)
  242. {
  243. var request = new QPayRefundRequest
  244. {
  245. OutRefundNo = viewModel.OutRefundNo,
  246. TransactionId = viewModel.TransactionId,
  247. OutTradeNo = viewModel.OutTradeNo,
  248. RefundFee = viewModel.RefundFee,
  249. OpUserId = viewModel.OpUserId,
  250. OpUserPasswd = viewModel.OpUserPasswd
  251. };
  252. var response = await _client.ExecuteAsync(request, "qpayCertificateName");
  253. ViewData["response"] = response.Body;
  254. return View();
  255. }
  256. /// <summary>
  257. /// 退款查询
  258. /// </summary>
  259. /// <returns></returns>
  260. [HttpGet]
  261. public IActionResult RefundQuery()
  262. {
  263. return View();
  264. }
  265. /// <summary>
  266. /// 退款查询
  267. /// </summary>
  268. /// <param name="viewModel"></param>
  269. /// <returns></returns>
  270. [HttpPost]
  271. public async Task<IActionResult> RefundQuery(QPayRefundQueryViewModel viewModel)
  272. {
  273. var request = new QPayRefundQueryRequest
  274. {
  275. RefundId = viewModel.RefundId,
  276. OutRefundNo = viewModel.OutRefundNo,
  277. TransactionId = viewModel.TransactionId,
  278. OutTradeNo = viewModel.OutTradeNo
  279. };
  280. var response = await _client.ExecuteAsync(request);
  281. ViewData["response"] = response.Body;
  282. return View();
  283. }
  284. /// <summary>
  285. /// 对账单下载
  286. /// </summary>
  287. /// <returns></returns>
  288. [HttpGet]
  289. public IActionResult StatementDown()
  290. {
  291. return View();
  292. }
  293. /// <summary>
  294. /// 对账单下载
  295. /// </summary>
  296. /// <param name="viewModel"></param>
  297. /// <returns></returns>
  298. [HttpPost]
  299. public async Task<IActionResult> StatementDown(QPayStatementDownViewModel viewModel)
  300. {
  301. var request = new QPayStatementDownRequest
  302. {
  303. BillDate = viewModel.BillDate,
  304. BillType = viewModel.BillType,
  305. TarType = viewModel.TarType
  306. };
  307. var response = await _client.ExecuteAsync(request);
  308. ViewData["response"] = response.Body;
  309. return View();
  310. }
  311. }
  312. }