收银员使用扫码设备读取用户支付宝钱包“付款码”后,将条码信息和订单信息通过本接口上送至支付宝发起资金冻结。
环境 | HTTPS请求地址 |
---|---|
正式环境 | https://openapi.alipay.com/gateway.do |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
app_id | String | 是 | 32 | 支付宝分配给开发者的应用ID | 2014072300007148 |
method | String | 是 | 128 | 接口名称 | alipay.fund.auth.order.freeze |
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 | 是 | - | 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档 |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
auth_code | String | 必须 | 32 | 支付授权码,25~30开头的长度为16~24位的数字,实际字符串长度以开发者获取的付款码长度为准 | 28763443825664394 |
auth_code_type | String | 必须 | 32 | 授权码类型
目前仅支持"bar_code" |
bar_code |
out_order_no | String | 必须 | 64 | 商户授权资金订单号 ,不能包含除中文、英文、数字以外的字符,创建后不能修改,需要保证在商户端不重复。 | 8077735255938023 |
out_request_no | String | 必须 | 64 | 商户本次资金操作的请求流水号,用于标示请求流水的唯一性,不能包含除中文、英文、数字以外的字符,需要保证在商户端不重复。 | 8077735255938032 |
order_title | String | 必须 | 100 | 业务订单的简单描述,如商品名称等
长度不超过100个字母或50个汉字 |
预授权冻结 |
amount | Price | 必须 | 11 | 需要冻结的金额,单位为:元(人民币),精确到小数点后两位
取值范围:[0.01,100000000.00] |
0.01 |
payee_logon_id | String | 可选 | 100 | 收款方支付宝账号(Email或手机号),如果收款方支付宝登录号(payee_logon_id)和用户号(payee_user_id)同时传递,则以用户号(payee_user_id)为准,如果商户有勾选花呗渠道,收款方支付宝登录号(payee_logon_id)和用户号(payee_user_id)不能同时为空。 | 159****5620 |
payee_user_id | String | 可选 | 32 | 收款方的支付宝唯一用户号,以2088开头的16位纯数字组成,如果非空则会在支付时校验交易的的收款方与此是否一致,如果商户有勾选花呗渠道,收款方支付宝登录号(payee_logon_id)和用户号(payee_user_id)不能同时为空。 | 2088102000275795 |
pay_timeout | String | 可选 | 5 | 该笔订单允许的最晚付款时间,逾期将关闭该笔订单
取值范围:1m~15d。m-分钟,h-小时,d-天。 该参数数值不接受小数点, 如 1.5h,可转换为90m 如果为空,默认15m |
2d |
extra_param | String | 可选 | 300 | 业务扩展参数,用于商户的特定业务信息的传递,json格式。
1.间联模式必须传入二级商户ID,key为secondaryMerchantId; 2. 当面资金授权业务对应的类目,key为category,value由支付宝分配,酒店业务传 "HOTEL"; 3. 外部商户的门店编号,key为outStoreCode,可选; 4. 外部商户的门店简称,key为outStoreAlias,可选。 |
{"secondaryMerchantId":"17320004886"} |
product_code | String | 可选 | 32 | 销售产品码,后续新接入预授权当面付的业务,本字段取值固定为PRE_AUTH。 | PRE_AUTH |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
code | String | 是 | - | 网关返回码,详见文档 | 40004 |
msg | String | 是 | - | 网关返回码描述,详见文档 | Business Failed |
sub_code | String | 否 | - | 业务返回码,详见文档 | ACQ.TRADE_HAS_SUCCESS |
sub_msg | String | 否 | - | 业务返回码描述,详见文档 | 交易已被支付 |
sign | String | 是 | - | 签名,详见文档 | DZXh8eeTuAHoYE3w1J+POiPhfDxOYBfUNn1lkeT/V7P4zJdyojWEa6IZs6Hz0yDW5Cp/viufUb5I0/V5WENS3OYR8zRedqo6D+fUTdLHdc+EFyCkiQhBxIzgngPdPdfp1PIS7BdhhzrsZHbRqb7o4k3Dxc+AAnFauu4V6Zdwczo= |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
auth_no | String | 必填 | 64 | 支付宝的资金授权订单号 | 2014070800002001550000014417 |
out_order_no | String | 必填 | 64 | 商户的授权资金订单号 | 4977164666634053 |
operation_id | String | 必填 | 64 | 支付宝的资金操作流水号 | 2014070800032850551 |
out_request_no | String | 必填 | 64 | 商户本次资金操作的请求流水号 | 2014070700166653 |
amount | Price | 必填 | 11 | 本次操作冻结的金额,单位为:元(人民币),精确到小数点后两位 | 0.01 |
status | String | 必填 | 20 |
资金预授权明细的状态
目前支持: INIT:初始 SUCCESS: 成功 CLOSED:关闭 |
SUCCESS |
payer_user_id | String | 必填 | 32 | 付款方支付宝用户号 | 2088102000275885 |
payer_logon_id | String | 必填 | 100 | 收款方支付宝账号(Email或手机号) | test***@alitest.com |
gmt_trans | Date | 选填 | 20 |
资金授权成功时间
格式:YYYY-MM-DD HH:MM:SS |
2014-09-15 11:23:04 |
pre_auth_type | String | 选填 | 20 |
预授权类型,目前支持 CREDIT_AUTH(信用预授权);
商户可根据该标识来判断该笔预授权的类型,当返回值为"CREDIT_AUTH"表明该笔预授权为信用预授权,没有真实冻结资金;当返回值为空或者不为"CREDIT_AUTH"则表明该笔预授权为普通资金预授权,会冻结用户资金。 |
CREDIT_AUTH |
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2"); AlipayFundAuthOrderFreezeRequest request = new AlipayFundAuthOrderFreezeRequest(); request.setBizContent("{" + "\"auth_code\":\"28763443825664394\"," + "\"auth_code_type\":\"bar_code\"," + "\"out_order_no\":\"8077735255938023\"," + "\"out_request_no\":\"8077735255938032\"," + "\"order_title\":\"预授权冻结\"," + "\"amount\":0.01," + "\"payee_logon_id\":\"159****5620\"," + "\"payee_user_id\":\"2088102000275795\"," + "\"pay_timeout\":\"2d\"," + "\"extra_param\":\"{\\\"secondaryMerchantId\\\":\\\"17320004886\\\"}\"," + "\"product_code\":\"PRE_AUTH\"" + " }"); AlipayFundAuthOrderFreezeResponse response = alipayClient.execute(request); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); }
{ "sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE", "alipay_fund_auth_order_freeze_response":{ "msg":"Success", "amount":0.01, "code":"10000", "gmt_trans":"2014-09-15 11:23:04", "pre_auth_type":"CREDIT_AUTH", "out_order_no":"4977164666634053", "operation_id":"2014070800032850551", "out_request_no":"2014070700166653", "payer_user_id":"2088102000275885", "auth_no":"2014070800002001550000014417", "status":"SUCCESS", "payer_logon_id":"test***@alitest.com" } }
{ "sign":"ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE", "alipay_fund_auth_order_freeze_response":{ "msg":"Service Currently Unavailable", "code":"20000", "sub_msg":"系统繁忙", "sub_code":"isp.unknow-error" } }
错误码 | 错误描述 | 解决方案 |
---|---|---|
ILLEGAL_ARGUMENT | 授权失败,预授权冻结参数异常或参数缺失,请顾客刷新付款码后重新收款 | 检查请求参数,修改后重新发起请求 |
EXIST_FORBIDDEN_WORD | 授权失败,订单信息中包含违禁词 | 修改订单信息后,重新发起请求 |
ACCESS_FORBIDDEN | 授权失败,本商户没有权限使用该产品,建议顾客使用其他方式付款 | 未签约条码支付或者合同已到期 |
UNIQUE_VIOLATION | 授权失败,商户订单号重复,请收银员取消本笔订单并重新授权 | 更换商户的授权资金订单号后,重新发起请求 |
PAYER_USER_STATUS_LIMIT | 授权失败,顾客账户暂时无法支付,建议顾客使用其他方式付款 | 买家支付宝账户受限,请登录支付宝认证升级,详情咨询95188 |
PAYER_NOT_EXIST | 授权失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款 | 用户刷新条码后,重新扫码发起请求 |
PAYMENT_AUTH_CODE_INVALID | 授权失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款,如再次授权失败 | 用户刷新条码后,重新扫码发起请求 |
MONEY_NOT_ENOUGH | 授权失败,顾客余额不足,建议顾客充值完成后再进行付款 | 买家绑定新的银行卡或者支付宝余额有钱后再发起支付 |
ORDER_ALREADY_CLOSED | 授权失败,本笔授权订单已关闭 | 更换商户授权资金订单号后,重新发起请求 |
FREEZE_ALREADY_SUCCESS | 授权失败,授权订单已经冻结成功,请勿重复授权 | 确认该笔预授权信息是否为当前付款方的,如果是则认为授权成功,如果不是则更换商家授权资金订单号后,重新发起请求 |
ERROR_BALANCE_PAYMENT_DISABLE | 授权失败,顾客余额支付功能开关关闭,请用户打开余额支付功能开关 | 用户打开余额支付开关后,再重新进行支付 |
PULL_MOBILE_CASHIER_FAIL | 授权失败,顾客手机唤起收银台失败,请顾客检查手机网络,刷新付款码后重新预授权,并让顾客在付款码页面等待确认 | 用户检查手机网络,刷新条码后,重新扫码发起请求 |
USER_FACE_PAYMENT_SWITCH_OFF | 授权失败,顾客当面付付款开关关闭,请用户在手机上打开当面付付款开关 | 让用户在手机上打开当面付付款开关 |
SYSTEM_ERROR | 系统错误 | 请立即调用查询订单API,查询当前订单的状态,并根据订单状态决定下一步的操作 |
ORDER_ALREADY_FINISH | 授权失败,本笔授权订单已经完结,无法再进行资金操作 | 更换商家授权资金订单号后,重新发起请求 |
PAYEE_NOT_EXIST | 授权失败,收款方账号不存在 | 确认该收款方账号是注册过的支付宝账号 |
PAYEE_USER_STATUS_LIMIT | 授权失败,收款方账号异常 | 卖家支付宝账户受限,请登录支付宝认证升级,详情咨询95188 |
PAYER_PAYEE_EQUAL | 授权失败,收付款方信息不能相同 | 请商家基于业务诉求更换付款方或收款方信息 |
NO_PAYMENT_INSTRUMENTS_AVAILABLE | 授权失败,用户没用可用的支付工具 | 请用户更换其它付款方式 |
CLIENT_VERSION_NOT_MATCH | 授权失败,顾客手机支付宝客户端版本过低,请更新到最新版本 | 请用户更新到最新版本的手机支付宝客户端 |
通知类型 | 描述 | 默认开启 |
---|---|---|
fund_auth_freeze | 资金预授权冻结成功 | 1 |
fund_auth_freeze.closed | 资金预授权订单关闭 | 0 |
fund_auth_freeze.init | 资金预授权订单创建 | 0 |
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
auth_no | String | 必填 | - | 支付宝资金授权订单号 | |
out_order_no | String | 必填 | - | 商户的资金授权订单号 | |
operation_id | String | 必填 | - | 支付宝资金操作流水号 | |
out_request_no | String | 必填 | - | 商户资金操作流水号 | |
operation_type | String | 必填 | - | 资金操作类型,支持【FREEZE,UNFREEZE,PAY】 | |
amount | String | 必填 | - | 本次操作金额 | |
status | String | 必填 | - | 本次资金操作流水状态,支持【INIT,SUCCESS,CLOSED】 | |
gmt_create | String | 必填 | - | 操作创建时间 | |
gmt_trans | String | 必填 | - | 操作处理完成时间 | |
payer_logon_id | String | 必填 | - | 付款方支付宝账号登录号 | |
payer_user_id | String | 必填 | - | 付款方支付宝账号UID | |
payee_logon_id | String | 必填 | - | 收款方支付宝账号登录号 | |
payee_user_id | String | 必填 | - | 收款方支付宝账号UID | |
total_freeze_amount | String | 必填 | - | 累计冻结金额 | |
total_unfreeze_amount | String | 必填 | - | 累计解冻金额 | |
total_pay_amount | String | 必填 | - | 累计支付金额 | |
rest_amount | String | 必填 | - | 剩余冻结金额 | |
pre_auth_type | String | 必填 | 20 |
预授权类型,目前支持 CREDIT_AUTH(信用预授权);
商户可根据该标识来判断该笔预授权的类型,当返回值为"CREDIT_AUTH"表明该笔预授权为信用预授权,没有真实冻结资金;当返回值为空或者不为"CREDIT_AUTH"则表明该笔预授权为普通资金预授权,会冻结用户资金。 |
CREDIT_AUTH |
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=&auth_no=null&out_order_no=null&operation_id=null&out_request_no=null&operation_type=null&amount=null&status=null&gmt_create=null&gmt_trans=null&payer_logon_id=null&payer_user_id=null&payee_logon_id=null&payee_user_id=null&total_freeze_amount=null&total_unfreeze_amount=null&total_pay_amount=null&rest_amount=null&pre_auth_type=CREDIT_AUTH