支付宝对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。
http://notify.java.jpxx.org/index.jsp?discount=0.00&payment_type=1&subject=测试&trade_no=2013082244524842&buyer_email=dlw***@gmail.com&gmt_create=2013-08-22 14:45:23¬ify_type=trade_status_sync&quantity=1&out_trade_no=082215222612710&seller_id=2088501624816263¬ify_time=2013-08-22 14:45:24&body=测试测试&trade_status=TRADE_SUCCESS&is_total_fee_adjust=N&total_fee=1.00&gmt_payment=2013-08-22 14:45:24&seller_email=xxx@alipay.com&price=1.00&buyer_id=2088602315385429¬ify_id=64ce1b6ab92d00ede0ee56ade98fdf2f4c&use_coupon=N&sign_type=RSA&sign=1glihU9DPWee+UJ82u3+mw3Bdnr9u01at0M/xJnPsGuHh+JA5bk3zbWaoWhU6GmLab3dIM4JNdktTcEUI9/FBGhgfLO39BKX/eBCFQ3bXAmIZn4l26fiwoO613BptT44GTEtnPiQ6+tnLsGlVSrFZaLB9FVhrGfipH2SWJcnwYs=
参数 | 参数名称 | 类型(长度范围) | 参数说明 | 是否可为空 | 样例 |
---|---|---|---|---|---|
notify_time | 通知时间 | Date | 通知的发送时间。格式为yyyy-MM-dd HH:mm:ss。 | 不可空 | 2013-08-22 14:45:24 |
notify_type | 通知类型 | String | 通知的类型。 | 不可空 | trade_status_sync |
notify_id | 通知校验ID | String | 通知校验ID。 | 不可空 | 64ce1b6ab92d00ede0ee56ade98fdf2f4c |
sign_type | 签名方式 | String | 固定取值为RSA。 | 不可空 | RSA |
sign | 签名 | String | 请参见签名机制。 | 不可空 | lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJI |
out_trade_no | 商户网站唯一订单号 | String(64) | 对应商户网站的订单系统中的唯一订单号,非支付宝交易号。需保证在商户网站中的唯一性。是请求时对应的参数,原样返回。 | 可空 | 082215222612710 |
subject | 商品名称 | String(128) | 商品的标题/交易标题/订单标题/订单关键字等。它在支付宝的交易明细中排在第一列,对于财务对账尤为重要。是请求时对应的参数,原样通知回来。 | 可空 | 测试 |
payment_type | 支付类型 | String(4) | 支付类型。默认值为:1(商品购买)。 | 可空 | 1 |
trade_no | 支付宝交易号 | String(64) | 该交易在支付宝系统中的交易流水号。最短16位,最长64位。 | 不可空 | 2013082244524842 |
trade_status | 交易状态 | String | 交易状态,取值范围请参见“交易状态”。 | 不可空 | TRADE_SUCCESS |
seller_id | 卖家支付宝用户号 | String(30) | 卖家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字。 | 不可空 | 2088501624816263 |
seller_email | 卖家支付宝账号 | String(100) | 卖家支付宝账号,可以是email和手机号码。 | 不可空 | xxx@alipay.com |
buyer_id | 买家支付宝用户号 | String(30) | 买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字。 | 不可空 | 2088602315385429 |
buyer_email | 买家支付宝账号 | String(100) | 买家支付宝账号,可以是Email或手机号码。 | 不可空 | dlw***@gmail.com |
total_fee | 交易金额 | Number | 该笔订单的总金额。请求时对应的参数,原样通知回来。 | 不可空 | 1.00 |
quantity | 购买数量 | Number | 购买数量,固定取值为1(请求时使用的是total_fee)。 | 可空 | 1 |
price | 商品单价 | Number | price等于total_fee(请求时使用的是total_fee)。 | 可空 | 1.00 |
body | 商品描述 | String(512) | 该笔订单的备注、描述、明细等。对应请求时的body参数,原样通知回来。 | 可空 | 测试测试 |
gmt_create | 交易创建时间 | Date | 该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss。 | 可空 | 2013-08-22 14:45:23 |
gmt_payment | 交易付款时间 | Date | 该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss。 | 可空 | 2013-08-22 14:45:24 |
is_total_fee_adjust | 是否调整总价 | String(1) | 该交易是否调整过价格。 | 可空 | N |
use_coupon | 是否使用红包买家 | String(1) | 是否在交易过程中使用了红包。 | 可空 | N |
discount | 折扣 | String | 支付宝系统会把discount的值加到交易金额上,如果有折扣,本参数为负数,单位为元。 | 可空 | 0.00 |
refund_status | 退款状态 | String | 取值范围请参见“退款状态”。 | 可空 | REFUND_SUCCESS |
gmt_refund | 退款时间 | Date | 卖家退款的时间,退款通知时会发送。格式为yyyy-MM-dd HH:mm:ss。 | 可空 | 2008-10-29 19:38:25 |
触发条件名 | 触发条件描述 | 备注 |
---|---|---|
TRADE_FINISHED | 交易成功 | true(触发通知) |
TRADE_SUCCESS | 支付成功 | true(触发通知) |
WAIT_BUYER_PAY | 交易创建 | true(触发通知) |
TRADE_CLOSED | 交易关闭 | false(不触发通知) |
说明:true(触发通知)/false(不触发通知)具体值和签约配置时保持同步。
当支付宝处理完成后会把数据结果反馈给商户。 商户获得这些数据时,必须进行如下处理。
首先必需验证签名,然后验证是否是支付宝发来的通知。
请参见验证是否是支付宝发来的通知。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,2、判断total_fee是否确实为该订单的实际金额(即商户订单创建时的金额),3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),4、判断partner_id是否为商户本身。上述步骤1、2、3、4任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。
注意: