条码支付接入指引

本文将指导您接入支付宝条码支付功能。
商家可以通过使用扫码设备,扫描用户支付宝钱包上的条码/二维码,完成收款。整体过程分为7步:

  1. 创建应用

  2. 配置应用

  3. 设计应用

  4. 开发应用

  5. 调试应用

  6. 上线应用

  7. 监控应用

创建应用

开发者需要在开放平台创建一个应用,通过该应用来接入条码支付能力和其他能力。
若您还未成为开放平台的入驻服务商或者商户, 您需要完成入驻指引
您还可以点击了解应用创建步骤开始创建应用

配置应用

1.创建应用:为创建的应用添加所需功能,以便在应用里使用条码支付能力。
您可以点击了解如何添加当面付功能立即开始添加

2.完成签约:开发者需要为创建的应用签约以使用当面付能力;完成签约后,约定的合同生效,开发的应用就可以使用已完成签约的功能。点击了解如何签约立即开始签约。此外,开发者也可以代替商户签约。点击了解如何代商家签约开始代商家签约


3.配置密钥:开发者需 要生成密钥配置密钥以保证交易双方(商户和支付宝)的身份和数据安全。密钥的配置旨在对交易数据进行双方校验。具体流程如下图所示:


  • 应用公钥(商户自身的 RSA 公钥): 支付宝使用该公钥验证该交易是商户发起。

  • 支付宝公钥(支付宝的 RSA 公钥):商户使用该公钥验证该结果是支付宝返回的。

设计应用

1.接入设计:本步骤为开发者提供常用的接入方式说明和架构建议。在开始开发前,开发者需要了解接入的方式或者所需物料等。应用接入方式分为两类:门店直连方式和商户/系统商后台转发方式。


a. 门店直连方式
商家收银台直接通过公网向支付宝发起收款;个人商户或者单独门店建议采用直连方式接入。具体流程如下图所示:

b. 商户/系统商后台转发方式
商家收银台先请求到商家后台,再请求到支付宝;有多家门店的商户,大型商户, 自有商户后台的商户建议采用该方式接入。具体流程如下图所示:

点击下载支付宝支付物料和了解物料系统寄送

2.安全设计:本步骤介绍了支付宝为了保证交易安全而采取的一系列安全手段以保证交易安全。点击了解更多安全设计指南

  • 采用 HTTPS 协议传输交易数据,防止数据被截获,解密。
  • 采用 RSA 非对称密钥,明确交易双方的身份,保证交易主体的正确性和唯一性。
  • 条码定时刷新,防止被拍照。
  • 防止截屏(截屏后二维码码失效)。

开发应用

SDK 和开发语言

开发者可以使用多种开发方式接入支付能力。开放平台提供了支持主流开发语言的 SDK 接入的方式,建议开发者采用 SDK 接入模式。开放平台也支持开发者使用自己熟悉的编程语言构造 HTTP 请求接入支付宝支付能力。

  1. 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中的结果继续业务逻辑处理

点击下载 SDK查看相关 API


2. 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"
  }

点击查看相关 API

支付主流程

本步骤描述了开发者在集成条码支付能力时,开放平台建议的支付场景(创建订单并支付,根据支付结果确定支付状态,并且做异常处理,必要时候关闭订单)。其过程如下图所示:

a. 创建交易并支付(如图,1-1.1.3步所示)。
b. 根据返回的结果,确定支付状态,从而进行相应处理(包括必要时关闭交易), 如图 opt 区块中所示,第2步表示支付成功, 返回支付成功页。
c. 第3步表示返回的参数为待用户付款(code=10003)或者系统异常(code=20000)、网络超时等场景下处理方式。
d. 第4步表示轮询结束仍未处理成功,需要撤销订单。
e. 第5步表示返回支付失败(code=40004) 时, 需要重新检查参数,重新发起支付。
点击了解更多示例开发细节;点击了解更多异常处理;点击查看API

退款流程

本步骤旨在说明商户的退款流程。当商户由于业务原因(如金额错误,用户退款或者对账不平等等)可能需要退款,退款的途径按照支付途径原路返回。支付渠道为花呗、余额等退款即时到账;银行卡的退款时间以银行退款时间为准,一般情况下2小时内可到账。开发者也可以在商家门户(b.alipay.com)中退款。开发者也可以使用交易成功的商户订单号或支付宝交易号进行退款 , 支持全额和部分退款,其过程如下图所示:

点击了解更多退款流程细节和查看相关 API

优惠与运营

开发者或商家可以为商品进行促销活动。
点击了解更多优惠运营支持方式;点击了解更多开发接入优惠

对账

为了保障交易的正确性,支付宝提供了交易账单数据提供给商户对账。
点击了解更多对账接入;如果对账不平,点击了解更多单边账的处理方式

返佣

服务商帮助商户接入支付能力时候可以获取交易的返佣。 返佣技术接入只需在 API 中传入返佣服务商ID,开发者即可获取返佣。
为了确保得到返佣,需要返佣的 ISV 请确保传入正确的返佣参数。建议系统商接入的所有订单都加入 sys_service_provider_id 参数,并检查参数是否正确。系统商如果传入错误的参数将无法获得返佣。
点击在开放平台查看返佣明细

调试应用

支付能力直接涉及到交易与资金,为了方便开放者调试支付能力,开放平台已经准备好沙箱环境,包括沙箱环境账号和沙箱版支付宝钱包,这样开发者就可以在沙箱环境调试了。
点击了解如何接入沙箱接入沙箱环境

上线应用

  1. 上线:商户本身应用上线时候,也要把支付宝开放平台的应用上线。
    点击了解更多上线动作

  2. 验收:为了确保应用质量,开放平台提供了云验收平台,可以在线验收应用。
    点击了解更多云验收

  3. 第三方授权:如果是服务商希望把应用能力拓展给商户,那么使用第三方授权就可以获取商户的授权,代商户发起支付。
    点击了解更多第三方授权

监控应用

应用上线后还可以在开放平台,查看应用运行情况以及交易状态。
点击了解更多监控产品;点击开始监控

onlineServer