H5和app前端微信支付 后端如果系统异常 无法拿到此订单是否支付成功该怎么保证

前端微信支付 后端如果系统异常 无法拿到此订单是否支付成功该怎么保证

背景:前后端项目 非pc pc做过 但是h5和安卓ios 逻辑好像不太一样了

问题描述:

前端sdk 发起支付 用户支付成功了 然后前端发送api给后端 后端保存下该订单的支付状态

但是 如果后端有时候异常了 保存不了

那后端如何自己查询所有的订单状态并更新数据库呢

是下图的逻辑吗

H5和app前端微信支付 后端如果系统异常  无法拿到此订单是否支付成功该怎么保证

chowjiawei
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
chowjiawei
最佳答案

file

上面的大佬 我就不一个个艾特了 是这样子吗 我的项目是h5和app的

2年前 评论
大胆的番茄 2年前
大胆的番茄 2年前
chowjiawei (作者) (楼主) 2年前
大胆的番茄 2年前
chowjiawei (作者) (楼主) 2年前
chowjiawei (作者) (楼主) 2年前
讨论数量: 30

一般来说后端这边会做异步回调进行处理订单状态,订单的支付状态最好不要前端来传,前端只需做好支付就行

2年前 评论
chowjiawei (楼主) 2年前
Complicated 2年前
Complicated

没明白,前端只是呼起支付,真正的下支付订单还是后端,支付成功后会进入你的回调,你回调去处理不就好了

2年前

微信支付是有异步回调的,会多次给你的服务器推送支付结果,除非你一直异常。另外微信支付也是有付款结果查询接口的https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_2.shtml,可以用定时任务,每隔一段时间查询待付款订单付款结果,并更新到数据库

2年前
orange1994

订单号肯定是后端生成

2年前 评论
chowjiawei (楼主) 2年前
Complicated 2年前

支付成功与否由前端传值来判断?不怕被刷?微信支付不都是有异步通知后端!

2年前 评论
chowjiawei (楼主) 2年前
Joker-smile (作者) 2年前
chowjiawei

file

上面的大佬 我就不一个个艾特了 是这样子吗 我的项目是h5和app的

2年前 评论
大胆的番茄 2年前
大胆的番茄 2年前
chowjiawei (作者) (楼主) 2年前
大胆的番茄 2年前
chowjiawei (作者) (楼主) 2年前
chowjiawei (作者) (楼主) 2年前

这个我熟呀 专业对接三方支付20年 哈哈 :joy:

2年前 评论
chowjiawei (楼主) 2年前
chowjiawei (楼主) 2年前
难受 (作者) 2年前
难受 (作者) 2年前

你要保证是否成功,微信那个你回调成功以后,只要有返回success给他就不会给你发回调了,如果你异常了他就会一直给你发回调

2年前

不知道你有没有听说过,就在五六年前,有一群人花几块钱购买了价值好几百万的商品

在当时很多app订单金额都是前端传给后端,然后后端生成支付,甚至于大厂都是这么做。这就造成了一个问题,攻击者通过 fiddler 等软件,拦截并修改请求数据包,就可以轻松以一分钱购买好几千的商品,受影响最大的就是话费充值,因为是自动充值,当时的百度在一夜之间近一亿元话费备付金被攻击殆尽

所以,后端不能信任任何前端传递的数据,更别提是支付信息,后端应当只信任来自微信的支付回调

2年前 评论
荒街! (作者) 2年前
chowjiawei (楼主) 2年前

应该是有一个同步回调一个异步回调

2年前

不应该是前端传递商品信息给后端,后端去创建订单,去微信获取支付需要的消息,返回给前端,前端再去调起支付页面吗

2年前
chowjiawei

感谢大家的回答 谢谢大家

2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!