WeChatPayV3NotifyController.cs 1.4 KB

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