老师,纠结了几天了,为什么我支付提示未索引到prepay_id,代码如下

来源:10-19 支付的服务器端编写 二

酥饼吃汤圆

2017-06-18

http://szimg.mukewang.com/594629420001d1f609340661.jpg

http://szimg.mukewang.com/594629420001c48511630828.jpg



写回答

5回答

晓峰123

2018-04-02

先检查商户参数是否配置正确,其次可能原因如下

prepay_id是微信给的,未定义,说明微信返回结果没有prepay_id这个参数

因为这个订单你已经在微信那边支付成功了,但是你的数据库并没有更新订单状态,导致重复支付请求微信就不会回调prepay_id这个参数

可能是你的服务器没有接收到微信回调信息(回调api外网访问不了)或者接收了微信支付成功的回调信息,但是没有把订单修改为已支付状态,小程序会显示未付款,当你点击的时候就重复发起支付请求

解决方法一:你把程序部署到云服务器或者内网穿透工具让你接收微信回调通知的接口外网能访问到,确保第一次接收到微信支付成功回调通知后把订单状态修改为已支付状态,避免发起重复支付同一个订单请求,就不会出现这个问题了

解决方法二:通过断点调试,同一个订单支付成功后,再次发起支付请求看看微信回调通知携带的是什么参数(这时候不会包含repay_id)然后做异常处理,判断如果是客户端那边支付成功过的订单,就把数据库订单信息修改为已支付状态,再提示客户端该订单早就支付过了,不要再重复请求支付api接口了,这种服务器内部可以解决的错误就没必要让客户端开发人员纠结


0
0

runzx

2017-06-19

你debug,把 $wxOrder = \WxPayApi::unifiedOrder($wxOrderData); 时变量的内容打印出来看看, 我估计你的微信支付有问题, 返回就不成功。 返回信息里没有'SUCCESS'。

0
0

酥饼吃汤圆

提问者

2017-06-19

老师,这是商户号以及所有信息都正确情况下

0
0

7七月

2017-06-18

视频不是强调过,必须要有商户号么。。。

0
2
7七月
回复
酥饼吃汤圆
那你把微信返回的结果贴一下看看
2017-06-19
共2条回复

dear人格

2017-06-18

你是不是没有商户号

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程