
Springboot整合支付宝支付加内网穿透工具实现本地回调
发布日期:2021-05-09 02:25:48
浏览次数:19
分类:博客文章
本文共 3550 字,大约阅读时间需要 11 分钟。
项目中我们集成了支付宝,用户可以使用支付宝来进行支付
项目测试时,我们当然也需要一套测试环境对支付流程进行测试
如果我们使用线上的支付宝配置进行测试,那么我们必须使用真实货币进行支付
并且支付的金额会进入生产环境的支付宝绑定银行卡中,造成诸多不便
这里,支付宝为测试提供了一个沙箱环境,使我们可以使用虚拟货币进行支付测试
这篇文章就来详细说一下支付宝沙箱环境的配置和使用
首先创建支付宝配置文件类:
@Configuration @Data public class AliPayConfig { /** * 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 */ @Value("${sdk.alipay.appID}") private String appID; /** * 商户私钥,您的PKCS8格式RSA2私钥 */ @Value("${sdk.alipay.merchantPrivateKey}") private String merchantPrivateKey; /** * 支付宝公钥 */ @Value("${sdk.alipay.alipayPublicKey}") private String alipayPublicKey; /** * 签名方式 */ @Value("${sdk.alipay.signType}") private String signType; /** * 网关 */ @Value("${sdk.alipay.gatewayUrl}") private String gatewayUrl; /** * 编码 */ @Value("${sdk.alipay.charset}") private String charset; /** * 异步通知地址 */ @Value("${sdk.alipay.notifyUrl}") private String notifyUrl; /** * 类型 */ @Value("${sdk.alipay.format}") private String format; /** * 商户号 */ @Value("${sdk.alipay.sysServiceProviderId}") private String sysServiceProviderId;
登陆支付宝开放平台进行沙箱环境配置
注意:沙箱环境的支付宝网关、公钥私钥都和正式不同,现在做的是沙箱环境的模拟支付
生成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/ 下载密匙生成工具:https://docs.open.alipay.com/291/105971
然后生成密钥:
生成公钥 私钥以后把公钥上传到支付宝,在开发者配置中点击 RSA2(SHA256)密钥
如下图:
上传成功之后点击查看支付宝公钥,注意这里不要搞反了在配置文件中我们要的是支付宝给我们的公钥不是我们刚刚生成的公钥!
配置成功,现在配置项目
打开配置文件添加配置:
商户私钥就是刚刚生成的私钥 支付宝公钥不是我们生成的公钥,是支付宝给我们的公钥 切记 不然签名校验会不通过
添加生成支付代码,简单创建支付没有加参数和业务代码:
@Override public String payWithAliPay() throws AlipayApiException { /** * 业务代码 */ String order_no = UUID.randomUUID().toString(); //77777777 String body = ""; String total_fee = "999.99"; //真实金钱 AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getGatewayUrl(), aliPayConfig.getAppID(), aliPayConfig.getMerchantPrivateKey(), aliPayConfig.getFormat(), aliPayConfig.getCharset(), aliPayConfig.getAlipayPublicKey(), aliPayConfig.getSignType()); //获得初始化的AlipayClient AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类 JSONObject jsonObject = new JSONObject(); /** * 订单号 */ jsonObject.put("out_trade_no", order_no); /** * 支付金额 */ jsonObject.put("total_amount", total_fee); jsonObject.put("body", ""); /** * 订单主题 */ jsonObject.put("subject", "测试支付宝支付"); /** * 订单支付有效时间 */ jsonObject.put("timeout_express", "90m"); request.setBizContent(jsonObject.toString()); request.setNotifyUrl(aliPayConfig.getNotifyUrl()); AlipayTradePrecreateResponse response = alipayClient.execute(request); System.err.print(response.getBody()); //根据response中的结果继续业务逻辑处理 if (response.getMsg().equals("Success")) { String qrcode = response.getQrCode(); return qrcode; // return qrcode; } return "请求失败"; }
返回结果:
https://qr.alipay.com/bax06188ujygeuazvcah0008
生成二维码,这里就不使用代码生成了
下载沙箱支付宝进行扫描:
支付宝支付是需要回调的
推荐一个内网穿透工具Ngrok
使用方法:
把地址copy到项目的支付宝回调地址中即可
GIT地址:https://github.com/sunluomeng/springboot-alipay
有问题的话可以在公众号内留言,我会第一时间回复
或者回复“内网” 获得工具
长按识别二维码,了解更多
发表评论
最新留言
很好
[***.229.124.182]2025年04月23日 01时49分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java选择排序算法实现
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13
IDEA-@Slf4j和log标签&@Data(Lombok)无效
2019-03-13
Thymeleaf 生成下标,索引,使用Stat变量
2019-03-13
六、登录(二)
2019-03-13
初始微服务---Springcloud发展【第一期】
2019-03-13
RAFT 拜占庭将军 共识算法
2019-03-13
UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
2019-03-13
【Jquery】获取当前窗口的宽度值/高度值
2019-03-13
Android 架构组件 – 让天下没有难做的 App
2019-03-13
能解决数据可视化大屏需求的3款可视化工具
2019-03-13
Shell脚本防DNS攻击检测并删除肉机IP
2019-03-13