网页下的微信支付过程中的订单状态循环查询


微信支付有时候可能不调用你的回调地址。
你可以通过curl来简单测试你的url地址,比如:
curl -H 'Content-Type: application/json' -X POST  http://***/wechat/pay/notify

https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_2.shtml

商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
查询订单状态可通过微信支付订单号商户订单号两种方式查询

两种查询方式返回结果相同

需要调用查询接口的情况
• 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知。
• 调用支付接口后,返回系统错误或未知交易状态情况。
• 调用付款码支付API,返回USERPAYING的状态。
• 调用关单或撤销接口API之前,需确认支付状态。

微信支付订单号怎么获取的到呢?
支付后返回的数据里面才有这个transaction_id : 420000216120240514676******

那么没支付前只有平台生产的order_trade_no,加上这个mchid  = WxPay.mch_id
https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/1217752501201407033233368018?mchid=1230000109

curl -i https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/h17157791861df843866400?mchid=1230000109
HTTP/1.1 401 Unauthorized
Server: nginx
Date: Wed, 15 May 2024 13:45:44 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 125
Connection: keep-alive
Keep-Alive: timeout=8
Cache-Control: no-cache, must-revalidate
X-Content-Type-Options: nosniff
Request-ID: 0888F992B20610C00518B4C18C5820B7A51A28D09606-270924346
Content-Language: zh-CN

{"code":"SIGN_ERROR","message":"Http头Authorization值格式错误,请参考《微信支付商户REST API签名规则》"}

https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-generation.html
https://developers.weixin.qq.com/community/develop/article/doc/000ca44ae3cff894e9fbb46ba5b413

通过Gem包ruby版本的 wechat-pay.git 实现支付订单查询:

response = WechatPay::Direct.query_order(out_trade_no: 'N202104302474') # by out_trade_no
a = JSON.parse(response.body)
render json: {msg: a['trade_state_desc']}

大致如此,返回支付状态给前端。
阅读量: 770
发布于:
修改于: