SpringBoot集成沙箱支付
2024-01-08 20:28:56
前言
支付宝沙箱支付(Alipay Sandbox Payment
)是支付宝提供的一个模拟支付环境,用于开发和测试支付宝支付功能的开发者工具。在真实的支付宝环境中进行支付开发和测试可能涉及真实资金和真实用户账户,而沙箱环境则提供了一个安全、隔离的环境,使开发者能够模拟支付过程,测试支付功能,而不会使用真实资金。
一.沙箱支付
1.准备工作
(1)进入支付宝开放平台
支付宝开放平台https://openhome.alipay.com/
(2)下载安装支付宝开放平台密钥工具
根据自己电脑系统下载对应版本
(3)生成密钥
(4)生成支付宝公钥
密钥生成完成后重新回到支付宝开放平台进入控制台
下滑找到沙箱
设置自定义密钥的公钥模式
将我们刚刚在工具中生成的应用公钥填写?
(4).配置沙箱账号
在沙箱账号中可以直接看到我们的商家信息和卖家信息,也可手动对其进行充值
?(5)下载沙箱支付宝
当前版本只支持安卓
到这里我们的准备工作就完成了,更详细参考快速接入 - 支付宝文档中心 (alipay.com)
二.SpringBoot集成
1.导入依赖
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.0.1</version>
</dependency>
2.配置?AlipayConfig
package com.yu.NewPowerCart.config;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import com.yu.NewPowerCart.pojo.Order;
import org.springframework.stereotype.Component;
@Component
public class AlipayConfig {
private Config aliconfig() {
Config config = new Config();
//沙箱支付宝地址
config.gatewayHost = "openapi-sandbox.dl.alipaydev.com";
//协议https
config.protocol = "https";
//应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
config.appId = "";
//支付宝公钥
config.alipayPublicKey = "";
//签名方式
config.signType = "RSA2";
//商户私钥(应用私钥),您的PKCS8格式RSA2私钥
config.merchantPrivateKey = "";
return config;
}
public String goAlipay(Order order) {
try {
// 1. 设置参数(全局只需设置一次)
Factory.setOptions(aliconfig());
// 2. 发起API调用(subject商品标题、outTradeNo订单编号、totalAmount总金额、returnUrl异步通知地址)
AlipayTradePagePayResponse response = Factory.Payment.Page()
.pay("商城项目收款",
order.getOid().toString(),
order.getTotal().toString(),
//支付成功之后的异步通知(跳出到自己系统的哪个位置)
"http://localhost:8080/order/payDone");
return response.body;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
?注:代码中空的地方需要填写自己的信息
查看地址:支付宝开放平台 (alipay.com)
?公钥在这里查看,注意:不是应用公钥是支付宝公钥!!!
商户私钥(应用私钥) 在我们的密钥生成工具中
3.编写对应Controller控制支付及跳转
@RequestMapping("/pay")
@ResponseBody
public String pay(User user, String oid){
//根据订单id获取订单
Order order = orderService.getById(oid);
//调用支付宝的支付功能
String body = new AlipayConfig().goAlipay(order);
System.out.println(body);
return body;
}
@RequestMapping("/payDone")
public String payDone(@RequestParam Map<String,String> ms) throws Exception {
//验签
Boolean f = Factory.Payment.Common().verifyNotify(ms);
if(!f){
throw new BusinessException(JsonResponseStatus.UN_KNOWN);
}
String oid = ms.get("out_trade_no");
//调用支付宝的支付功能
orderService.update(new UpdateWrapper<Order>()
.eq("oid",oid).set("status",1).set("pay_date",new Date()));
return "ok";
}
?
文章来源:https://blog.csdn.net/weixin_73320743/article/details/135385267
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!