`
hai0378
  • 浏览: 536548 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

支付宝接入文档中TRADE_SUCCESS和TRADE_FINISHED的本质区别

 
阅读更多

之前一直不知道这2种状态到底有什么不同。支付宝中担保交易和即时到账交易对其的描述为:

  • TRADE_SUCCESS  交易成功(或支付成功)
  • TRADE_FINISHED    交易完成

一头雾水。。。。。。OK,找例子来说明吧:

例子一:

  • 即时到账普通版。   普通版不支持支付完成后的退款操作,即用户充值完成后,该交易就算是完成了,这笔交易就不能再做任何操作了。
  • 即时到账高级版。   这个版本在用户充值完成后,卖家可以执行退款操作进行退款,即该交易还没有彻底完成,卖家还可以修改这笔交易。

OK,开测。当用户在支付宝网站上充值完成后,这个时候支付宝的通知消息中,如果是即时到账普通版,那么这时的交易状态值为:  TRADE_FINISHED;如果是即时到账高级版,此时的交易状态值就为:TRADE_SUCCESS。

我第一次接入的时候在我网站中判断用或来做,即如果是交易成功或者交易完成则发货。这时就错大了。。。。。。因为作为即时到账高级版,在TRADE_SUCCESS完成后过了三个月,支付宝又会主动再推送一个消息为TRADE_FINISHED。所以如果我用以上的逻辑来做发货,那么我接入即时到账高级版的话,就会发货2次。

这个问题是因为我没有彻底理解清楚这2种关系造成的。

仔细琢磨了一下,发现了它们两者最本质的差别。TRADE_SUCCESS状态代表了充值成功,也就是说钱已经进了支付宝(担保交易)或卖家(即时到账);这时候,这笔交易应该还可以进行后续的操作(比如三个月后交易状态自动变成TRADE_FINISHED),因为整笔交易还没有关闭掉,也就是说一定还有主动通知过来。而TRADE_FINISHED代表了这笔订单彻底完成了,不会再有任何主动通知过来了。

综上所述,收到TRADE_FINISHED请求后,这笔订单就结束了,支付宝不会再主动请求商户网站了;收到TRADE_SUCCESS请求后,后续一定还有至少一条通知记录,即TRADE_FINISHED。所以,在做通知接口时,切记使用判断订单状态用或的关系。

分享到:
评论

相关推荐

    支付宝即时到帐接口

    更多有关返回机制及区别请查看文档。 4、如果获得返回信息 在指定的两种返回接收的文件中 get或post获得 例如:return_url:返回设置文件中的return_Alipay_Notify.asp, 商户网站中传递给支付宝的订单号码-------...

    最新3.3支付宝即时到账交易接口demo源码c#-utf-8源码

    如果状态为"TRADE_SUCCESS"或"TRADE_FINISHED",则表示交易成功,商家可以进行后续的订单处理。其他状态可能意味着交易失败或待处理,需要根据具体的错误代码进行相应处理。 7. **回调验证**:为了防止中间人攻击,...

    支付宝最新SDK整合(包含APP,PC,WAP) PHP

    if ($trade_status == 'TRADE_FINISHED') { //成功之后的操作 } else if ($trade_status == 'TRADE_SUCCESS') { //成功之后的操作 } echo "success"; // 请不要修改或删除 } else { // 验证失败 echo "fail...

    ecshop 支付宝网银直连

    * ECSHOP 支付宝插件 * ============================================================================ * ---------------------------------------------------------------------------- * 这不是一个自由...

    支付宝线下支付C#2010WINFORM实例及官网DEMO.rar

    if (tradeStatus == "TRADE_SUCCESS" || tradeStatus == "TRADE_FINISHED") { // 订单已支付,进行后续处理 } ``` 五、注意事项 1. 安全性:在处理支付相关事务时,必须保证数据传输的安全性,例如使用HTTPS协议,...

    sonar-secrets:SonarQube插件,用于识别硬编码的机密,例如密码,API密钥,AWS凭证等。

    SonarQube:trade_mark:Secrets插件 SonarQube:trade_mark:的Sonar Secrets插件旨在识别硬编码的机密,例如密码,API密钥,AWS凭证,令牌等。根据最佳安全实践,建议使用凭证存储区(例如credstash或Vault)来包含...

Global site tag (gtag.js) - Google Analytics