支付宝当面付配置流程及使用方法

支付宝当面付(条码支付)

官方参考文档:https://docs.open.alipay.com/194/105072/

账号初始配置

身份选择

登录蚂蚁金服开放平台之后,需要选择入驻身份,身份确定了你要开发哪种应用,开发自研应用(只供自己使用)就选择自研开发者。

img

完善信息和拓展身份

完善信息

1)进入主界面后,点击右上角账户信息,进入账户管理/合作伙伴管理界面。

img

2)在账户管理/合作伙伴管理界面完善和修改账户信息。

img

3)然后签署协议

img

拓展身份

1)在账户管理/合作伙伴管理界面下方有角色身份一栏,如需要开发其他种类应用,可以点击“立即扩展”按钮进行身份扩展。

img

沙箱环境应用配置

点击开发者中心-研发服务-沙箱环境,进入沙箱环境页面,沙箱环境有三个信息,沙箱应用,沙箱账号,沙箱工具。

img

沙箱应用

进入沙箱环境页面后,可以看到系统已经自动为你创建一个应用。

必看部分

img

参数介绍:

1)APPID:沙箱环境自动生成,且唯一,必须与代码中APPID一致。

2)支付宝网关:沙箱环境自动生成,必须与代码一致,如果应用上线,代码中该地址配置为https://openapi.alipay.com/gateway.do,即去除地址中的dev字段。

3)RSA2(SHA256)密钥:必填,如未配置,该参数后只显示“设置应用公钥”,点击下载签名验签工具,下载解压后如图所示。

img

进入文件夹,运行bat后缀程序。

img

如下图所示,弹出工具框,根据开发语言选择密钥格式,因为目前新建应用只支持RSA2签名方式,所以密钥长度选择2048方可生效。

img

选看部分

img

1) 应用网关:选填,用于接收支付宝异步通知,例如口碑开店中,需要配置此网关来接收开发者门店被动通知,一旦填入之后,该项就不能为空了,一般不需要配置。

2) 授权回调地址:选填,第三方授权或用户信息授权后回调地址。授权链接中配置的redirect_uri的值必须与此值保持一致,一旦填入之后,该项就不能为空了,一般不需要配置。

3) RSA(SHA1)密钥:选填,推荐使用RSA2(SHA256)密钥,如果在上方配置已经配置过,该处不需要配置。

4) AES密钥:选填,对请求的报文内容进行加密,提高安全性,如果使用了该密钥,还需要在代码中对响应内容进行解密处理。

沙箱账号

主要就是商家账号和买家账号,测试可以使用买家账号付款,也可以进行充值等操作。买家账号只能用于支付宝沙箱环境app。

img

沙箱工具

img

正式环境应用创建流程及配置

可参考官方文档https://docs.open.alipay.com/194/105072/中条码支付接入指引。

创建应用指南

开发者使用支付宝账号登录开放平台(需实名认证的支付宝账号),进入开发者中心。img

选择应用类型

1) 应用类型分为自研发和第三方研发两种,根据自己业务需求选择应用类型,企业自研发请选择网页移动应用,小程序,生活号。

2) 为企业或商户代开发,请选择第三方应用,上线后获取商户授权。

创建应用

1) 从开发者中心首页创建。

img

2) 也可进入应用列表创建,比如创建网页应用。

img

3) 填写应用基础信息。

使用场景:第三方应用服务于商户,自用型应用是为自己或自己的公司开发应用

img

4) 应用图标最好自己做,以防与他人图标重复,导致审核不通过,官方说明一个月只能有两次审核机会。在下方添加应用需要开发的功能。

img

5) 配置密钥,该密钥的生成方式与沙箱环境的生成方式一致,通过点击设置应用公钥,下载工具进行生成即可。

应用网关:选填,用于接收支付宝异步通知,例如口碑开店中,需要配置此网关来接收 开发者门店被动通知

授权回调地址:选填,第三方授权或用户信息授权后回调地址。img

下方为本地生成密钥效果图

img

6) 待审核通过后,用户即可上线。当面付功能需要进行签约,签约完成后,待审核通过,应用投入使用。

img

代码配置流程

准备材料及说明

SDK及各种官方支付Demo下载:

https://docs.open.alipay.com/54/cyz7do/

代码配置

以开发项目中用到的当面付demo为例。

项目结构

### 当面付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

集成至项目步骤

集成至商户系统步骤如下:

1) 拷贝java目录下的Main.java至系统商源代码目录。

2) 将lib目录下所有jar文件添加至系统商lib目录。

3) 拷贝resources目录下的配置文件至系统商classpath根目录。

4) 在系统商项目中运行Main方法,确认集成无误。

5) 系统商使用main方法中的调用样例进行商户端系统开发。

配置文件说明

所有重要信息都在zfbinfo.properties配置文件中配置。如图。

img

签名和验签

1)自定义接口,获取http请求中的参数,进行参数拆分与拼接。

2)扫码支付需要进行异步验签,验签成功返回success,支付宝才能够确认为该订单支付成功。

3)条码支付不需要进行异步验签,同步方法中已自动进行验签。

4)官方验签说明文档:https://docs.open.alipay.com/291/105974

5)以下代码是官方提供的验签方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 获取支付宝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";