扫码支付接入指引

本文将带您接入支付宝扫码支付。
扫码支付:用户支付宝钱包上的扫一扫功能扫商户二维码,完成付款。

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