支付宝沙箱版+springboot+html
支付宝网站支付
支付宝扫码支付如今已经成为一种潮流,本案例讲解如何进行在网站点击付款按钮后生成付款二维码,之后利用沙箱版支付宝(测试版)扫描生成的二维码进行付款,付款成功之后跳转到付款成功页面。
1.首先百度支付宝开放平台,点击进去之后使用真实支付宝扫码登录,如果没有入驻首先入驻支付宝(注册为支付宝用户),之后点击进入我的开放平台
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4a8ebc1493794ba872922e20ba9d346f.png)
在我的开放平台里面,点击网页&移动应用列表即可看见之前申请好的应用,点击查看详情
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/96096fb08229de855d0a9d7b3c122aba.png)
在下面的功能列表中找到电脑网站支付,如果没有电脑网站支付需要自己添加电脑网站支付功能。之后点击进去,点击下载电脑网站支付SDK&DEMO
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e7845975bce13b3f48465975fab69f2.png)
选择java版本 下载下来之后解压,找到AlipayConfig.java文件,配置其中参数。
app_id:沙箱版appid;
merchant_private_key:支付宝工具生成的密匙
alipay_public_key: 注意是支付宝公钥 不是应用公钥。下图箭头这个。
notify_url、return_url 中 工程公网访问地址 修改为 localhost:8080(自己的端口号)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ed1f355745a08c1b3000eb23ca528e66.png)
gatewayUrl: https://openapi.alipaydev.com/gateway.do (因为是沙箱版 所以网关需要修改为测试网关)
其他不需要修改 默认值就可以
注:这三个(支付宝公钥,应用公钥,应用密匙)需要为统一的一套,如果修改了其中一个其他两个也需要一起修改,否则会报Appid 无效错误。
将此文件放入之前搭建好的Springboot项目中,再新建一个AlipayController
添加生成二维码方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/efabb16f897488af6f6ad466caad4484.png)
方法源码请访问 https://docs.open.alipay.com/270/105899/ 快速接入
修改此方法中APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE 为AlipayConfig.java中对应的参数,其中format 固定为JSON
代码解释:
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
setReturnUrl 为支付成功后的最终回调页面
setNotifyUrl 不需要修改 消息通知页面,付款成功页面 五秒后自动跳转。
BizContent 为生成二维码的参数 需要json形式的string字符串
下面为拼接此String类型的json串:
新建两个用于拼接json字符串的类
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7b00e0ec47bf27922e49cb2d0c1202ea.png)
引入 fastjson 依赖 用于将字符串转换成String类型的json
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
Out_trade_no(System.currentTimeMillis() 交易编号 每次都不同,如果相同会报此订单已经支付成功错误,目前用精确到毫秒的时间作为tradeNo
Product_code(“FAST_INSTANT_TRADE_PAY”); 固定写死就可以 “快速交易”
Total_amount(amount); 传递的金额 用于生成二维码的金额 方法头传值
Subject(orderMessage); 购买商品描述 购买东西商品的描述 方法头传参
Sys_service_provider_id(“2088511833207846”); 设备id 固定就可以 暂时还没弄清楚怎么修改 暂时先用这个 2088511833207846
String bizContent =JSONObject.toJSONString(alipayMessage);将对象信息转换为String类型json字符串
alipayRequest.setBizContent(bizContent);//填充业务参数
将json类型字符串 set到bizContent中用于生成二维码
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
生成完整的表单到html页面
导入jar包
在项目上右键 选择build path configure build path
将之前下载demo中的(路径:alipay.trade.page.pay-JAVA-UTF-8\WebContent\WEB-INF\lib)三个jar包导入其中。
如果是idea:选择file-> project Structure 选择modules -> Dependencies 选择绿色加号 -> Jars or Directories 选择导入的jar包,Apply即可。
构建完成。
测试:
启动springboot项目 访问
http://localhost:8080/common?amount=80.08&orderMessage=hhhhhh 可以看到出现二维码页面
用沙箱版支付宝扫码付款 支付成功。
注: 此文档为本人学习所用,如有错误之处,还请指正。