条码支付接入指引

本文将带您接入支付宝条码支付。
条码支付:即商家使用扫码设备,扫描用户支付宝钱包上的条码/二维码,完成收款。

创建应用 
在开放平台创建一个应用
接入条码支付能力,需要在开放平台创建一个应用,通过该应用来接入各种能力。
若还未成为开放平台的入驻服务商或者商户, 请完成 入驻指引
 
配置应用 
为创建的应用添加所需功能
给应用添加当面付功能,这样就可以在你的应用里使用条码支付能力。
 
签约
在使用这些能力的时候,商户需要在开放平台里进行签约,这时候约定的合同就生效了。也可以代替商户签约。
 
配置密钥
为了保证交易双方的身份和数据安全,需要配置双方密钥。
了解支付宝密钥处理体系   | 开始生成密钥   | 开始配置密钥
为了确定交易双方(商户和支付宝)的身份和交易数据的安全,需要对交易数据进行双方校验
应用公钥(商户自身的RSA公钥): 支付宝使用该公钥验证该交易是商户发起。
支付宝公钥(支付宝的RSA公钥):商户使用该公钥验证该结果是支付宝返回的。
收起
 
设计 
接入设计
常用的接入方式与架构建议
在开始开发前,需要了解接入的方式或者所需物料等
门店直连方式   |   商户/系统商后台转发方式
即商家收银台直接通过公网向支付宝发起收款。个人商户或者单独门店建议采用直连方式
收起
商家收银台先请求到商家后台,再请求到支付宝。适合商户有多家门店,大型商户, 商户自有商户后台等模式下使用
收起
支持主流的红外扫描设备
 
安全设计
为了保证交易安全,支付宝采用了一系列的安全手段
了解更多安全手段   | 了解更多安全设计指南
1. 采用HTTPS协议传输交易数据,防止数据被截获,解密。
2. 采用RSA非对称密钥,明确交易双方的身份,保证交易主体的正确性和唯一性
3. 条码定时刷新,防止被拍照
4. 防止截屏(截屏后二维码码失效)
收起
 
开发 
开发应用与支付场景实现
SDK和开发语言
开发者可以使用多种开发方式接入支付能力,开放平台提供了支持主流开发语言的SDK接入的方式, 建议开发者采用SDK接入模式。也支持使用自己熟悉的编程语言构造HTTP请求接入支付宝支付能力
了解更多SDK接入   | 下载SDK
以java语言为例,调用交易支付接口alipay.trade.pay:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient
//创建API对应的request类
AlipayTradePayRequest request = new AlipayTradePayRequest(); 
request.setBizContent("{" +
"    \"out_trade_no\":\"20150320010101001\"," +
"    \"scene\":\"bar_code\"," +
"    \"auth_code\":\"28763443825664394\"," +
"    \"subject\":\"Iphone6 16G\"," +
"    \"store_id\":\"NJ_001\"," +
"    \"timeout_express\":\"2m\"," +
"    \"total_amount\":88.88" +
"  }"); //设置业务参数
//通过alipayClient调用API,获得对应的response类
AlipayTradePayResponse response = alipayClient.execute(request); 
System.out.print(response.getBody());
//根据response中的结果继续业务逻辑处理
了解更多HTTP方式接入
以调用交易支付接口alipay.trade.pay为例,构造http请求发起支付:
请注意需要对请求做urlencode处理,以下请求是为了方便查看,而没有做urlencode的原始报文
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.pay&app_id=2284&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&biz_content=
  {
    "out_trade_no":"20150320010101001",
    "scene":"bar_code,wave_code",
    "auth_code":"28763443825664394",
    "subject":"Iphone6 16G",
    "seller_id":"2088102146225135",
    "total_amount":"88.88",
    "store_id":"NJ_001"
  }
 
支付主流程
在集成条码支付能力时,建议实现如下支付场景:(创建订单并支付,根据支付结果确定支付状态,并且做异常处理,必要时候关闭订单)
了解更多支付场景实现的流程
在集成条码支付能力时,建议实现如下支付流程,创建订单并支付,根据返回的结果(如下图opt框中的三种情况)确定支付状态,并进行相应的异常处理,其过程如下图所示.
1. 创建交易并支付(如图,1~1.1.3步所示)
2. 根据返回的结果,确定支付状态,从而进行相应处理(包括必要时关闭交易), 如图opt区块中所示, 第2步表示支付成功, 返回支付成功页。
3. 第3步表示返回的参数为待用户付款(code=10003)或者系统异常(code=20000)、网络超时等场景下处理方式
4. 第4步表示轮询结束仍未处理成功,需要撤销订单
5. 第5步表示返回支付失败(code=40004) 时, 需要重新检查参数,重新发起支付
 
退款流程
商户由于业务原因可能需要退款,退款的途径按照支付途径原路返回. 支付渠道为花呗、余额等退款即时到账。银行卡的退款时间以银行退款时间为准,一般情况下2小时内可到账。也可以在商户门户(b.alipay.com)中退款
了解更多退款实现的流程   | 开始在商户门户退款
当商户因为业务原因如金额错误,用户退货,对账不平等情况下可能需要退款,可以使用交易成功的商户订单号或支付宝交易号进行退款 , 支持全额和部分退款,其过程如下图所示.
 
优惠与运营
可以为商品进行促销活动
 
对账
为了保障交易的正确性,支付宝提供了交易账单数据提供给商户对账
 
返佣
服务商帮助商户接入支付能力时候可以获取交易的返佣. 返佣技术接入,只需在API中传入返佣服务商ID即可获取返佣。
 
调试应用 
沙箱环境供调试使用
支付能力直接涉及到交易与资金,为了方便开放者调试支付能力,我们已经准备好沙箱环境,包括沙箱环境账号和沙箱版支付宝钱包,这样就可以在沙箱环境调试了.
 
上线应用 
上线应用所需步骤
上线
商户本身应用上线时候,也要把支付宝开放平台的应用上线.
 
验收
为了确保应用质量,开放平台提供了云验收平台,可以在线验收应用.
 
第三方授权
如果是服务商希望把应用能力拓展给商户,那么使用第三方授权就可以获取商户的授权,代商户发起支付.
 
监控应用 
在开放平台监控交易情况
应用上线后还可以在开放平台,查看应用运行情况以及交易状态.
onlineServer