微信H5支付 遇到坑的一些解决方法

解决办法

1. 商家参数格式有误,请联系商家解决

a.对于前后端分离的开发模式 前端发起请求 服务端请求微信h5支付统一下单接口 返回参数mweb_url 给前端 然后前端调起微信h5支付

b.注意的是 微信商户平台 开发配置 H5支付授权域名是一级域名 例:一级域名 mark.com

c. 前端的二级域名:web.mark.com 确保前端调用mweb_url时的 前端url地址 和 H5支付授权域名是同一个域名地址下的

d. 哈哈哈 微信h5文档说的是缺少referer 找了好久 这个家伙 原来是调起支付的二级域名错了 前端应该有个二级域名去调支付才行 后台是提供接口的 只有M层和C层 V层的家伙还是要前端去搞吧

微信h5支付新版详细的介绍可以看: https://www.cnblogs.com/txw1958/p/wxpayv3_h5.html

扩展 refer的解释: https://www.sojson.com/blog/58.html


2.微信支付回调地址的控制器打印数据为空的话 就应该是打印数据的位置不对 一般应该在NotifyProcess这个方法里打印$data数据 这样就有数据了


3.微信支付返回

a.这个时候 打印下 mweb_url 看看是不 prepay_id 为空值

b. 然后我们看微信H5支付文档 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

c. 预支付交易会话标识 prepay_id 的解释:

微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时,针对H5支付此参数无特殊用途

d.解决办法

1.这个prepay_id 说的是第一次生成 然后两小时之内有效 可以在两个小时内生成 这个 prepay_id 两小时之后 这个订单号无法生成prepay_id的值 再调用 就会出现 支付失效请重新下单
2.操作场景一般是 用户调起微信支付 就已经生成一个prepay_id 但是没有支付的话 两个小时之后 这个订单号 就会失效
3.业务处理的话 建一个伪订单表 和 自己的真订单号的 id 绑定 如果链接的prepay_id为空的话 就给伪订单表里 加一条数据 然后通过伪订单号 进行调起订单 回调的时候 先判断有没有在伪订单表里 有的话 就去取真订单表的订单号 然后完成状态更改

原文地址:https://www.cnblogs.com/foreversun/p/9068050.html