支付宝接入文档中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。所以,在做通知接口时,切记使用判断订单状态用或的关系。

时间: 2024-10-27 18:51:52

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

创蓝闪验接入文档

一.准备工作 概述 本文是闪验SDK_Android v2.3.0版本的接入文档,用于指导SDK的使用方法,默认读者已经熟悉 IDE(Eclipse 或者 Android Studio)的基本使用方法,以及具有一定的 Android 编程知识基础. 闪验SDK支持minSdkVersion 16及以上版本 闪验SDK支持中国移动3/4G.联通3/4G.电信4G的取号能力,在3G网络下时延会更高 闪验SDK支持单数据网络/数据网络与WiFi网络双开,不支持单WiFi网络 对于双卡手机,闪验SDK只

java使用正则从爬虫爬的txt文档中提取QQ邮箱

我的需求是从一堆文档中提取出qq邮箱,写了这篇帖子,希望能帮助和我有一样需求的人,谢谢!...... import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GetEmail { public static void getEmail() {

用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过python读取.正则表达式处理并写入Excel文档将大大减少人工处理的工作量. 1. 从gerrit获取原始信息,存入文本文档: $ssh –p 29418 <your-account>@192.168.1.16 gerrit query status:merged since:<date

用Aspose.Words for .NET动态生成word文档中的数据表格

1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的.看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧.但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高.最麻烦的需求是后面那个-

HTML文档中应用css样式的方法总结

在HTML文档中应用css样式大致有三种方法:1.link标签链接外部样式表:2.使用style元素包含样式表:3.使用style属性,即内联样式 一.link标签链接外部样式表 先看一条较为标准的link标记语句: <link rel="stylesheet" type="text/css" href="main.css" media="all" /> link标记必须放在head元素中,且不能放在其他元素(如t

html文档中的DOCTYPE标签

在写html页面的时候我们一般都会在首行添加〈!DOCTYPE〉的标签,有些编辑器会自动帮我们添加,今天讲讲这个〈!DOCTYPE〉标签的作用. HTML与XHTML 在W3C组织还么颁发html标准之前,开发网页的时候大家都没有加这个标签,那个时候.html页面的开发也比较混乱,直到1999年的时候,HTML 4.01成为了推荐标准,那时候起大多数人都使用这个版本.又大概在2000年的时候,W3C组织又颁发了基于HTML4.01的XML版本,并命名为XHTML1.0. 两者其实主要的差别是XH

将sytyle提出到领一个文档中

在当前页面目录下新建一个文档(css) 在css文档中新建命名为"与网页文件同名.css" 将<head></head>中,<style></style>中的内容粘贴到新css文件中将style标签删掉 在网页文件原位置添加"<link rel="stylesheet" type="text/css" href="./css/index.css">"

把word文档中的所有图片导出

把word文档中的所有图片导出 end

【Linux】用grep在文档中查找内容

有时候,我们需要在文档中查找一些内容,常用grep.它在文档查找相关内容并输出匹配行. > 查找某关键字 在system.log中,查找包含keyword的行 grep 'keyword' system.log 查找时附带输出行号,方便查看 grep -n 'keyword' system.log > 默认支持基本正则表达式 查找以2015-09-24开头的行 grep '^2015-09-24' system.log > 支持扩展正则表达式 正则表达式应用在各个领域,用它配合grep查