alipay.trade.precreate(统一收单线下交易预创建)

收银员通过收银台或商户后台调用支付宝接口,生成二维码后,展示给用户,由用户扫描二维码完成订单支付。

公共参数

请求地址

环境HTTPS请求地址
正式环境 https://openapi.alipay.com/gateway.do

公共请求参数

参数 类型 是否必填最大长度描述示例值
app_id String 32 支付宝分配给开发者的应用ID 2014072300007148
method String 128 接口名称 alipay.trade.precreate
format String 40 仅支持JSON JSON
charset String 10 请求使用的编码格式,如utf-8,gbk,gb2312等 utf-8
sign_type String 10 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 RSA2
sign String 344 商户请求参数的签名串,详见签名 详见示例
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路径。 http://api.test.alipay.net/atinterface/receive_notify.htm
app_auth_token String 40 详见应用授权概述
biz_content String 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

请求参数

参数 类型 是否必填 最大长度 描述 示例值
out_trade_no String 必选 64 商户订单号,64个字符以内、只能包含字母、数字、下划线;需保证在商户端不重复 20150320010101001
seller_id String 可选 28 卖家支付宝用户ID。 如果该值为空,则默认为商户签约账号对应的支付宝用户ID 2088102146225135
total_amount Price 必选 11 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】 88.88
discountable_amount Price 可选 11 可打折金额. 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果该值未传入,但传入了【订单总金额】,【不可打折金额】则该值默认为【订单总金额】-【不可打折金额】 8.88
subject String 必选 256 订单标题 Iphone6 16G
goods_detail GoodsDetail[] 可选 订单包含的商品列表信息.json格式. 其它说明详见:“商品明细说明”
goods_id String 必填 32 商品的编号 apple-01
goods_name String 必填 256 商品名称 ipad
quantity Number 必填 10 商品数量 1
price Price 必填 9 商品单价,单位为元 2000
goods_category String 可选 24 商品类目 34543238
categories_tree String 可选 128 商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割 124868003|126232002|126252004
body String 可选 1000 商品描述信息 特价手机
show_url String 可选 400 商品的展示地址 http://www.alipay.com/xxx.jpg
body String 可选 128 对交易或商品的描述 Iphone6 16G
operator_id String 可选 28 商户操作员编号 yx_001
store_id String 可选 32 商户门店编号 NJ_001
disable_pay_channels String 可选 128 禁用渠道,用户不可用指定渠道支付
当有多个渠道时用“,”分隔
注,与enable_pay_channels互斥
渠道列表:https://docs.open.alipay.com/common/wifww7
pcredit,moneyFund,debitCardExpress
enable_pay_channels String 可选 128 可用渠道,用户只能在指定渠道范围内支付
当有多个渠道时用“,”分隔
注,与disable_pay_channels互斥
渠道列表
pcredit,moneyFund,debitCardExpress
terminal_id String 可选 32 商户机具终端编号 NJ_T_001
extend_params ExtendParams 可选 业务扩展参数
sys_service_provider_id String 可选 64 系统商编号
该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID
2088511833207846
industry_reflux_info String 可选 512 行业数据回流信息, 详见:地铁支付接口参数补充说明 {\"scene_code\":\"metro_tradeorder\",\"channel\":\"xxxx\",\"scene_data\":{\"asset_name\":\"ALIPAY\"}}
card_type String 可选 32 卡类型 S0JP0000
timeout_express String 可选 6 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 90m
settle_info SettleInfo 可选 描述结算信息,json格式,详见结算参数说明
settle_detail_infos SettleDetailInfo[] 必填 10 结算详细信息,json数组,目前只支持一条。
trans_in_type String 必填 64 结算收款方的账户类型。

cardSerialNo:结算收款方的银行卡编号;

userId:表示是支付宝账号对应的支付宝唯一用户号;
loginName:表示是支付宝登录号;
cardSerialNo
trans_in String 必填 64 结算收款方。当结算收款方类型是cardSerialNo时,本参数为用户在支付宝绑定的卡编号;结算收款方类型是userId时,本参数为用户的支付宝账号对应的支付宝唯一用户号,以2088开头的纯16位数字;当结算收款方类型是loginName时,本参数为用户的支付宝登录号 A0001
summary_dimension String 可选 64 结算汇总维度,按照这个维度汇总成批次结算,由商户指定。

目前需要和结算收款方账户类型为cardSerialNo配合使用
A0001
settle_entity_id String 可选 64 结算主体标识。当结算主体类型为SecondMerchant时,为二级商户的SecondMerchantID;当结算主体类型为Store时,为门店的外标。 2088xxxxx;ST_0001
settle_entity_type String 可选 32 结算主体类型。
二级商户:SecondMerchant;商户或者直连商户门店:Store
SecondMerchant、Store
amount Number 必填 9 结算的金额,单位为元。目前必须和交易金额相同 0.1
merchant_type String 可选 32 商户id类型, alipay: 支付宝分配的间连商户编号, merchant: 商户端的间连商户编号
merchant_order_no String 可选 32 商户原始订单号,最大长度限制32位 20161008001
business_params String 可选 512 商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式 {"data":"123"}
qr_code_timeout_express String 可选 6 该笔订单允许的最晚付款时间,逾期将关闭交易,从生成二维码开始计时。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。 90m

响应参数

参数 类型 是否必填 最大长度 描述 示例值
out_trade_no String 必填 64 商户的订单号 6823789339978248
qr_code String 必填 1024 当前预下单请求生成的二维码码串,可以用二维码生成工具根据该码串值生成对应的二维码 https://qr.alipay.com/bavh4wjlxf12tper3a

请求示例

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizContent("{" +
"\"out_trade_no\":\"20150320010101001\"," +
"\"seller_id\":\"2088102146225135\"," +
"\"total_amount\":88.88," +
"\"discountable_amount\":8.88," +
"\"subject\":\"Iphone6 16G\"," +
"      \"goods_detail\":[{" +
"        \"goods_id\":\"apple-01\"," +
"\"goods_name\":\"ipad\"," +
"\"quantity\":1," +
"\"price\":2000," +
"\"goods_category\":\"34543238\"," +
"\"categories_tree\":\"124868003|126232002|126252004\"," +
"\"body\":\"特价手机\"," +
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
"        }]," +
"\"body\":\"Iphone6 16G\"," +
"\"operator_id\":\"yx_001\"," +
"\"store_id\":\"NJ_001\"," +
"\"disable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"enable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"terminal_id\":\"NJ_T_001\"," +
"\"extend_params\":{" +
"\"sys_service_provider_id\":\"2088511833207846\"," +
"\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," +
"\"card_type\":\"S0JP0000\"" +
"    }," +
"\"timeout_express\":\"90m\"," +
"\"settle_info\":{" +
"        \"settle_detail_infos\":[{" +
"          \"trans_in_type\":\"cardSerialNo\"," +
"\"trans_in\":\"A0001\"," +
"\"summary_dimension\":\"A0001\"," +
"\"settle_entity_id\":\"2088xxxxx;ST_0001\"," +
"\"settle_entity_type\":\"SecondMerchant、Store\"," +
"\"amount\":0.1" +
"          }]" +
"    }," +
"\"merchant_order_no\":\"20161008001\"," +
"\"business_params\":\"{\\\"data\\\":\\\"123\\\"}\"," +
"\"qr_code_timeout_express\":\"90m\"" +
"  }");
AlipayTradePrecreateResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}

响应示例

{
    "alipay_trade_precreate_response": {
        "code": "10000",
        "msg": "Success",
        "out_trade_no": "6823789339978248",
        "qr_code": "https://qr.alipay.com/bavh4wjlxf12tper3a"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

异常示例

{
    "alipay_trade_precreate_response": {
        "code": "20000",
        "msg": "Service Currently Unavailable",
        "sub_code": "isp.unknow-error",
        "sub_msg": "系统繁忙"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

业务错误码

公共错误码

错误码错误描述解决方案
ACQ.SYSTEM_ERROR 接口返回错误 请立即调用查询订单API,查询当前订单的状态,并根据订单状态决定下一步的操作
ACQ.INVALID_PARAMETER 参数无效 检查请求参数,修改后重新发起请求
ACQ.ACCESS_FORBIDDEN 无权限使用接口 联系支付宝小二签约
ACQ.EXIST_FORBIDDEN_WORD 订单信息中包含违禁词 修改订单信息后,重新发起请求
ACQ.PARTNER_ERROR 应用APP_ID填写错误 联系支付宝小二,确认APP_ID的状态
ACQ.TOTAL_FEE_EXCEED 订单总金额超过限额 修改订单金额再发起请求
ACQ.CONTEXT_INCONSISTENT 交易信息被篡改 更换商家订单号后,重新发起请求
ACQ.TRADE_HAS_SUCCESS 交易已被支付 确认该笔交易信息是否为当前买家的,如果是则认为交易付款成功,如果不是则更换商家订单号后,重新发起请求
ACQ.TRADE_HAS_CLOSE 交易已经关闭 更换商家订单号后,重新发起请求
ACQ.BUYER_SELLER_EQUAL 买卖家不能相同 更换买家重新付款
ACQ.TRADE_BUYER_NOT_MATCH 交易买家不匹配 更换商家订单号后,重新发起请求
ACQ.BUYER_ENABLE_STATUS_FORBID 买家状态非法 用户联系支付宝小二,确认买家状态为什么非法
ACQ.BUYER_PAYMENT_AMOUNT_DAY_LIMIT_ERROR 买家付款日限额超限 更换买家进行支付
ACQ.BEYOND_PAY_RESTRICTION 商户收款额度超限 联系支付宝小二提高限额
ACQ.BEYOND_PER_RECEIPT_RESTRICTION 商户收款金额超过月限额 联系支付宝小二提高限额
ACQ.BUYER_PAYMENT_AMOUNT_MONTH_LIMIT_ERROR 买家付款月额度超限 让买家更换账号后,重新付款或者更换其它付款方式
ACQ.SELLER_BEEN_BLOCKED 商家账号被冻结 联系支付宝小二,解冻账号
ACQ.ERROR_BUYER_CERTIFY_LEVEL_LIMIT 买家未通过人行认证 让用户联系支付宝小二并更换其它付款方式
ACQ.INVALID_STORE_ID 商户门店编号无效 检查传入的门店编号是否符合规则

触发通知类型

通知类型描述默认开启
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&notify_id=91722adff935e8cfa58b3aabf4dead6ibe&notify_time=2017-02-16 21:46:15&sign_type=RSA2&sign=WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAlwmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=&charge_amount=8.88&charge_flags=bluesea_1&settlement_id=2018101610032004620239146945
onlineServer