WeChatPayV3NotifyController.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Threading.Tasks;
  3. using Essensoft.AspNetCore.Payment.WeChatPay;
  4. using Essensoft.AspNetCore.Payment.WeChatPay.V3;
  5. using Essensoft.AspNetCore.Payment.WeChatPay.V3.Notify;
  6. using Microsoft.AspNetCore.Http;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.Extensions.Options;
  9. namespace WebApplicationSample.Controllers
  10. {
  11. [Route("wechatpay/v3/notify")]
  12. public class WeChatPayV3NotifyController : Controller
  13. {
  14. private readonly IWeChatPayNotifyClient _client;
  15. private readonly IOptions<WeChatPayOptions> _optionsAccessor;
  16. public WeChatPayV3NotifyController(IWeChatPayNotifyClient client, IOptions<WeChatPayOptions> optionsAccessor)
  17. {
  18. _client = client;
  19. _optionsAccessor = optionsAccessor;
  20. }
  21. /// <summary>
  22. /// 支付结果通知
  23. /// </summary>
  24. [Route("transactions")]
  25. [HttpPost]
  26. public async Task<IActionResult> Transactions()
  27. {
  28. try
  29. {
  30. Request.EnableBuffering();
  31. var notify = await _client.ExecuteAsync<WeChatPayTransactionsNotify>(Request, _optionsAccessor.Value);
  32. if (notify.TradeState == WeChatPayTradeState.Success)
  33. {
  34. Console.WriteLine("OutTradeNo: " + notify.OutTradeNo);
  35. return WeChatPayNotifyResult.Success;
  36. }
  37. return WeChatPayNotifyResult.Failure;
  38. }
  39. catch
  40. {
  41. return WeChatPayNotifyResult.Failure;
  42. }
  43. }
  44. }
  45. }