WeChatPayScoreController.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Essensoft.AspNetCore.Payment.WeChatPay;
  4. using Essensoft.AspNetCore.Payment.WeChatPay.Payscore.Domain;
  5. using Essensoft.AspNetCore.Payment.WeChatPay.Payscore.Request;
  6. using Essensoft.AspNetCore.Payment.WeChatPay.V3;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.Extensions.Options;
  9. using WebApplicationSample.Models;
  10. namespace WebApplicationSample.Controllers
  11. {
  12. public class WeChatPayScoreController : Controller
  13. {
  14. private readonly IWeChatPayClient _client;
  15. private readonly IOptions<WeChatPayOptions> _optionsAccessor;
  16. public WeChatPayScoreController(IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
  17. {
  18. _client = client;
  19. _optionsAccessor = optionsAccessor;
  20. }
  21. public IActionResult Index()
  22. {
  23. return View();
  24. }
  25. /// <summary>
  26. /// 创建支付分订单
  27. /// </summary>
  28. public IActionResult ServiceOrder()
  29. {
  30. return View();
  31. }
  32. /// <summary>
  33. /// 创建支付分订单
  34. /// </summary>
  35. [HttpPost]
  36. public async Task<IActionResult> ServiceOrder(WeChatPayScoreServiceOrderViewModel viewModel)
  37. {
  38. var model = new WeChatPayScoreServiceOrderModel
  39. {
  40. AppId = _optionsAccessor.Value.AppId,
  41. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  42. OutOrderNo = viewModel.OutOrderNo,
  43. ServiceIntroduction = viewModel.ServiceIntroduction,
  44. TimeRange = new TimeRange {
  45. StartTime = viewModel.StartTime,
  46. EndTime = viewModel.EndTime
  47. },
  48. RiskFund = new RiskFund {
  49. Name = viewModel.RiskFundName,
  50. Amount = viewModel.RiskFundAmount
  51. },
  52. NotifyUrl = viewModel.NotifyUrl,
  53. OpenId = viewModel.OpenId
  54. };
  55. var request = new WeChatPayScoreServiceOrderRequest();
  56. request.SetBodyModel(model);
  57. var response =await _client.ExecuteAsync(request, _optionsAccessor.Value);
  58. ViewData["response"] = response.Body;
  59. return View();
  60. }
  61. /// <summary>
  62. /// 查询支付分订单
  63. /// </summary>
  64. public IActionResult ServiceOrderQuery()
  65. {
  66. return View();
  67. }
  68. /// <summary>
  69. /// 查询支付分订单
  70. /// </summary>
  71. [HttpPost]
  72. public async Task<IActionResult> ServiceOrderQuery(WeChatPayScoreServiceOrderQueryViewModel viewModel)
  73. {
  74. var model = new WeChatPayScoreServiceOrderQueryModel
  75. {
  76. AppId = _optionsAccessor.Value.AppId,
  77. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  78. OutOrderNo = viewModel.OutOrderNo,
  79. QueryId = viewModel.QueryId
  80. };
  81. var request = new WeChatPayScoreServiceOrderQueryRequest();
  82. request.SetQueryModel(model);
  83. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  84. ViewData["response"] = response.Body;
  85. return View();
  86. }
  87. /// <summary>
  88. /// 取消支付分订单
  89. /// </summary>
  90. public IActionResult ServiceOrderCancel()
  91. {
  92. return View();
  93. }
  94. /// <summary>
  95. /// 取消支付分订单
  96. /// </summary>
  97. [HttpPost]
  98. public async Task<IActionResult> ServiceOrderCancel(WeChatPayScoreServiceOrderCancelViewModel viewModel)
  99. {
  100. var model = new WeChatPayScoreServiceOrderCancelModel
  101. {
  102. AppId = _optionsAccessor.Value.AppId,
  103. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  104. Reason = viewModel.Reason
  105. };
  106. var request = new WeChatPayScoreServiceOrderCancelRequest();
  107. request.OutOrderNo = viewModel.OutOrderNo;
  108. request.SetBodyModel(model);
  109. var response = await _client.ExecuteAsync(request,_optionsAccessor.Value);
  110. ViewData["response"] = response.Body;
  111. return View();
  112. }
  113. /// <summary>
  114. /// 修改支付分订单金额
  115. /// </summary>
  116. public IActionResult ServiceOrderModify()
  117. {
  118. return View();
  119. }
  120. /// <summary>
  121. /// 修改支付分订单金额
  122. /// </summary>
  123. [HttpPost]
  124. public async Task<IActionResult> ServiceOrderModify(WeChatPayScoreServiceOrderModifyViewModel viewModel)
  125. {
  126. var model = new WeChatPayScoreServiceOrderModifyModel
  127. {
  128. AppId = _optionsAccessor.Value.AppId,
  129. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  130. PostPayments = new List<PostPayment> {
  131. new PostPayment{
  132. Name = viewModel.Name,
  133. Amount = viewModel.Amount,
  134. Count = viewModel.Count
  135. }
  136. },
  137. TotalAmount = viewModel.TotalAmount,
  138. Reason = viewModel.Reason
  139. };
  140. var request = new WeChatPayScoreServiceOrderModifyRequest();
  141. request.OutOrderNo = viewModel.OutOrderNo;
  142. request.SetBodyModel(model);
  143. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  144. ViewData["response"] = response.Body;
  145. return View();
  146. }
  147. /// <summary>
  148. /// 完结支付分订单
  149. /// </summary>
  150. public IActionResult ServiceOrderComplete()
  151. {
  152. return View();
  153. }
  154. /// <summary>
  155. /// 完结支付分订单
  156. /// </summary>
  157. [HttpPost]
  158. public async Task<IActionResult> ServiceOrderComplete(WeChatPayScoreServiceOrderCompleteViewModel viewModel)
  159. {
  160. var model = new WeChatPayScoreServiceOrderCompleteModel
  161. {
  162. AppId = _optionsAccessor.Value.AppId,
  163. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  164. PostPayments = new List<PostPayment> {
  165. new PostPayment{
  166. Name = viewModel.Name,
  167. Amount = viewModel.Amount,
  168. Count = viewModel.Count
  169. }
  170. },
  171. TotalAmount = viewModel.TotalAmount
  172. };
  173. var request = new WeChatPayScoreServiceOrderCompleteRequest();
  174. request.OutOrderNo = viewModel.OutOrderNo;
  175. request.SetBodyModel(model);
  176. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  177. ViewData["response"] = response.Body;
  178. return View();
  179. }
  180. /// <summary>
  181. /// 商户发起催收扣款
  182. /// </summary>
  183. public IActionResult ServiceOrderPay()
  184. {
  185. return View();
  186. }
  187. /// <summary>
  188. /// 商户发起催收扣款
  189. /// </summary>
  190. [HttpPost]
  191. public async Task<IActionResult> ServiceOrderPay(WeChatPayScoreServiceOrderPayViewModel viewModel)
  192. {
  193. var model = new WeChatPayScoreServiceOrderPayModel
  194. {
  195. AppId = _optionsAccessor.Value.AppId,
  196. ServiceId = _optionsAccessor.Value.PayScoreServiceId
  197. };
  198. var request = new WeChatPayScoreServiceOrderPayRequest();
  199. request.OutOrderNo = viewModel.OutOrderNo;
  200. request.SetBodyModel(model);
  201. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  202. ViewData["response"] = response.Body;
  203. return View();
  204. }
  205. /// <summary>
  206. /// 同步服务订单信息
  207. /// </summary>
  208. public IActionResult ServiceOrderSync()
  209. {
  210. return View();
  211. }
  212. /// <summary>
  213. /// 同步服务订单信息
  214. /// </summary>
  215. [HttpPost]
  216. public async Task<IActionResult> ServiceOrderSync(WeChatPayScoreServiceOrderSyncViewModel viewModel)
  217. {
  218. var model = new WeChatPayScoreServiceOrderSyncModel
  219. {
  220. AppId = _optionsAccessor.Value.AppId,
  221. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  222. Type = viewModel.Type,
  223. Detail = new SyncDetail {
  224. PaidTime = viewModel.PaidTime
  225. }
  226. };
  227. var request = new WeChatPayScoreServiceOrderSyncRequest();
  228. request.OutOrderNo = viewModel.OutOrderNo;
  229. request.SetBodyModel(model);
  230. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  231. ViewData["response"] = response.Body;
  232. return View();
  233. }
  234. /// <summary>
  235. /// 创单结单合并
  236. /// </summary>
  237. public IActionResult ServiceOrderDirectComplete()
  238. {
  239. return View();
  240. }
  241. /// <summary>
  242. /// 创单结单合并
  243. /// </summary>
  244. [HttpPost]
  245. public async Task<IActionResult> ServiceOrderDirectComplete(WeChatPayScoreServiceOrderDirectCompleteViewModel viewModel)
  246. {
  247. var model = new WeChatPayScoreServiceOrderDirectCompleteModel
  248. {
  249. AppId = _optionsAccessor.Value.AppId,
  250. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  251. OutOrderNo = viewModel.OutOrderNo,
  252. ServiceIntroduction = viewModel.ServiceIntroduction,
  253. PostPayments = new List<PostPayment> {
  254. new PostPayment{
  255. Name = viewModel.PostPaymentName,
  256. Amount = viewModel.PostPaymentAmount,
  257. Description = viewModel.PostPaymentDescription,
  258. Count = viewModel.PostPaymentCount
  259. }
  260. },
  261. TimeRange = new TimeRange
  262. {
  263. StartTime = viewModel.StartTime,
  264. EndTime = viewModel.EndTime
  265. },
  266. TotalAmount = viewModel.TotalAmount,
  267. NotifyUrl = viewModel.NotifyUrl,
  268. OpenId = viewModel.OpenId
  269. };
  270. var request = new WeChatPayScoreServiceOrderDirectCompleteRequest();
  271. request.SetBodyModel(model);
  272. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  273. ViewData["response"] = response.Body;
  274. return View();
  275. }
  276. /// <summary>
  277. /// 商户预授权
  278. /// </summary>
  279. public IActionResult Permissions()
  280. {
  281. return View();
  282. }
  283. /// <summary>
  284. /// 商户预授权
  285. /// </summary>
  286. [HttpPost]
  287. public async Task<IActionResult> Permissions(PermissionsViewModel viewModel)
  288. {
  289. var model = new WeChatPayScorePermissionsModel
  290. {
  291. AppId = _optionsAccessor.Value.AppId,
  292. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  293. AuthorizationCode = viewModel.AuthorizationCode,
  294. NotifyUrl = viewModel.NotifyUrl
  295. };
  296. var request = new WeChatPayScorePermissionsRequest();
  297. request.SetBodyModel(model);
  298. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  299. ViewData["response"] = response.Body;
  300. return View();
  301. }
  302. /// <summary>
  303. /// 支付分-查询用户授权记录(授权协议号)
  304. /// </summary>
  305. public IActionResult PermissionsQueryForAuthCode()
  306. {
  307. return View();
  308. }
  309. /// <summary>
  310. /// 支付分-查询用户授权记录(授权协议号)
  311. /// </summary>
  312. [HttpPost]
  313. public async Task<IActionResult> PermissionsQueryForAuthCode(PermissionsQueryForAuthCodeViewModel viewModel)
  314. {
  315. var model = new WeChatPayScorePermissionsQueryForAuthCodeModel
  316. {
  317. ServiceId = _optionsAccessor.Value.PayScoreServiceId
  318. };
  319. var request = new WeChatPayScorePermissionsQueryForAuthCodeRequest();
  320. request.AuthorizationCode = viewModel.AuthorizationCode;
  321. request.SetQueryModel(model);
  322. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  323. ViewData["response"] = response.Body;
  324. return View();
  325. }
  326. /// <summary>
  327. /// 解除用户授权关系(授权协议号)
  328. /// </summary>
  329. public IActionResult PermissionsTerminateForAuthCode()
  330. {
  331. return View();
  332. }
  333. /// <summary>
  334. /// 解除用户授权关系(授权协议号)
  335. /// </summary>
  336. [HttpPost]
  337. public async Task<IActionResult> PermissionsTerminateForAuthCode(PermissionsTerminateForAuthCodeViewModel viewModel)
  338. {
  339. var model = new WeChatPayScorePermissionsTerminateForAuthCodeModel
  340. {
  341. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  342. Reason = viewModel.Reason
  343. };
  344. var request = new WeChatPayScorePermissionsTerminateForAuthCodeRequest();
  345. request.AuthorizationCode = viewModel.AuthorizationCode;
  346. request.SetBodyModel(model);
  347. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  348. ViewData["response"] = response.Body;
  349. return View();
  350. }
  351. /// <summary>
  352. /// 支付分-查询用户授权记录(openid)
  353. /// </summary>
  354. public IActionResult PermissionsQueryForOpenId()
  355. {
  356. return View();
  357. }
  358. /// <summary>
  359. /// 支付分-查询用户授权记录(openid)
  360. /// </summary>
  361. [HttpPost]
  362. public async Task<IActionResult> PermissionsQueryForOpenId(PermissionsQueryForOpenIdViewModel viewModel)
  363. {
  364. var model = new WeChatPayScorePermissionsQueryForOpenIdModel
  365. {
  366. AppId = _optionsAccessor.Value.AppId,
  367. ServiceId = _optionsAccessor.Value.PayScoreServiceId
  368. };
  369. var request = new WeChatPayScorePermissionsQueryForOpenIdRequest();
  370. request.OpenId = viewModel.OpenId;
  371. request.SetQueryModel(model);
  372. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  373. ViewData["response"] = response.Body;
  374. return View();
  375. }
  376. /// <summary>
  377. /// 解除用户授权关系(OpenId)
  378. /// </summary>
  379. public IActionResult PermissionsTerminateForOpenId()
  380. {
  381. return View();
  382. }
  383. /// <summary>
  384. /// 解除用户授权关系(OpenId)
  385. /// </summary>
  386. [HttpPost]
  387. public async Task<IActionResult> PermissionsTerminateForOpenId(PermissionsTerminateForOpenIdViewModel viewModel)
  388. {
  389. var model = new WeChatPayScorePermissionsTerminateForOpenIdModel
  390. {
  391. AppId = _optionsAccessor.Value.AppId,
  392. ServiceId = _optionsAccessor.Value.PayScoreServiceId,
  393. Reason = viewModel.Reason
  394. };
  395. var request = new WeChatPayScorePermissionsTerminateForOpenIdRequest();
  396. request.OpenId = viewModel.OpenID;
  397. request.SetBodyModel(model);
  398. var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
  399. ViewData["response"] = response.Body;
  400. return View();
  401. }
  402. }
  403. }