调用银行支付接口,怎么确定订单支付成功

ivan005 发布于 2016/07/05 17:18
阅读 2K+
收藏 1

         一个form表单,里面包含签名、支付金额、回调URL信息,提交表单向银行发起一个支付请求,然后跳到银行的支付页面。

        支付成功后,页面停留在银行的支付成功页面,在银行支付成功的页面上,有个返回商户页面的按钮,当用户点击那个按钮后,才会回调form表单里提交的回调URL(带上支付成功的参数和签名),不点击该按钮就不会回调签名form表单里的URL,没有消息推送到填写的URL上面。

        有订单查询接口可以查询订单支付成功,因为可能有用户可能支付完后,直接关掉页面没有点击返回商户按钮,此时就没有支付成功消息到回调的URL上面。

        这里采用一种什么样的方式判断用户订单是否支付成功,原打算采用对所有有效的订单进行轮询是看否成功,有什么好的方式去实现,因为采用轮询的时间间隔一定不能太长,耗资源和时间。

加载中
0
haoran_10
haoran_10

用户发起支付请求后,在调用支付接口的同时保存一份消息到待确认支付流水表

然后异步式消息调用待支付流水表,去轮训是否支付成功。轮训的时间,可以间隔为1秒,10秒,30秒,等等,以此递增,不要设为每次时间间隔相同。一般支付宝,微信支付,以及一些银行接口,他们也是这么做的。

ivan005
ivan005
这个方法可以有
2
壹爱
壹爱

你告诉我。这是哪家银行。是这么设计的。把他们的开发请出来。打残他。不要打死。

第三方支付。基本都会有2个参数的。一个是。returnURl 一个notiyUrl.

搞个三方支付人都知道。一个是当用户付款完成后。直接跳转地址。

另一个则是用第三方支付后台通知的服务器地址。

如果。这俩个功能。都没有实现的话。这还搞个毛JB 的支付啊。

壹爱
壹爱
回复 @Datevan : 这种应该是小众银行的设计吧。。对方的开发真是坑的不要不要的。楼下的方案你可以参考。搞个队列。定时轮询。
Patrick_彬彬
Patrick_彬彬
我也想知道是哪个银行的......
ivan005
ivan005
只有一个商户通知地址,而且支付完成后,点“返回商户”刚好跳转到商户通知地址,不会自动跳转,但是有个订单查询接口可以查询订单状态
0
zigzagroad
zigzagroad
你的系统中需要有回调地址,银行或第三方支付系统会携带你给的相关参数回调该地址
0
独钓渔
独钓渔
你说的那个是前台回调的url,一般还会有后台通知的接口,前台用于页面跳转,后台通知用于业务处理。
ivan005
ivan005
就是只有一个地址,所以看有没有好的处理方法,银行给的接口文档只有一个商户通知地址,而且支付完成后,点“返回商户”刚好跳转到商户通知地址
0
华夏第一帅神
华夏第一帅神

一般支付的流程都是 有两个回调,一个是同步的也就是直接跳转,另一种是异步通知。如果没有异步通知,那我们只有依赖支付对账功能

支付对账:调用查询接口查询订单是否成功

实现流程:用户发起支付,弹出 【支付完成】 【未正常支付】的弹窗,支付窗口弹出到新的链接。 当前页面设置延迟1分钟后自动查询支付接口,或 点击支付成功后查询支付结果。 

定时任务轮询查询接口功能也要有。防止用户将所有窗口都关闭。

返回顶部
顶部