先交待下背景:没有自己的服务器,我是个自学小程序没多久的小白!纯粹用 云开发 帮开店的姐姐做的小程序,已经上线一段时间了。
可是最近发生了一个bug,让我很是苦恼:
我在小程序的 发起微信支付接口 即 wx.requestPayment(Object object)
的success 中回调 订单信息上传、小票打印等 函数
而这个 success 回调吧,是在用户付款完成 点击下图中 完成 才会触发!!!
也就是说,如果用户付款完成后,直接不点击此[完成] 按钮,直接关闭小程序。
就不会执行 success 中回调的函数 !!
就是我收到了钱!!~~却不知道用户买了啥。。。。。
就这个问题,我的理解哈:
在付款前就应该上传订单订单信息, 此时订单状态为 待支付
然后支付成功后,利用微信支付 统一下单API 中预留的 notify_url (下图)
去更新我的订单状态,并且打印小票。
可是问题就在于,我没有自己的服务器!!没有可以通知的地址。
可是看文档的时候哈,看到了 云开发现在开放了 小程序外访问 HTTP API
于是我就按照文档说明 用 postman 去调用了下 某个云函数
发现一下就调成功了。于是我天真的想把这一大串写在 notify_url
然后我留意到了下面这个要求~~oh~~no~~ 梦想破碎~~~
所以我是真的没辙了,所以各位看到此贴的大佬,就这个情况,就单纯使用云开发还有的解决吗???
恳求各路大佬的帮忙,不胜感激!
遇到同样问题 *-*
你用的是哪个NPM包啊?求分享code
有没有测试一下,在用户不点击“完成”的情况下,fail/complete里有返回吗?返回的结果与不支付的返回fail有什么不同?毕竟我们并不需要在success的具体返回消息,只需要知道是否success,是否不点击“完成”的fail,还是不支付的fail。
客户端支付调起后:
1.用户主动取消付款: 会触发 fail 和 complete 中的回调函数
2.用户付款成功 但未点击[完成] :不会触发任何回调
3.用户付款成功 点击[完成] 返回小程序 : 触发success 和 complete 回调
哎,关键点就是 点击[完成] 后才会触发回调,坑就在这了。。
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&index=8
支付完成后,微信会把相关支付结果及用户信息通过数据流的形式发送给商户,商户需要接收处理,并按文档规范返回应答。
微信已经做了数据,你后台签名认证一下数据信息就可以了
我也是小白,以前做过网页支付,我记得是这样。
谢谢。可是我没有可以用来接收的 服务器。。。
那你还是使用
微信支付的查询订单接口
来解决吧,毕竟未点完成直接关闭微信的用户也不少很多。
感谢!好像行的通,我去试试~
试试的结果如何?想知道。
利用 订单查询接口 去做二次判定,方案行的通。 就是对于那些付款后,不点击完成直接关闭小程序的订单,由于没有服务器,需要人为介入,去核实付款状态,然后打印小票。