参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
notify_time | Date | 是 | - | 通知的发送时间。格式为 yyyy-MM-dd HH:mm:ss | 2018-10-21 15:45:22 |
notify_type | String | 是 | 64 | 通知类型 | trade_status_sync |
notify_id | String | 是 | 128 | 通知校验 ID | ac05099524730693a8b330c45cf72da943 |
charset | String | 是 | 10 | 编码格式。如 utf-8、gbk、gb312等。 | utf-8 |
version | String | 是 | 3 | 调用的接口版本。固定为1.0 | 1.0 |
sign_type | String | 是 | 10 | 签名类型。签名算法类型,目前支持RSA2和RSA,推荐使用 RSA2 | RSA2 |
sign | String | 是 | 344 | 签名。详情可查看 异步返回结果的验签 | 601510b7970e52cc63db0f44997cf70e |
auth_app_id | String | 是 | 32 | 授权方的APPID。由于本接口暂不开放第三方应用授权,因此 auth_app_id=app_id | 2018072300007418 |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
trade_no | String | 是 | 64 | 支付宝交易号,支付宝交易凭证号。 | 2013112011001004330000121536 |
app_id | String | 是 | 32 | 支付宝应用的APPID。支付宝分配给开发者的应用 ID | 2019082200007148 |
out_trade_no | String | 是 | 64 | 商家订单号。原支付请求的商家订单号 | 6823789339978248 |
out_biz_no | String | 否 | 64 | 商家业务号。商家业务ID,通常是退款通知中返回的退款申请流水号 | HZRF001 |
buyer_id | String | 否 | 16 | 买家支付宝账号 ID。以 2088 开头的纯 16 位数字 | 20881***524333 |
seller_id | String | 否 | 30 | 卖家支付宝账号 ID。以 2088 开头的纯 16 位数字 | 20881***2239364 |
trade_status | String | 否 | 32 | 交易状态。交易目前所处状态,详情可查看下表 交易状态说明 | TRADE_CLOSED |
total_amount | Number | 否 | 11 | 订单金额。本次交易支付订单金额,单位为人民币(元),精确到小数点后 2 位 | 20.00 |
receipt_amount | Number | 否 | 11 | 实收金额。商家在交易中实际收到的款项,单位为人民币(元),精确到小数点后 2 位 | 15.00 |
invoice_amount | Number | 否 | 11 | 开票金额。用户在交易中支付的可开发票的金额,单位为人民币(元),精确到小数点后 2 位 | 13.88 |
buyer_pay_amount | Number | 否 | 11 | 用户在交易中支付的金额,单位为人民币(元),精确到小数点后 2 位 | 12.00 |
point_amount | Number | 否 | 11 | 使用集分宝支付金额,单位为人民币(元),精确到小数点后 2 位 | 12.00 |
refund_fee | Number | 否 | 11 | 总退款金额。退款通知中,返回总退款金额,单位为人民币(元),精确到小数点后 2 位 | 2.58 |
subject | String | 否 | 256 | 订单标题/商品标题/交易标题/订单关键字等,是请求时对应参数,会在通知中原样传回 | XXXX交易 |
body | String | 否 | 400 | 商品描述。该订单的备注、描述、明细等。对应请求时的 body 参数,会在通知中原样传回 | XXX交易内容 |
gmt_create | Date | 否 | - | 交易创建时间。格式为 yyyy-MM-dd HH:mm:ss | 2018-08-25 15:34:42 |
gmt_payment | Date | 否 | - | 交易付款时间。格式为 yyyy-MM-dd HH:mm:ss | 2018-08-25 15:34:42 |
gmt_refund | Date | 否 | - | 交易退款时间。格式为 yyyy-MM-dd HH:mm:ss.S | 2018-08-26 10:34:44.340 |
gmt_close | Date | 否 | - | 交易结束时间。格式为 yyyy-MM-dd HH:mm:ss | 2018-08-26 16:32:30 |
fund_bill_list | String | 否 | 512 | 支付金额信息。支付成功的各个渠道金额信息。详情可查看下文 资金明细信息说明 | [{"amount":"15.00","fundChannel":"ALIPAYACCOUNT"}] |
vocher_detail_list | String | 否 | 512 | 优惠券信息。本交易支付时所使用的所有优惠券信息。详情可查看下表 优惠券信息说明 | [{"amount":"0.20","merchantContribute":"0.00","name":"一键创建券模板名称","otherContribute":"0.20","type":"ALIAPY_BIZ_VOUCHER","memo":"学生卡8折优惠"}] |
passback_params | String | 否 | 512 | 回传参数,公共回传参数,如果请求时传递了该参数,则返回的异步通知会原样传回。本参数必须进行 UrlEncode 之后才可传入。 | merchantBizType%3d3C%26merchantBizNo%3d201601001111 |
枚举名称 | 枚举说明 |
---|---|
WAIT_BUYER_PAY | 交易创建,等待买家付款。 |
TRADE_CLOSED | 未付款交易超时关闭,或支付完成后全额退款。 |
TRADE_SUCCESS | 交易支付成功。 |
TRADE_FINISHED | 交易结束,不可退款。 |
触发条件名 | 触发条件描述 | 触发条件默认值 |
---|---|---|
TRADE_FINISHED | 交易完成 | false(不触发通知) |
TRADE_SUCCESS | 支付成功 | true(触发通知) |
WAIT_BUYER_PAY | 交易创建 | false(不触发通知) |
TRADE_CLOSED | 交易关闭 | false(不触发通知) |
参数 | 类型 | 必填 | 参数说明 |
---|---|---|---|
fundChannel | String | 否 | 支付渠道。详情可查看下文 支付渠道说明。示例值**:**ALIPAYACCOUNT |
amount | String | 否 | 支付金额。使用指定支付渠道支付的金额,单位为元。示例值**:**15.00 |
支付渠道代码 | 支付渠道 |
---|---|
COUPON | 支付宝红包 |
ALIPAYACCOUNT | 支付宝余额 |
POINT | 集分宝 |
DISCOUNT | 折扣券 |
PCARD | 预付卡 |
FINANCEACCOUNT | 余额宝 |
MCARD | 商家储值卡 |
MDISCOUNT | 商户优惠券 |
MCOUPON | 商户红包 |
PCREDIT | 蚂蚁花呗 |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
voucherId | String | 是 | 32 | 券 ID | 2015102600073002039000002D5O |
templateId | String | 否 | 64 | 券模板 ID | 20171030000730015359000EMZP0 |
name | String | 是 | 64 | 券名称 | 5 元代金券 |
type | String | 是 | 32 | 优惠类型。当前支持以下几种主要类型:ALIPAY_BIZ_VOUCHER:商家全场券。ALIPAY_COMMON_ITEM_VOUCHER:商家单品券。ALIPAY_CASH_VOUCHER:平台优惠券,支付宝或第三方出资。ALICREDIT_INTFREE_VOUCHER:花呗分期券,该券仅做订单外的工作呗分期费用减免,并不抵扣订单内支付金额。注意:不排除未来新增其它类型的可能,商家接入时请注意兼容性,避免硬编码。 | ALIPAY_BIZ_VOUCHER |
amount | Number | 是 | 11 | 优惠金额。优惠金额中,由商家出资的金额。 | 10.00 |
merchantContribute | Number | 否 | 11 | 商家出资金额。优惠金额中,由商家出资的金额。 | 9.00 |
otherContribute | Number | 否 | 11 | 其他出资方出资金额。可能是支付宝,可能是品牌商,或者其他方,也可能是他们的共同出资。 | 1.00 |
otherContributeDetail | ContributeDetail[] | 否 | 优惠券的其他出资方明细 | ||
L contributeType | String | 否 | 32 | 出资方类型,如品牌商出资、支付宝平台出资等。 | PLATFORM |
L contributeAmount | Number | 否 | 8 | 出资方金额 | 0.18 |
memo | String | 否 | 256 | 优惠券备注信息。 | 学生专用优惠 |
success
,支付宝会认为通知失败,会通过一定的策略定期重新发起通知。通知的间隔频率为:4m、10m、10m、1h、2h、6h、15h。request.Form("out_trade_no")
、$_POST['out_trade_no']
。https: //商家网站通知地址?voucher_detail_list=[{"amount":"0.20","merchantContribute":"0.00","name":"5折券","otherContribute":"0.20","type":"ALIPAY_DISCOUNT_VOUCHER","voucherId":"2016101200073002586200003BQ4"}]&fund_bill_list=[{"amount":"0.80","fundChannel":"ALIPAYACCOUNT"},{"amount":"0.20","fundChannel":"MDISCOUNT"}]&subject=PC网站支付交易&trade_no=2016101221001004580200203978&gmt_create=2016-10-12 21:36:12¬ify_type=trade_status_sync&total_amount=1.00&out_trade_no=mobile_rdm862016-10-12213600&invoice_amount=0.80&seller_id=2088201909970555¬ify_time=2016-10-12 21:41:23&trade_status=TRADE_SUCCESS&gmt_payment=2016-10-12 21:37:19&receipt_amount=0.80&passback_params=passback_params123&buyer_id=2088102114562585&app_id=2016092101248425¬ify_id=7676a2e1e4e737cff30015c4b7b55e3kh6& sign_type=RSA2&buyer_pay_amount=0.80&sign=***&point_amount=0.00
app_id=2016092101248425&buyer_id=2088102114562585&buyer_pay_amount=0.80&fund_bill_list=[{"amount":"0.80","fundChannel":"ALIPAYACCOUNT"},{"amount":"0.20","fundChannel":"MDISCOUNT"}]&gmt_create=2016-10-12 21:36:12&gmt_payment=2016-10-12 21:37:19&invoice_amount=0.80¬ify_id=7676a2e1e4e737cff30015c4b7b55e3kh6¬ify_time=2016-10-12 21:41:23¬ify_type=trade_status_sync&out_trade_no=mobile_rdm862016-10-12213600&passback_params=passback_params123&point_amount=0.00&receipt_amount=0.80&seller_id=2088201909970555&subject=PC网站支付交易&total_amount=1.00&trade_no=2016101221001004580200203978&trade_status=TRADE_SUCCESS&voucher_detail_list=[{"amount":"0.20","merchantContribute":"0.00","name":"5折券","otherContribute":"0.20","type":"ALIPAY_DISCOUNT_VOUCHER","voucherId":"2016101200073002586200003BQ4"}]
Map<String, String> paramsMap = ... //将异步通知中收到的所有参 数都存放到map中
boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, ALIPAY_PUBLIC_KEY, CHARSET, SIGN_TYPE) //调用SDK验证签名
if(signVerified){
// TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure
}else{
// TODO 验签失败则记录异常日志,并在response中返回failure.
}