alipay.trade.page.pay
更新时间:2017-11-02
PC场景下单并支付
公共参数
请求地址:
公共请求参数:
参数 |
类型 |
是否必填 |
最大长度 |
描述 |
示例值 |
app_id |
String |
是 |
32 |
支付宝分配给开发者的应用ID |
2014072300007148 |
method |
String |
是 |
128 |
接口名称 |
alipay.trade.page.pay |
format |
String |
否 |
40 |
仅支持JSON |
JSON |
return_url |
String |
否 |
256 |
同步返回地址,HTTP/HTTPS开头字符串 |
https://m.alipay.com/Gk8NF23 |
charset |
String |
是 |
10 |
请求使用的编码格式,如utf-8,gbk,gb2312等 |
utf-8 |
sign_type |
String |
是 |
10 |
商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 |
RSA2 |
sign |
String |
是 |
256 |
商户请求参数的签名串,详见签名 |
详见示例 |
timestamp |
String |
是 |
19 |
发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" |
2014-07-24 03:07:50 |
version |
String |
是 |
3 |
调用的接口版本,固定为:1.0 |
1.0 |
notify_url |
String |
否 |
256 |
支付宝服务器主动通知商户服务器里指定的页面http/https路径。 |
https://api./receive_notify.htm |
biz_content |
String |
是 |
- |
业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档 |
|
请求参数
参数 |
类型 |
是否必填 |
最大长度 |
描述 |
示例值 |
out_trade_no |
String |
是 |
64 |
商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复 |
20150320010101001 |
product_code |
String |
是 |
64 |
销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY |
FAST_INSTANT_TRADE_PAY |
total_amount |
Price |
是 |
11 |
订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] |
88.88 |
subject |
String |
是 |
256 |
订单标题 |
Iphone6 16G |
body |
String |
否 |
128 |
订单描述 |
Iphone6 16G |
goods_detail |
String |
否 |
|
订单包含的商品列表信息,Json格式: {"show_url":"https://或http://打头的商品的展示地址"} ,在支付时,可点击商品名称跳转到该地址 |
{"show_url":"https://www.alipay.com"} |
passback_params |
String |
否 |
512 |
公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝只会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝 |
merchantBizType%3d3C%26merchantBizNo%3d2016010101111 |
extend_params |
String |
否 |
|
|
{"sys_service_provider_id":"2088511833207846"} |
goods_type |
String |
否 |
2 |
商品主类型:0—虚拟类商品,1—实物类商品(默认) 注:虚拟类商品不支持使用花呗渠道 |
0 |
timeout_express |
String |
否 |
6 |
该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 该参数在请求到支付宝时开始计时。 |
90m |
enable_pay_channels |
String |
否 |
128 |
可用渠道,用户只能在指定渠道范围内支付 当有多个渠道时用“,”分隔 注:与disable_pay_channels互斥 |
pcredit,moneyFund,debitCardExpress |
disable_pay_channels |
String |
否 |
128 |
禁用渠道,用户不可用指定渠道支付 当有多个渠道时用“,”分隔 注:与enable_pay_channels互斥 |
pcredit,moneyFund,debitCardExpress |
auth_token |
String |
否 |
40 |
获取用户授权信息,可实现如免登功能。获取方法请查阅: 用户信息授权 |
appopenBb64d181d0146481ab6a762c00714cC27 |
qr_pay_mode |
String |
否 |
2 |
PC扫码支付的方式,支持前置模式和跳转模式。 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下几种: 0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px; 1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px; 3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px; 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。
跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。 2:订单码-跳转模式 |
4 |
qrcode_width |
String |
否 |
4 |
商户自定义二维码宽度 注:qr_pay_mode=4时该参数生效 |
100 |
业务扩展参数说明
参数 |
类型 |
是否必填 |
最大长度 |
描述 |
示例值 |
sys_service_provider_id |
String |
否 |
64 |
系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID |
2088511833207846 |
hb_fq_num |
String |
否 |
5 |
花呗分期数(目前仅支持3、6、12)注:使用该参数需要仔细阅读“花呗分期接入文档” |
3 |
hb_fq_seller_percent |
String |
否 |
3 |
卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持注:使用该参数需要仔细阅读“花呗分期接入文档” |
100 |
渠道说明
渠道名称 |
说明 |
balance |
余额 |
moneyFund |
余额宝 |
coupon |
红包 |
pcredit |
花呗 |
pcreditpayInstallment |
花呗分期 |
creditCard |
信用卡 |
creditCardExpress |
信用卡快捷 |
creditCardCartoon |
信用卡卡通 |
credit_group |
信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期) |
debitCardExpress |
借记卡快捷 |
mcard |
商户预存卡 |
pcard |
个人预存卡 |
promotion |
优惠(包含实时优惠+商户优惠) |
voucher |
营销券 |
point |
积分 |
mdiscount |
商户优惠 |
bankPay |
网银 |
请求示例
JAVA示例
import com.alipay.api.*;
import com.alipay.api.request.*;
public void doPost(HttpServletRequest httpRequest,
HttpServletResponse httpResponse) throws ServletException, IOException {
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE); //获得初始化的AlipayClient
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl("http:///CallBack/return_url.jsp");
alipayRequest.setNotifyUrl("http:///CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\"20150320010101001\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":88.88," +
" \"subject\":\"Iphone6 16G\"," +
" \"body\":\"Iphone6 16G\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.setContentType("text/html;charset=" + CHARSET);
httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
PHP示例
require_once("AopSdk.php");
//构造参数
$aop = new AopClient ();
$aop->gatewayUrl = '[https://openapi.alipay.com/gateway.do](https://openapi.alipay.com/gateway.do)';
$aop->appId = '请填写APPID';
$aop->rsaPrivateKey = '请填写商户私钥';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset= 'utf-8';
$aop->format='json';
$request = new AlipayTradePagePayRequest ();
$request->setReturnUrl('请填写您的页面同步跳转地址');
$request->setNotifyUrl('请填写您的异步通知地址');
$request->setBizContent('{"product_code":"FAST_INSTANT_TRADE_PAY","out_trade_no":"20150320010101001","subject":"Iphone6 16G","total_amount":"88.88","body":"Iphone6 16G"}');
//请求
$result = $aop->pageExecute ($request);
//输出
echo $result;
.NET示例
IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "app_id", "merchant_private_key", "json", "1.0", "RSA2", "alipay_public_key", "utf-8", false);
AlipayTradePagePayRequest request= new AlipayTradePagePayRequest() ;
request.BizContent="{" +
" \"body\":\"Iphone6 16G\"," +
" \"subject\":\"Iphone6 16G\"," +
" \"out_trade_no\":\"20150320010101001\"," +
" \"total_amount\":88.88," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"" +
" }";
AlipayTradePagePayResponse response=client.pageExecute(request);
string form = response.Body;
Response.Write(form);
页面回跳参数
对于PC网站支付的交易,在用户支付完成之后,支付宝会根据API中商户传入的return_url参数,通过GET请求的形式将部分支付结果参数通知到商户系统。
公共参数:
参数 |
类型 |
是否必填 |
最大长度 |
描述 |
示例值 |
app_id |
String |
是 |
32 |
支付宝分配给开发者的应用ID |
2016040501024706 |
method |
String |
是 |
128 |
接口名称 |
alipay.trade.page.pay.return |
sign_type |
String |
是 |
10 |
签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 |
RSA2 |
sign |
String |
是 |
256 |
支付宝对本次支付结果的签名,开发者必须使用支付宝公钥验证签名 |
详见示例 |
charset |
String |
是 |
10 |
编码格式,如utf-8,gbk,gb2312等 |
utf-8 |
timestamp |
String |
是 |
19 |
前台回跳的时间,格式"yyyy-MM-dd HH:mm:ss" |
2016-08-11 19:36:01 |
version |
String |
是 |
3 |
调用的接口版本,固定为:1.0 |
1.0 |
auth_app_id |
String |
是 |
32 |
授权方的appid注:由于本接口暂不开放第三方应用授权,因此auth_app_id=app_id |
2016040501024706 |
业务参数:
参数 |
类型 |
是否必填 |
最大长度 |
描述 |
示例值 |
out_trade_no |
String |
是 |
64 |
商户网站唯一订单号 |
70501111111S001111119 |
trade_no |
String |
是 |
64 |
该交易在支付宝系统中的交易流水号。最长64位。 |
2016081121001004630200142207 |
total_amount |
Price |
是 |
9 |
该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 |
9.00 |
seller_id |
String |
是 |
16 |
收款支付宝账号对应的支付宝唯一用户号。 以2088开头的纯16位数字 |
2088111111116894 |
页面回跳示例
https://m.alipay.com/GkSL?total_amount=0.10×tamp=2016-11-02+18%3A34%3A19&sign=G3WI0czviMAOzS5t0fYaDgK32sGpjkkXYVFTpYMtgX8JaXLiGiUTO%2F2IHogcCFT96jBCLZ6IsNzd%2BmxkB%2FRuwG%2F7naQk1qReuORMkrB5cpBf9U40bIUoCmSNqtANsTE2UPV7GKegYG2RqoCRScTmeFAFHj5L7zsM%2BLuYb9mqN3g%3D&trade_no=2016110221001004330228438026&sign_type=RSA2&auth_app_id=2014073000007292&charset=UTF-8&seller_id=2088411964605312&method=alipay.trade.page.pay.return&app_id=2014073000007292&out_trade_no=20150g320g010101001&version=1.0
业务错误码
错误码 |
错误描述 |
解决方案 |
SYSTEM_ERROR |
系统异常 |
联系支付宝小二(联系支付宝文档右边的客服头像或到支持中心咨询) |
PAYMENT_UNKNOW |
支付结果未知 |
联系支付宝小二(联系支付宝文档右边的客服头像或到支持中心咨询) |
PARTNER_ERROR |
合作伙伴信息不正确 |
请确认partnerId是否正确 |
INVALID_PARAMETER |
参数非法 |
请确认接入是否规范,如参数长度、格式等 |
SELLER_NOT_EXIST |
卖家不存在 |
请确认传入的卖家信息是否正确 |
INVALID_RECEIVE_ACCOUNT |
卖家不在设置的收款账户列表之中 |
请确认签约的收款限制集中是否包含所传卖家 |
TRADE_BUYER_NOT_MATCH |
交易买家不匹配 |
该笔交易已经创建,买家与本次买家不一致,需更换外部交易号或者更换为该笔交易的买家 |
CONTEXT_INCONSISTENT |
交易信息被篡改 |
该笔交易已经创建,请检查请求里的商品名称、金额、买卖家等信息与已存交易里的是否一致 |
TRADE_STATUS_ERROR |
交易状态不合法 |
检查交易状态,是否已经支付完成或者超时关闭 |
TRADE_HAS_SUCCESS |
交易已经支付 |
交易已经支付,若需要再次发起交易,请更换外部交易号 |
TRADE_HAS_CLOSE |
交易已经关闭 |
交易已经关闭,若需要再次发起交易,请更换外部交易号 |
EXIST_FORBIDDEN_WORD |
订单信息中包含违禁词 |
请更换订单信息 |
TOTAL_FEE_EXCEED |
订单金额超过限额 |
订单总金额必须大于等于0.01,小于等于100000000 |
TRADE_SETTLE_ERROR |
交易结算异常 |
检查结算信息(分账参数或者结算到卡参数)是否正确 |
ACCESS_FORBIDDEN |
商户没有使用该产品的权限 |
检查是否正确签约(产品是否正确、签约是否生效) |
BUYER_ENABLE_STATUS_FORBID |
买家状态非法,无法继续交易 |
更换买家 |
TRADE_PAYINFO_INCONSISTEN |
二次支付支付方式冲突 |
该笔交易已存在,切使用了花呗分期,请确认两次请求花呗分期参数一致 |
|