PC场景下单并支付
| 环境 | HTTPS请求地址 |
|---|---|
| 正式环境 | https://openapi.alipay.com/gateway.do |
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| 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.xx.com/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://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 |
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| show_url | String | 否 | 400 | 商品的展示地址 | http://www.alipay.com |
渠道说明
| 渠道名称 | 说明 |
|---|---|
| balance | 余额 |
| moneyFund | 余额宝 |
| coupon | 红包 |
| pcredit | 花呗 |
| pcreditpayInstallment | 花呗分期 |
| creditCard | 信用卡 |
| creditCardExpress | 信用卡快捷 |
| creditCardCartoon | 信用卡卡通 |
| credit_group | 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期) |
| debitCardExpress | 借记卡快捷 |
| mcard | 商户预存卡 |
| pcard | 个人预存卡 |
| promotion | 优惠(包含实时优惠+商户优惠) |
| voucher | 营销券 |
| point | 积分 |
| mdiscount | 商户优惠 |
| bankPay | 网银 |
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://domain.com/CallBack/return_url.jsp");
alipayRequest.setNotifyUrl("http://domain.com/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();
}
require_once("AopSdk.php");
//构造参数
$aop = new AopClient ();
$aop->gatewayUrl = '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;
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