序言
看了那么多大佬写的沙箱环境的实现,抱着学习的心态,我也跟着做了一下。
发现问题一大堆…因为我是用idea的,解决了一大堆问题后觉得有必要帮助咱们idea的伙伴快速排查问题并解决!
如果你在调试中还发现什么问题,可以评论区贴出来,我很闲,看到会尽量解决的。
沙箱环境
蚂蚁沙箱环境 (Beta) 是协助开发者进行接口功能开发及主要功能联调的辅助环境。沙箱环境模拟了开放平台部分产品的主要功能和主要逻辑(当前沙箱支持产品请参考“沙箱支持产品列表”)。
在开发者应用上线审核前,开发者可以根据自身需求,先在沙箱环境中了解、组合和调试各种开放接口,进行开发调通工作,从而帮助开发者在应用上线审核完成后,能更快速、更顺利的进行线上调试和验收工作。
如何使用和配置沙箱环境请参考《沙箱环境使用说明》。
以上是支付宝的沙箱环境介绍
沙箱环境模拟下单步骤
登录你的个人支付宝账号
切换到商户版,找到开放平台点击
点击开发者中心,然后点击研发服务,选择自研开发服务,记得如果你没在开发平台登录会提示你登录
进入后是这样 的
这就是沙箱环境的信息配置,APPID是自动帮我们创建好了的,网关也不用管。我们要做的就是设置那个密钥
这里RSA2需要设置公钥。推荐使用RSA2.
这个页面就相当于支付宝提供的文档。至于后面的验签及格式咱先不管。下载这个生成密钥工具解压安装并打开,直接点击生成密钥就可以了
将工具生成的公钥复制到这个里面
弄好以后去natapp官网下载natapp工具做内网穿透,先把工具下载下来解压好
natapp官网:https://natapp.cn/
下载完成进入官网
注册登录后购买个免费的隧道做测试,会提示你实名认证,认证一下即可
名称随便取,端口防止冲突我用个8088的,然后在我的隧道里就可以看到你隧道的信息,记住这个authtoken
这时,最好推荐用户可将本地DNS更换为阿里公共DNS 223.5.5.5 223.6.6.6
这样不但可以本地上网的域名增加解析速度,防止DNS劫持等.
更重要的是,我们natapp服务器在变更ip的时候,可以做到及时切换,秒级恢复服务
win10具体如下
右键属性,找到internet协议版本4
然后确定并关闭就已经设置好网关了。
现在去打开刚刚下载好的natapp.exe 会提示这个错误是因为没有使用authtoken认证,那我们就复制自己隧道中的authtoken
输入指令开启隧道:natapp -authtoken=你自己的authtoken
回车显示开启了隧道
这里的Forwarding的网址后面要用到,先记下来。
现在隧道也开启了,我们可以拿支付宝提供的demo了
在https://opendocs.alipay.com/open/270/106291中下载
下载解压打开一看,就是个eclipse项目。没关系,我们打开idea,然后自己创建个webapp项目
名字任意
下一步下一步完成进入,在main文件夹下创建个Java文件夹,然后设置一下sources root,并在Java文件夹下创建个文件夹,名字随意。注意:在java文件夹下必须还要创建个文件夹,后面我们的Java文件必须要在文件夹中
看了看官方给的lib包下的jar包,我们可以直接添加依赖让maven管理,最重要的还是那个alipay.sdk,和我一样就行了
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.9.79.ALL</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
将官方给的demo里面的Java文件和jsp文件拷贝到我们的项目中,以下是目录
然后打开那个AlipayConfig.java文件,更改我们自己的配置
其中,RSA2私钥就是我们下载的开发平台助手生成的私钥,复制粘贴
支付宝公钥就是网页中的那个支付宝公钥,同样复制粘贴
配置好tomcat,我们打开试试
开启tomcat后,直接编译出错
碰到这个问题,这时因为eclipse项目到idea出现的问题
解决方法为:
右下角选择GBK转换一下
然后再转换回utf-8,同样操作,重启tomcat,就可以进入页面了,点击付款
是的,又报错了!
这里是说不能编译jsp文件,说明我们tomcat服务器有问题,跟着我,解决它!
打开项目配置,找到Modules的dependences 添加tomcat的包
然后点击ok,重启tomcat,发现还是500没变,这时,打开alipay.trade.page.pay.jsp查看。发现有很多地方报红
是因为在此jsp中用到我们那个AlipayConfig的Java文件,import导入一下就可以了,注意哈:其他的jsp也需要导入喔!
翻到下面发现那个out.println也报红
因为我们上面已经把tomcat添加了配置,所以,这里就是语法错误,改成 out.print()即可
重启tomcat,点击付款。
谢天谢地,世界还在!
可以选择登录账户付款,账户名和密码是给了的,在沙箱账号可以看到,复制买家账号和密码登录付款就行了
到这里,我们可以起身舒展一下了。
总结
- 根据项目需求,可以对此demo做需要的修改或添加功能等操作。
- 我做的就是使用idea实现这个沙箱环境模拟支付宝下单的功能demo,我这个源码其实也不需要贴,只要跟着我一步一步走就没什么问题,如果遇到其他问题可以评论区贴出来!