一、接口介绍
pay/unifiedorder是支付宝开放平台提供的支付接口,主要用于商户发起支付请求,获取预支付订单号(prepare_id)并生成支付二维码,用户扫码完成支付流程。该接口支持多种交易场景,包括APP、小程序、H5等。
二、接口参数
支付宝开放平台提供了详细的pay/unifiedorder接口参数,其中必传参数包括app_id、out_trade_no、total_amount、subject、product_code等。其他可选参数包括timeout_express、passback_params等。下面是一个示例参数:
{ "app_id":"2016110100792789", "method":"alipay.trade.precreate", "format":"JSON", "charset":"utf-8", "sign_type":"RSA2", "timestamp":"2018-01-01 00:00:00", "version":"1.0", "notify_url":"http://www.yourdomain.com/notify_url", "biz_content":{ "out_trade_no":"20150401005", "total_amount":88.88, "subject":"Iphone6 16G", "store_id":"NJ_001", "timeout_express":"5m", "seller_id":"2088102146225135" } }
三、调用流程
pay/unifiedorder接口调用流程分为请求和响应两部分。
请求流程:商户向支付宝发送支付请求,包括APPID、商户订单号、付款金额、商品描述等,同时计算签名并携带签名一起发送。
响应流程:支付宝收到请求后校验APPID和签名,校验通过后生成预支付订单(prepare_id),并返回给商户二维码(code_url)和支付宝订单号(trade_no)。
四、代码示例
下面是使用Node.js调用pay/unifiedorder接口的示例代码:
const AlipaySdk = require('alipay-sdk').default; const AlipayFormData = require('alipay-sdk/lib/form').default; const alipaySdk = new AlipaySdk({ appId: 'app_id', privateKey: 'private_key', signType: 'RSA2', alipayPublicKey: 'alipay_public_key', }); const formData = new AlipayFormData(); formData.setMethod('get'); formData.addField('return_url', 'http://www.yourdomain.com/return_url'); formData.addField('notify_url', 'http://www.yourdomain.com/notify_url'); formData.addField('biz_content', { out_trade_no: 'out_trade_no', product_code: 'FAST_INSTANT_TRADE_PAY', total_amount: '0.01', subject: 'subject', }); const result = await alipaySdk.exec( 'alipay.trade.precreate', {}, { formData: formData }, );
五、常见问题
1、支付宝开放平台的appid在哪里申请?
支付宝开放平台的appid需要在支付宝开放平台注册并审核通过后获取。
2、为什么调用pay/unifiedorder接口返回“支付宝合作伙伴账户余额不足”?
这可能是由于支付宝账户余额不足导致的,请检查账户余额是否充足。
3、支付宝交易账单是在哪里查看?
支付宝交易账单可以在支付宝开放平台账户中心-交易记录中查看。