写点什么

支付宝的沙箱环境配置和使用

用户头像
Brave
关注
发布于: 2 小时前

一,前言:

项目中我们集成了支付宝,用户可以使用支付宝来进行支付项目测试时,我们当然也需要一套测试环境对支付流程进行测试如果我们使用线上的支付宝配置进行测试,那么我们必须使用真实货币进行支付并且支付的金额会进入生产环境的支付宝绑定银行卡中,造成诸多不便这里,支付宝为测试提供了一个沙箱环境,使我们可以使用虚拟货币进行支付测试这篇文章就来详细说一下支付宝沙箱环境的配置和使用
复制代码



二,前置了解


在正式进入沙箱配置和使用之前,我们先说一下需要了解的一些知识和概念


首先,后台服务器在调用支付宝接口(如发起支付)时,需要实例化一个支付宝 client这里需要一些构造参数,而沙箱和正式环境的不同就在于这些参数:
复制代码


/** * Created by Brave on 17/5/16. * 支付宝参数配置-多环境 */@Componentpublic class AliPayConfig {    @Value("${alipay.url}")    private String alipay_url;// 支付宝网关(固定)    @Value("${alipay.appid}")    private String alipay_appid;// APPID 即创建应用后生成    @Value("${alipay.publickey}")    private String alipay_publickey;// 开发者私钥,由开发者自己生成    @Value("${app.privatekey}")    private String app_privatekey;// 支付宝公钥,由支付宝生成    @Value("${alipay.format}")    private String alipay_format;// 参数返回格式,只支持json    @Value("${alipay.charset}")    private String alipay_charset;// 编码集,支持GBK/UTF-8    @Value("${alipay.signtype}")    private String alipay_signtype;// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2    @Value("${alipay.pid}")    private String alipay_pid;// 合作者身份ID(PID)是商户与支付宝签约后,商户获得的支付宝商户唯一识别码        // getter and setter ...}
/** * Created by Brave on 17/5/16. * 支付宝客户端单例 */public class AliPayClient {
private AliPayClient() {}
private static DefaultAlipayClient instance;
public static synchronized DefaultAlipayClient getInstance(AliPayConfig aliPayConfig) {
if (instance == null){
instance = new DefaultAlipayClient( aliPayConfig.getAlipay_url(), aliPayConfig.getAlipay_appid(), aliPayConfig.getApp_privatekey(), aliPayConfig.getAlipay_format(), aliPayConfig.getAlipay_charset(), aliPayConfig.getAlipay_publickey(), aliPayConfig.getAlipay_signtype()); }
return instance; }}
复制代码


可以看到,在实例化 Client 时,使用了 8 个参数的构造方法(还有其他构造方法),

其中,前 4 个参数正式和沙箱环境使用的值是不同的,后四个可以是相同的,


根据我们对各个字段的注释应该可以知道:

1)沙箱环境和正式环境的支付宝网关不同:  因为使用了沙箱环境的支付宝网关2)沙箱环境和正式环境的APPID不同:  因为沙箱环境是新创建的一个应用3)沙箱环境和正式环境的开发者私钥(应用私钥)不同:  因为沙箱环境新建了新的应用,每个应用都应该重新生成一套应用公钥和私钥4)沙箱环境和正式环境的支付宝公钥不同:  因为为沙箱环境配置了新的应用公钥,所以生成的支付宝公钥
复制代码


到这里,又要清晰一组概念,应用公钥、应用私钥、支付宝公钥是什么?

这里我们不去说原理,只说使用新建一个支付宝应用后,我们使用支付宝提供的"RSA签名验签工具"生成一套应用公钥,应用私钥应用私钥:需填写到代码中供签名时使用。应用公钥:需提供给支付宝账号管理者上传到支付宝开放平台支付宝公钥:为应用配置应用公钥后,由支付宝生成
复制代码


支付宝相关文档:

  • 生成 RSA 密钥:https://docs.open.alipay.com/291/106074

  • 上传应用公钥并获取支付宝公钥:https://docs.open.alipay.com/291/105972/

  • 使用应用私钥生成请求签名:https://docs.open.alipay.com/291/105974/

  • 使用支付宝公钥验签:https://docs.open.alipay.com/291/106074/


三,沙箱环境配置


宝相关文档其实已经把配置所得听明白了,这里写给那些不想看文档的人,毕竟文档是文档,不是实际操作
复制代码


1,登陆支付宝开放平台,点击进入“开放平台-开发者中心-沙箱环境”。

2,进入沙箱环境页面,系统自动创建一个应用并可以看到应用信息

3,设置应用公钥,开发者要保证接口中使用的私钥与此处的公钥匹配,否则无法调用接口


秘钥生成文档:https://docs.open.alipay.com/291/105971


以MAC为例:下载秘钥生成工具,运行“RSA签名验签工具.bat”(WINDOWS)或“RSA签名验签工具.command”(MAC_OSX)
复制代码



详细步骤:1.根据开发语言选择密钥格式。2.选择密钥长度,建议使用2048位。3.点击 “生成密钥”,会自动生成商户应用公钥和应用私钥。4.点击“打开密钥文件路径”,即可找到生成的公私钥。如图:
复制代码



生成的私钥需妥善保管,避免遗失,不要泄露。应用私钥需填写到代码中供签名时使用。应用公钥需提供给支付宝账号管理者上传到支付宝开放平台
复制代码


4,验证公钥正确性:

下载签名工具:

运行支付宝报文签名生成器 SHA256withRSA2048_V1.0.command

将私钥文本信息粘贴到左侧点击生成签名

将生成的签名放入上一步的”RSA 秘钥调试工具”文本框内,进行验证

出现上图显示”验证成功"说明配置公钥正确

配置应用公钥完成后,会出现支付宝公钥:

点击查看支付宝公钥,获得支付宝公钥


至此,就获取到了支付宝公钥和应用私钥,接下来,开始使用支付宝沙箱环境;


四,沙箱环境的使用


1,后台服务参数修改:

在前置了解中,我们已经将支付宝实例化的代码和参数贴了出来也说明了沙箱环境其实就是新生成的一个支付宝应用实例化的8个参数中有四个是不同的,另外4个是和线上环境相同的即可
复制代码


下面我们看一下需要修改为沙箱环境的 4 个参数如何使用:

  • 支付宝网关:沙箱网关为 https://openapi.alipaydev.com/gateway.do

  • APPID:使用自动创建的沙箱管径 APPID 即可

  • 应用私钥:步骤三生成的应用私钥

  • 支付宝公钥:步骤三种得到的支付宝公钥


将服务器端实例化 Client 的参数改为上述参数即可启用沙箱环境进行支付宝测试


2,APP 支付沙箱接入注意点:


1、APP支付支持沙箱接入;在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准;2、APP支付只支持余额支付,不支持银行卡、余额宝等其他支付方式;3、APP支付只支持Android版接入,在使用sdk时,在支付接口前调用如下方法
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
复制代码


3,安装沙箱版支付宝 App:

沙箱环境下,支付宝也提供了沙箱版支付宝App(目前只能使用Android版本进行测试,IOS不可用)
复制代码


扫描二维码下载沙箱版 App:


4,获得沙箱版 App 登陆账号密码


支付宝开放平台-开发者中心-研发服务-沙箱账号:

https://openhome.alipay.com/platform/appDaily.htm?tab=tool



使用买家用户名密码登陆进行支付即可使用沙箱环境了

在这个页面下我们可以自由的为账户进行充值


最后,附上一张 App 的截图:


是不是特别爽


五,结尾


到这里,就完整地介绍了支付宝沙箱环境的使用流程;

其实,支付宝正式环境的配置和沙箱环境基本是一致的;


后面我们会说一下集成支付宝的方法以及逻辑上的注意事项

并且我们还有一套较为完善的支付宝监控的日志记录

此部分模块化已完成,后期会抽离成为一个 Demo 供调试使用

用户头像

Brave

关注

还未添加个人签名 2018.12.13 加入

还未添加个人简介

评论

发布
暂无评论
支付宝的沙箱环境配置和使用