说明
out_trade_no,商户订单号,64个字符以内,可以包含字母、数字、下划线;需保证在商户端不重复。
这个参数是对接支付宝支付接口的商户自己定义传值的一个参数,商户需要保证这个参数不会重复,所以不能使用同一个订单号去请求接口,当然交易未在支付宝这边创建是可以使用相同订单号去请求的,不同接口交易创建的时机各有不同,下面就详细介绍各个接口如何配置订单号(JAVA代码示例)、及已存在支付成功的交易再用相同订单号去请求所报的错误。
注意
如果已经在支付宝这边创建完成的交易,但是用户没有付款(即待付款状态:WAIT_BUYER_PAY),那么商户使用相同订单号,且其他业务参数也不变的情况下去请求支付接口是可以正常唤起支付页面的,但是只能是之前交易创建时候登录或者扫码的账号才能进行付款,因为交易创建已经绑定了支付宝账号的,所以其他账号不能支付;如果订单号相同,其他业务参数修改了再去请求就会报错了:
以电脑网站接口为例
在商户正确提交请求参数到支付宝这边唤起支付宝收银台页面的时候,用户在用支付宝扫描电脑网站支付的二维码或者选择登录账户付款登录支付宝账号正常后,交易才会在支付宝这边创建
配置订单号代码示例
//model的配置方式AlipayTradePagePayModel model = new AlipayTradePagePayModel();model.setOutTradeNo("商户自己定义的不重复订单号");... //字符串拼接的配置AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setBizContent("{" + "\"out_trade_no\":\"商户自己定义的不重复订单号\"," + ... "}");
交易成功后再使用重复订单号请求支付宝的报错示例
1.TRADE_HAS_SUCCESS 交易已经支付
办法:
该笔交易已经存在且用户支付成功了,如果不确定订单的状态,可以去[url]https://b.alipay.com[/url]账单明细里查看此交易的状态,或者调用alipay.trade.query统一收单线下交易查询接口确认该笔订单的状态,若需要再次发起交易,请更换外部交易号
2. TRADE_HAS_CLOSE 交易已经关闭
办法:
该笔交易已经存在且为关闭状态,如果不确定订单的状态,可以去[url]https://b.alipay.com[/url]账单明细里查看此交易的状态,或者调用alipay.trade.query统一收单线下交易查询接口确认该笔订单的状态,若需要再次发起交易,请更换外部交易号
其他接口手机网站支付、APP支付、当面付都与电脑网站支付类似,就不再一一赘述了,有问题的小伙伴欢迎在帖子下面回复留言