调用第三方支付(如支付宝/微支付),订单状态如何处理?

Will_awokE 发布于 2015/08/20 13:54
阅读 957
收藏 1


最近开发涉及到第三方支付,用到了支付宝和微支付。二者有一个共同的地方:都是有return url 和 notify_url 。return_url是用户付款成功后跳转的页面,而notify_url是支付回调确认,也就是通常会在notify_url里面修改订单状态为已支付。

我现在的问题是,return_url页面里面如何提示用户哪,如果提示订单已经支付成功,用户自己再去查看订单状态会发现订单状态有可能还是未支付状态(因为此时的callback有可能还没有回调,订单状态未及时更新),如果提示支付未成功,用户也会非常费解。

烦请有过处理过这种的问题的朋友不吝赐教。非常感谢。

加载中
0
就是个精虫上脑的地方
就是个精虫上脑的地方
return提示订单已提交,再加个查询的url,引导用户去查看订单状态,一般是这么处理吧,可以参考下其他电商的做法。
就是个精虫上脑的地方
就是个精虫上脑的地方
回复 @Will_awokE : 这也没办法啊 你可以加个支付中的状态 总不能让用户一直等
Will_awokE
Will_awokE
即使加了url,跳转到订单页面,订单状态可能还是未支付,因为callback可能还没有到。
0
倚地屠蛇
倚地屠蛇
return_url也会把支付是成功还是支付失败的结果带回来的。直接按接收到的参数提示就可以吧?
Will_awokE
Will_awokE
我问题描述的不太清晰。其实我更关心的是本地订单状态更新的时机,是在return url里面还是在callback里面?
0
storyeah
storyeah
网页端调用微信支付的话,官方文档说了会return ok的,同时ajax调用支付的时候也有success:function(data),fail:function(data)等事件,
Will_awokE
Will_awokE
嗯,这个没有问题的。在return url的时候就修改本地的订单状态么?
0
fxhover
fxhover

一般会让你传两个URL,一个return_url(同步通知地址)这个是在支付完之后跳转到这个地址通知业务已支付;还有一个是notify_url(异步通知地址),在支付成功之后会发送支付结果到这个url。

你需要在return_url和notify_url中检查支付参数和订单状态,确认无误后处理自己的订单状态处理为已支付。

Will_awokE
Will_awokE
嗯,这个也是我查到的比较正统的说法,两个地方都处理订单状态。
0
傲罗
傲罗
已经支付却未通知到服务器这种情况一般不用担心,一般都很及时的,如果你发现经常有这种情况,他们还有查询接口,查询到订单已经支付也可以标记已支付
0
封心
封心

我最近也刚巧在做第三方支付这块,我的做法是:

首先判断订单状态(最好是有个字段是专门表示支付状态的,因为订单一般会有好几种状态,不好判断),如果是已支付,直接返回输出;未支付的话根据第三方支付接口来判断支付结果,然后处理订单状态,返回结果

支付宝:return_url和notify_url都执行上面的过程,只不过区别是一个是给支付宝端看的,一个是给用户看的

微信支付:最新的微信扫码支付只有notify_url,扫码支付提供了2种模式,模式1有点复杂,我用了模式2,本地通过微信支付接口生成支付的二维码,用户支付后,微信端通知notify_url,notify_url就执行上面的判断过程,返回结果给微信端,而本地就在页面上不停执行一个ajax请求,来判断订单支付状态,支付成功了页面就跳转

返回顶部
顶部