OrderQuery.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. 
  2. using BaseModel.Models;
  3. using System.Threading.Tasks;
  4. namespace Wechat.PayAPI
  5. {
  6. public class OrderQuery
  7. {
  8. /***
  9. * 订单查询完整业务流程逻辑
  10. * @param order 所查定单信息
  11. * @return 订单查询结果
  12. */
  13. public static async Task<WxPayData> Run(ElectronicOrderModel order)
  14. {
  15. WxPayData data = new WxPayData();
  16. data.SetValue("out_trade_no", order.BillNumber);
  17. WxPayData result = await WxPayApi.OrderQuery(data, (WxPayConfig)order.Config);//提交订单查询请求给API,接收返回数据
  18. if (result.GetValue("return_code").ToString() == "SUCCESS"
  19. && result.GetValue("result_code").ToString() == "SUCCESS")
  20. {
  21. //定单状态为支付成功
  22. if (result.GetValue("trade_state").ToString() == "SUCCESS")
  23. {
  24. order.TradeStatus = TradeStatus.SUCCESS;
  25. }
  26. else if ((result.GetValue("trade_state").ToString() == "CLOSED") ||
  27. (result.GetValue("trade_state").ToString() == "REVOKED"))
  28. {
  29. order.TradeStatus = TradeStatus.CLOSED;
  30. }
  31. }
  32. return result;
  33. }
  34. }
  35. }