一、引入依赖
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.3.87.ALL</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>commons-configuration</groupId> <artifactId>commons-configuration</artifactId> <version>1.10</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.11</version> </dependency> <!-- 二维码生成器工具包 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.3</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency>
二、下载Demo
1、拷贝Demo到项目中
(1)拷贝 TradePayDemo\src\com\alipay\demo\trade\ 目录下的文件到项目中;
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211215231507083-1575770149.png)
(2)拷贝 TradePayDemo\src\ 下的配置文件 zfbinfo.properties 到项目中的 resources 目录下;
(3)拷贝 TradePaySDK\src\com\alipay\demo\trade\ 目标下的文件到项目中;
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211215231623776-1558939549.png)
拷贝完成的项目目录结构:
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211215232144805-39067287.png)
注意:全局替换包路径方法:
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211215231801267-1172717249.png)
三、支付宝沙箱环境的说明及配置
参考资料:https://blog.csdn.net/qq_42941671/article/details/108395619
沙箱环境 (Beta) 是支付宝开放平台为您提供的与线上环境完全隔离的联调测试环境,在沙箱环境中完成的调用不会对线上数据造成任何影响,尤其适合涉及资金链路的能力的调试。
1、沙箱环境的登录
点击“沙箱环境”,使用支付宝登录;
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211216222944184-765846460.png)
2、沙箱环境的配置(zfbinfo.properties文件)
(1)支付宝网关名配置
open_api_domain 要修改为沙箱环境的支付宝网关名:https://openapi.alipaydev.com/gateway.do
(2)appId的配置
登录沙箱环境就可以看到应用的 appId 信息,将 appId 添加到 zfbinfo.properties 文件中;
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211215234737212-2069731534.png)
(3)pid 的配置
zfbinfo.properties 文件中的 pid 是账户ID,可以在右上角的 “账户中心” 中查看到 “账号ID” ;
(4)公钥私钥对的生成和配置
a. 密钥工具并安装:
下载地址:https://opendocs.alipay.com/common/02kipl
![](https://img2020.cnblogs.com/blog/1107037/202112/1107037-20211216224324347-2079295062.png)
b. 打开安装的工具,并点击 “生成密钥”,就会生成对应的 ”应用私钥“ 和 ”应用公钥“;
c. 复制 “私钥”配置为 private_key 的值;复制 ”公钥“ 配置为 public_key 的值;
(5)支付宝公钥的获取和配置
a. 在沙箱环境中的 ”开发信息“ 中选择 “自定义密钥”,并点击 ”设置并启用“;
b. 拷贝我们在(4)中使用工具生成的公钥,填写到填写的公钥字符位置,点击 “保存设置” 生成对应的支付宝公钥;
c. 将生成的支付包的公钥,配置为 alipay_public_key 的值;
四、业务代码
下支付宝订单,根据 response 信息生成二维码;1、生成二维码
(1)当面付的 Demo 代码中,Main.java 的 test_trade_precreate() 方法 为生成支付二维码的方法,将方法的内容拷贝到 Service 的方法中;
(2)Main.java 的静态代码块内容,拷贝到 Service 的初始化方法中;
资源路径的映射配置
@Configuration public class ResourceConfig implements WebMvcConfigurer { @Autowired private TradePayProp tradePayProp; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { String os = System.getProperty("os.name"); //windows系统 if(os.toLowerCase().startsWith("win")){ /** 支付码图片QrCode图片存储路径 */ // 将 "D:/code/temp/qr-code/**" 路径映射为 "/static/qrcode/" 路径 // 可以使用 http://localhost:8088/static/qrcode/qr-20211217215530.png 访问二维码 registry.addResourceHandler(tradePayProp.getHttpBasePath() +"/**") .addResourceLocations("file:" + tradePayProp.getStorePath() + "/"); } else{ //linux或者mac registry.addResourceHandler("/static/resources/**") .addResourceLocations("file:/usr/local/resources/"); //静态资源 } } }
代码地址:https://gitee.com/feng_218/alipay-demo/tree/master/src/main