文章目录
- 支付宝当面付(条码支付)
- 一.账号初始配置
- 1.身份选择
- 2.完善信息和拓展身份
- 2.1完善信息
- 2.2拓展身份
- 二.沙箱环境应用配置
- 1. 沙箱应用
- 1.1必看部分
- 1.2选看部分
- 2. 沙箱账号
- 3. 沙箱工具
- 三.正式环境应用创建流程及配置
- 1. 创建应用指南
- 2. 选择应用类型
- 3. 创建应用
- 四.代码配置流程
- 1. 准备材料及说明
- 2. 代码配置
- 2.1项目结构
- 2.2集成至项目步骤
- 2.3配置文件说明
- 2.4签名和验签
支付宝当面付(条码支付)
一.账号初始配置
1.身份选择
登录蚂蚁金服开放平台之后,需要选择入驻身份,身份确定了你要开发哪种应用,开发自研应用(只供自己使用)就选择自研开发者。
2.完善信息和拓展身份
2.1完善信息
- 进入主界面后,点击右上角账户信息,进入账户管理/合作伙伴管理界面。
- 在账户管理/合作伙伴管理界面完善和修改账户信息。
- 然后签署协议
2.2拓展身份
在账户管理/合作伙伴管理界面下方有角色身份一栏,如需要开发其他种类应用,可以点击“立即扩展”按钮进行身份扩展。
二.沙箱环境应用配置
点击开发者中心-研发服务-沙箱环境,进入沙箱环境页面,沙箱环境有三个信息,沙箱应用,沙箱账号,沙箱工具。
1. 沙箱应用
进入沙箱环境页面后,可以看到系统已经自动为你创建一个应用。
1.1必看部分
参数介绍:
- APPID:沙箱环境自动生成,且唯一,必须与代码中APPID一致。
- 支付宝网关:沙箱环境自动生成,必须与代码一致,如果应用上线,代码中该地址配置为https://openapi.alipay.com/gateway.do,即去除地址中的dev字段。
- RSA2(SHA256)密钥:必填,如未配置,该参数后只显示“设置应用公钥”,点击下载签名验签工具,下载解压后如图所示。
- 进入文件夹,运行bat后缀程序。
- 如下图所示,弹出工具框,根据开发语言选择密钥格式,因为目前新建应用只支持RSA2签名方式,所以密钥长度选择2048方可生效。
1.2选看部分
- 应用网关:选填,用于接收支付宝异步通知,例如口碑开店中,需要配置此网关来接收开发者门店被动通知,一旦填入之后,该项就不能为空了,一般不需要配置。
- 授权回调地址:选填,第三方授权或用户信息授权后回调地址。授权链接中配置的redirect_uri的值必须与此值保持一致,一旦填入之后,该项就不能为空了,一般不需要配置。
- RSA(SHA1)密钥:选填,推荐使用RSA2(SHA256)密钥,如果在上方配置已经配置过,该处不需要配置。
- AES密钥:选填,对请求的报文内容进行加密,提高安全性,如果使用了该密钥,还需要在代码中对响应内容进行解密处理。
2. 沙箱账号
主要就是商家账号和买家账号,测试可以使用买家账号付款,也可以进行充值等操作。买家账号只能用于支付宝沙箱环境app。
3. 沙箱工具
三.正式环境应用创建流程及配置
可参考官方文档https://docs.open.alipay.com/194/105072/中条码支付接入指引。
1. 创建应用指南
开发者使用支付宝账号登录开放平台(需实名认证的支付宝账号),进入开发者中心。
2. 选择应用类型
- 应用类型分为自研发和第三方研发两种,根据自己业务需求选择应用类型,企业自研发请选择网页移动应用,小程序,生活号。
- 为企业或商户代开发,请选择第三方应用,上线后获取商户授权。
3. 创建应用
- 从开发者中心首页创建。
- 也可进入应用列表创建,比如创建网页应用。
- 填写应用基础信息。
使用场景:第三方应用服务于商户,自用型应用是为自己或自己的公司开发应用 - 应用图标最好自己做,以防与他人图标重复,导致审核不通过,官方说明一个月只能有两次审核机会。在下方添加应用需要开发的功能。
- 配置密钥,该密钥的生成方式与沙箱环境的生成方式一致,通过点击设置应用公钥,下载工具进行生成即可。
- 应用网关:选填,用于接收支付宝异步通知,例如口碑开店中,需要配置此网关来接收 开发者门店被动通知。
- 授权回调地址:选填,第三方授权或用户信息授权后回调地址。
- 下方为本地生成密钥效果图
- 待审核通过后,用户即可上线。当面付功能需要进行签约,签约完成后,待审核通过,应用投入使用。
四.代码配置流程
1. 准备材料及说明
2. 代码配置
以开发项目中用到的当面付demo为例。
2.1项目结构
当面付2.0demo代码结构TradePayDemo ###
src
`-- main
|-- java
| `-- com
| `-- alipay
| `-- demo
| `-- trade
| `-- Main.java ## 当面付2.0调用范例 ##
|-- lib 依赖类库
| |-- alipay-sdk-java20150625220051.jar
| |-- alipay-trade-sdk.jar TradePaySDK创建的lib
| |-- commons-codec-1.10.jar
| |-- commons-configuration-1.10.jar
| |-- commons-lang-2.6.jar
| |-- commons-logging-1.1.1.jar
| |-- core-2.1.jar
| |-- gson-2.3.1.jar
| `-- hamcrest-core-1.3.jar
`-- resources
2.2集成至项目步骤
集成至商户系统步骤如下:
1) 拷贝java目录下的Main.java至系统商源代码目录。
2) 将lib目录下所有jar文件添加至系统商lib目录。
3) 拷贝resources目录下的配置文件至系统商classpath根目录。
4) 在系统商项目中运行Main方法,确认集成无误。
5) 系统商使用main方法中的调用样例进行商户端系统开发。
2.3配置文件说明
所有重要信息都在zfbinfo.properties配置文件中配置。如图。
2.4签名和验签
1)自定义接口,获取http请求中的参数,进行参数拆分与拼接。
2)扫码支付需要进行异步验签,验签成功返回success,支付宝才能够确认为该订单支付成功。
3)条码支付不需要进行异步验签,同步方法中已自动进行验签。
4)官方验签说明文档:https://docs.open.alipay.com/291/105974
5)以下代码是官方提供的验签方法
// 获取支付宝POST过来反馈信息
Map<String, String> params = new HashMap<String, String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
// 乱码解决,这段代码在出现乱码时使用。
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr);
}
// 切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
// boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String
// publicKey, String charset, String sign_type)
try {
boolean flag = AlipaySignature.rsaCheckV1(params,
prop.getProperty("alipay_public_key"), "UTF-8", "RSA2");
if (flag) {
return "success";
}
} catch (AlipayApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "false";