QPayController.cs 11 KB

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