开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
支付产品
当面付
app支付
手机网站支付
电脑网站支付
接入指南
api 列表
交易
账单
刷脸付
预授权支付
商家扣款
订单码支付
私域产品
公域产品
营销产品
资金产品
会员产品
信用产品
安全产品
广告产品
其他通用产品
开发 > 服务端 > 支付产品 >  >  >  > 统一收单下单并支付页面接口
收藏
订阅更新
我的文档
设置
接入检测
即可查看检测结果)
若有未通过的接入检测项,接口将无法调通

接口说明

该接口是页面跳转接口,用于生成用户访问支付宝的跳转链接。请在服务端执行支付宝sdk中pageexecute方法,读取响应中的body()结果。该结果用于跳转到支付宝页面,返回到用户浏览器渲染或重定向跳转到支付宝页面。具体使用方法请参考
pc场景下单并支付

公共请求参数

参数类型是否必选最大长度描述示例值
app_idstring必选32
支付宝分配给开发者的应用id
2014072300007148
methodstring必选128
接口名称
alipay.trade.page.pay
formatstring可选40
仅支持json
json
return_urlstring可选256
http/https开头字符串
https://m.alipay.com/gk8nf23
charsetstring必选10
请求使用的编码格式,如utf-8,gbk,gb2312等
utf-8
sign_typestring必选10
商户生成签名字符串所使用的签名算法类型,目前支持rsa2和rsa,推荐使用rsa2
rsa2
signstring必选344
商户请求参数的签名串,详见签名
详见示例
timestampstring必选19
发送请求的时间,格式"yyyy-mm-dd hh:mm:ss"
2014-07-24 03:07:50
versionstring必选3
调用的接口版本,固定为:1.0
1.0
notify_urlstring可选256
支付宝服务器主动通知商户服务器里指定的页面http/https路径。
http://api.test.alipay.net/atinterface/receive_notify.htm
app_auth_tokenstring可选40
biz_contentstring必选
请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

业务请求参数

out_trade_no必选string(64)
【描述】商户订单号。
由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。
【示例值】20150320010101001
total_amount必选price(11)
【描述】订单总金额,单位为元,精确到小数点后两位,取值范围为 [0.01,100000000]。金额不能为0。
【示例值】88.88
subject必选string(256)
【描述】订单标题。
注意:不可使用特殊字符,如 /,=,& 等。
【示例值】iphone6 16g
product_code必选string(64)
【描述】销售产品码,与支付宝签约的产品码名称。注:目前电脑支付场景下仅支持fast_instant_trade_pay
【示例值】fast_instant_trade_pay
qr_pay_mode可选string(2)
【描述】pc扫码支付的方式。
支持前置模式和跳转模式。
前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以 iframe 方式请求支付宝页面。具体支持的枚举值有以下几种:
0:订单码-简约前置模式,对应 iframe 宽度不能小于600px,高度不能小于300px;
1:订单码-前置模式,对应iframe 宽度不能小于 300px,高度不能小于600px;
3:订单码-迷你前置模式,对应 iframe 宽度不能小于 75px,高度不能小于75px;
4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。
跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。支持传入的枚举值有:
2:订单码-跳转模式
【枚举值】
订单码-简约前置模式: 0
订单码-前置模式: 1
订单码-迷你前置模式: 3
【示例值】1
qrcode_width可选number(4)
【描述】商户自定义二维码宽度。
注:qr_pay_mode=4时该参数有效
【示例值】100
goods_detail可选goodsdetail[]
【描述】订单包含的商品列表信息,json格式。
goods_id必选string(32)
【描述】商品的编号
【示例值】apple-01
goods_name必选string(256)
【描述】商品名称
【示例值】ipad
quantity必选number(32)
【描述】商品数量
【示例值】1
price必选price(9)
【描述】商品单价,单位为元
【示例值】2000
alipay_goods_id可选string(32)
【描述】支付宝定义的统一商品编号
【示例值】20010001
goods_category可选string(24)
【描述】商品类目
【示例值】34543238
categories_tree可选string(128)
【描述】商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割
【示例值】124868003|126232002|126252004
show_url可选string(400)
【描述】商品的展示地址
【示例值】http://www.alipay.com/xxx.jpg
time_expire可选string(32)
【描述】订单绝对超时时间。
格式为yyyy-mm-dd hh:mm:ss。超时时间范围:1m~15d。
注:time_expire和timeout_express两者只需传入一个或者都不传,两者均传入时,优先使用time_expire。
【示例值】2016-12-31 10:05:01
sub_merchant可选submerchant
【描述】二级商户信息。
直付通模式和机构间连模式下必传,其它场景下不需要传入。
merchant_id必选string(16)
【描述】间连受理商户的支付宝商户编号,通过间连商户入驻后得到。间连业务下必传,并且需要按规范传递受理商户编号。
【示例值】2088000603999128
merchant_type可选string(32)
【描述】二级商户编号类型。
枚举值:
alipay:支付宝分配的间联商户编号;
目前仅支持alipay,默认可以不传。
【枚举值】
alipay: alipay
【示例值】alipay
extend_params可选extendparams
【描述】业务扩展参数
sys_service_provider_id可选string(64)
【描述】系统商编号
该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的pid
【示例值】2088511833207846
hb_fq_num可选string(5)
【描述】使用花呗分期要进行的分期数
【示例值】3
hb_fq_seller_percent可选string(3)
【描述】使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%
【示例值】100
industry_reflux_info可选string(512)
【描述】行业数据回流信息, 详见:地铁支付接口参数补充说明
【示例值】{\"scene_code\":\"metro_tradeorder\",\"channel\":\"xxxx\",\"scene_data\":{\"asset_name\":\"alipay\"}}
specified_seller_name可选string(32)
【描述】特殊场景下,允许商户指定交易展示的卖家名称
【示例值】xxx的跨境小铺
card_type可选string(64)
【描述】卡类型
【枚举值】
s0jp0000: s0jp0000
【示例值】s0jp0000
royalty_freeze可选string(16)
【描述】是否进行资金冻结,用于后续分账,true表示资金冻结,false或不传表示资金不冻结
【示例值】true
business_params可选string(512)
【描述】商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式
【示例值】{"mc_create_trade_ip":"127.0.0.1"}
promo_params可选string(512)
【描述】优惠参数。为 json 格式。注:仅与支付宝协商后可用
【示例值】{"storeidtype":"1"}
integration_type可选string(16)
【描述】请求后页面的集成方式。
枚举值:
aliapp:支付宝钱包内
pcweb:pc端访问
默认值为pcweb。
【枚举值】
支付宝钱包内: aliapp
pc端访问: pcweb
【示例值】pcweb
request_from_url可选string(256)
【描述】请求来源地址。如果使用aliapp的集成方式,用户中途取消支付会返回该地址。
【示例值】https://
store_id可选string(32)
【描述】商户门店编号。
指商户创建门店时输入的门店编号。
【示例值】nj_001
merchant_order_no可选string(32)
【描述】商户原始订单号,最大长度限制 32 位
【示例值】20161008001
ext_user_info可选extuserinfo
【描述】外部指定买家
cert_no可选string(64)
【描述】买家证件号。
注:need_check_info=t或fix_buyer=t时该参数才有效,支付宝会比较买家在支付宝留存的证件号码与该参数传入的值是否匹配。
【示例值】362334768769238881
min_age可选string(3)
【描述】允许的最小买家年龄。
买家年龄必须大于等于所传数值
注:
1. need_check_info=t时该参数才有效
2. min_age为整数,必须大于等于0
【示例值】18
name可选string(16)
【描述】指定买家姓名。
注: need_check_info=t或fix_buyer=t时该参数才有效
【示例值】李明
mobile可选string(20)
【描述】指定买家手机号。
注:该参数暂不校验
【示例值】16587658765
cert_type可选string(128)
【描述】指定买家证件类型。
枚举值:
identity_card:身份证;
passport:护照;
officer_card:军官证;
soldier_card:士兵证;
hokou:户口本。如有其它类型需要支持,请与蚂蚁金服工作人员联系。
注: need_check_info=t或fix_buyer=t时该参数才有效,支付宝会比较买家在支付宝留存的证件类型与该参数传入的值是否匹配。
【枚举值】
identity_card: identity_card
passport: passport
officer_card: officer_card
【示例值】identity_card
need_check_info可选string(1)
【描述】是否强制校验买家信息;
需要强制校验传:t;
不需要强制校验传:f或者不传;
当传t时,支付宝会校验支付买家的信息与接口上传递的cert_type、cert_no、name或age是否匹配,只有接口传递了信息才会进行对应项的校验;只要有任何一项信息校验不匹配交易都会失败。如果传递了need_check_info,但是没有传任何校验项,则不进行任何校验。
默认为不校验。
【示例值】f
identity_hash可选string(128)
【描述】买家加密身份信息。当指定了此参数且指定need_check_info=t时,支付宝会对买家身份进行校验,校验逻辑为买家姓名、买家证件号拼接后的字符串,以sha256算法utf-8编码计算hash,若与传入的值不匹配则会拦截本次支付。注意:如果同时指定了用户明文身份信息(name,cert_type,cert_no中任意一个),则忽略identity_hash以明文参数校验。
【示例值】27bfcd1dee4f22c8fe8a2374af9b660419d1361b1c207e9b41a754a113f38fcc
invoice_info可选invoiceinfo
【描述】开票信息
key_info必选invoicekeyinfo(200)
【描述】开票关键信息
is_support_invoice必选boolean(5)
【描述】该交易是否支持开票
【示例值】true
invoice_merchant_name必选string(80)
【描述】开票商户名称:商户品牌简称|商户门店简称
【示例值】abc|003
tax_num必选string(30)
【描述】税号
【示例值】1464888883494
details必选string(400)
【描述】开票内容
注:json数组格式
【示例值】[{"code":"100294400","name":"服饰","num":"2","sumprice":"200.00","taxrate":"6%"}]
常见请求示例
package com.java.sdk.demo;
import com.alipay.api.alipayapiexception;
import com.alipay.api.alipayclient;
import com.alipay.api.defaultalipayclient;
import com.alipay.api.alipayconfig;
import com.alipay.api.domain.alipaytradepagepaymodel;
import com.alipay.api.domain.extuserinfo;
import com.alipay.api.domain.invoicekeyinfo;
import com.alipay.api.response.alipaytradepagepayresponse;
import com.alipay.api.domain.invoiceinfo;
import com.alipay.api.request.alipaytradepagepayrequest;
import com.alipay.api.domain.extendparams;
import com.alipay.api.domain.goodsdetail;
import com.alipay.api.domain.submerchant;
import com.alipay.api.fileitem;
import java.util.base64;
import java.util.arraylist;
import java.util.list;
public class alipaytradepagepay {
    public static void main(string[] args) throws alipayapiexception {
        // 初始化sdk
        alipayclient alipayclient = new defaultalipayclient(getalipayconfig());
        // 构造请求参数以调用接口
        alipaytradepagepayrequest request = new alipaytradepagepayrequest();
        alipaytradepagepaymodel model = new alipaytradepagepaymodel();
        
        // 设置商户订单号
        model.setouttradeno("20150320010101001");
        
        // 设置订单总金额
        model.settotalamount("88.88");
        
        // 设置订单标题
        model.setsubject("iphone6 16g");
        
        // 设置产品码
        model.setproductcode("fast_instant_trade_pay");
        
        // 设置pc扫码支付的方式
        model.setqrpaymode("1");
        
        // 设置商户自定义二维码宽度
        model.setqrcodewidth(100l);
        
        // 设置订单包含的商品列表信息
        list<goodsdetail> goodsdetail = new arraylist<goodsdetail>();
        goodsdetail goodsdetail0 = new goodsdetail();
        goodsdetail0.setgoodsname("ipad");
        goodsdetail0.setalipaygoodsid("20010001");
        goodsdetail0.setquantity(1l);
        goodsdetail0.setprice("2000");
        goodsdetail0.setgoodsid("apple-01");
        goodsdetail0.setgoodscategory("34543238");
        goodsdetail0.setcategoriestree("124868003|126232002|126252004");
        goodsdetail0.setshowurl("http://www.alipay.com/xxx.jpg");
        goodsdetail.add(goodsdetail0);
        model.setgoodsdetail(goodsdetail);
        
        // 设置订单绝对超时时间
        model.settimeexpire("2016-12-31 10:05:01");
        
        // 设置二级商户信息
        submerchant submerchant = new submerchant();
        submerchant.setmerchantid("2088000603999128");
        submerchant.setmerchanttype("alipay");
        model.setsubmerchant(submerchant);
        
        // 设置业务扩展参数
        extendparams extendparams = new extendparams();
        extendparams.setsysserviceproviderid("2088511833207846");
        extendparams.sethbfqsellerpercent("100");
        extendparams.sethbfqnum("3");
        extendparams.setindustryrefluxinfo("{\"scene_code\":\"metro_tradeorder\",\"channel\":\"xxxx\",\"scene_data\":{\"asset_name\":\"alipay\"}}");
        extendparams.setspecifiedsellername("xxx的跨境小铺");
        extendparams.setroyaltyfreeze("true");
        extendparams.setcardtype("s0jp0000");
        model.setextendparams(extendparams);
        
        // 设置商户传入业务信息
        model.setbusinessparams("{\"mc_create_trade_ip\":\"127.0.0.1\"}");
        
        // 设置优惠参数
        model.setpromoparams("{\"storeidtype\":\"1\"}");
        
        // 设置请求后页面的集成方式
        model.setintegrationtype("pcweb");
        
        // 设置请求来源地址
        model.setrequestfromurl("https://");
        
        // 设置商户门店编号
        model.setstoreid("nj_001");
        
        // 设置商户的原始订单号
        model.setmerchantorderno("20161008001");
        
        // 设置外部指定买家
        extuserinfo extuserinfo = new extuserinfo();
        extuserinfo.setcerttype("identity_card");
        extuserinfo.setcertno("362334768769238881");
        extuserinfo.setname("李明");
        extuserinfo.setmobile("16587658765");
        extuserinfo.setminage("18");
        extuserinfo.setneedcheckinfo("f");
        extuserinfo.setidentityhash("27bfcd1dee4f22c8fe8a2374af9b660419d1361b1c207e9b41a754a113f38fcc");
        model.setextuserinfo(extuserinfo);
        
        // 设置开票信息
        invoiceinfo invoiceinfo = new invoiceinfo();
        invoicekeyinfo keyinfo = new invoicekeyinfo();
        keyinfo.settaxnum("1464888883494");
        keyinfo.setissupportinvoice(true);
        keyinfo.setinvoicemerchantname("abc|003");
        invoiceinfo.setkeyinfo(keyinfo);
        invoiceinfo.setdetails("[{\"code\":\"100294400\",\"name\":\"服饰\",\"num\":\"2\",\"sumprice\":\"200.00\",\"taxrate\":\"6%\"}]");
        model.setinvoiceinfo(invoiceinfo);
        
        request.setbizmodel(model);
        // 第三方代调用模式下请设置app_auth_token
        // request.putothertextparam("app_auth_token", "<-- 请填写应用授权令牌 -->");
        alipaytradepagepayresponse response = alipayclient.pageexecute(request, "post");
        // 如果需要返回get请求,请使用
        // alipaytradepagepayresponse response = alipayclient.pageexecute(request, "get");
        string pageredirectiondata = response.getbody();
        system.out.println(pageredirectiondata);
        if (response.issuccess()) {
            system.out.println("调用成功");
        } else {
            system.out.println("调用失败");
            // sdk版本是"4.38.0.all"及以上,可以参考下面的示例获取诊断链接
            // string diagnosisurl = diagnosisutils.getdiagnosis;
            // system.out.println(diagnosisurl);
        }
    }
    private static alipayconfig getalipayconfig() {
        string privatekey  = "<-- 请填写您的应用私钥,例如:miievqibadanb ... ... -->";
        string alipaypublickey = "<-- 请填写您的支付宝公钥,例如:miibijanbg... -->";
        alipayconfig alipayconfig = new alipayconfig();
        alipayconfig.setserverurl("https://openapi.alipay.com/gateway.do");
        alipayconfig.setappid("<-- 请填写您的appid,例如:2019091767145019 -->");
        alipayconfig.setprivatekey(privatekey);
        alipayconfig.setformat("json");
        alipayconfig.setalipaypublickey(alipaypublickey);
        alipayconfig.setcharset("utf-8");
        alipayconfig.setsigntype("rsa2");
        return alipayconfig;
    }
}
说明:本示例仅供参考。

公共响应参数

无公共响应参数

业务响应参数

pageredirectiondata|跳转页面数据必选string(16384)
【描述】用于跳转支付宝页面的信息,post和get方法生成内容不同:使用post方法执行,结果为html form表单,在浏览器渲染即可;使用get方法会得到支付宝url,需要打开或重定向到该url。建议使用post方式。具体使用方法请参考
【示例值】请参考响应示例
响应示例
"punchout_form" method="post" action="https://openapi.alipay.com/gateway.do?charset=utf-8&method=alipay.trade.page.pay&format=json&sign=eritjkeijkjhkkkkkkkhjereeeeeeeeeee&version=1.0&app_id=2017060101317939&sign_type=rsa2×tamp=2014-07-24 03:07:50"> "hidden" name="biz_content" value="{"time_expire":"2016-12-31 10:05:01","extend_params":"","query_options":"[\"hyb_amount\",\"enterprise_pay_info\"]","settle_info":"","subject":"iphone6 16g","product_code":"fast_instant_trade_pay","body":"iphone6 16g","qr_pay_mode":"1","integration_type":"pcweb","merchant_order_no":"20161008001","sub_merchant":"","invoice_info":"","ext_user_info":"","timeout_express":"90m","disable_pay_channels":"pcredit,moneyfund,debitcardexpress","agreement_sign_params":"","royalty_info":"","store_id":"nj_001","request_from_url":"https://","qrcode_width":"100","goods_detail":"","enable_pay_channels":"pcredit,moneyfund,debitcardexpress","out_trade_no":"20150320010101001","total_amount":"88.88","business_params":"{\"mc_create_trade_ip\":\"127.0.0.1\"}","promo_params":"{\"storeidtype\":\"1\"}"}"> "submit" value="立即支付" style="display:none" >
说明:本示例仅供参考。

公共错误码

业务错误码

错误码错误描述凯发app官方网站的解决方案
acq.access_forbidden无权限使用接口
未签约条码支付或者合同已到期
acq.buyer_balance_not_enough买家余额不足
买家绑定新的银行卡或者支付宝余额有钱后再发起支付
acq.buyer_bankcard_balance_not_e用户银行卡余额不足
建议买家更换支付宝进行支付或者更换其它付款方式
acq.buyer_enable_status_forbid买家状态非法
用户联系支付宝小二,确认买家状态为什么非法
acq.buyer_payment_amount_day_lim买家付款日限额超限
更换买家进行支付
acq.buyer_payment_amount_month_l买家付款月额度超限
买家更换账号后,重新付款或者更换其它付款方式
acq.buyer_seller_equal买卖家不能相同
更换买家重新付款
acq.context_inconsistent交易信息被篡改
更换商家订单号后,重新发起请求
acq.error_balance_payment_disabl余额支付功能关闭
用户打开余额支付开关后,再重新进行支付
acq.error_buyer_certify_level_li买家未通过人行认证
用户联系支付宝小二
acq.exist_forbidden_word订单信息中包含违禁词
修改订单信息后,重新发起请求
acq.illegal_sign_validty_period无效的签约有效期
更改接口中传入的签约有效期
acq.invalid_parameter参数无效
检查请求参数,修改后重新发起请求
acq.merchant_agreement_not_exist商户协议不存在
建议商户与支付宝确认签约代扣合同
acq.no_payment_instruments_avail没用可用的支付工具
更换其它付款方式
acq.partner_error应用app_id填写错误
联系支付宝小二,确认app_id的状态
acq.payment_fail支付失败
用户刷新条码后,重新发起请求,如果重试一次后仍未成功,更换其它方式付款
acq.payment_request_has_risk支付有风险
更换其它付款方式
acq.risk_merchant_ip_not_exist当前交易未传入ip信息,创单失败,请传入ip后再发起支付
检查请求参数是否已经传入用户ip信息
acq.system_error接口返回错误
请立即调用查询订单api,查询当前订单的状态,并根据订单状态决定下一步的操作,如果多次调用依然报此错误码,请联系支付宝客服。
acq.total_fee_exceed订单总金额不在允许范围内
修改订单金额再发起请求
acq.trade_buyer_not_match交易买家不匹配
更换商家订单号后,重新发起请求
acq.trade_has_close交易已经关闭
更换商家订单号后,重新发起请求
acq.trade_has_success交易已被支付
确认该笔交易信息是否为当前买家的,如果是则认为交易付款成功,如果不是则更换商家订单号后,重新发起请求

触发通知类型

通知类型描述默认开启
tradestatus.trade_closed交易关闭0
tradestatus.trade_finished交易完结0
tradestatus.trade_success支付成功1
tradestatus.wait_buyer_pay交易创建0

触发通知示例

https://www.merchant.com/receive_notify.htm?notify_type=trade_status_sync¬ify_id=91722adff935e8cfa58b3aabf4dead6ibe¬ify_time=2017-02-16 21:46:15&sign_type=rsa2&sign=wco t3d8kg71dtlkwn7r9pzuoxeabjwp8/fousxcuskxsovyxbpsaidpryscjhcjmaglncjokjqlj28/asl93jotw39fx6i07lxhnbpknezalwmvpdnqui01hzszf9v1i6ggzjbiad5lg8bzttxzoj87ub2i9guj3nr/nuc9vey=&merchant_app_id=2088102146225135&buyer_open_id=074a1cctg1lelxke4xqc0zgndid0nxi95b5lsnpazwyoco5&fund_bill_list=null&receipt_amount=null&invoice_amount=null&buyer_pay_amount=null&point_amount=null&voucher_detail_list=null&passback_params=null&out_channel_type=null&trade_no=null&app_id=null&out_trade_no=null&out_biz_no=null&buyer_id=null&seller_id=null&trade_status=null&total_amount=null&refund_fee=null&subject=null&body=null&gmt_create=null&gmt_payment=null&gmt_refund=null&gmt_close=null&buyer_logon_id=180****0062&charge_amount=8.88&charge_flags=bluesea_1&settlement_id=2018101610032004620239146945&receipt_currency_type=dc&hyb_amount=10.24&enterprise_pay_info={"invoice_amount":"28.00","is_use_enterprise_pay":"true"}
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
为开发者能享受更简单的协议处理逻辑、更丰富的开源工具配套、更低的接口响应时延,支付宝开放平台推出符合oas3.0规范的,助力开发体验。新版本文档请点击“查看v3版本”进行访问。
网站地图