首先我们把准备工作做好,再进行支付宝接口的集成
1.获取沙箱账号
获取沙箱账号
点击链接出现下图页面
使用自己支付宝扫码登录
2.登录后进入下图页面
3.向下拉到下图页面
4.点击开发服务下的沙箱进入下图页面,点击红色标注处(密钥之后会使用,现在先取到)
5.下载支付宝获取密钥的工具,根据自己系统选择下载,我下载的Windows版本
6.下载完成后打开如下图,点击红圈标注部分得到应用私钥和应用公钥(应用私钥和应用公钥之后会用到)
7.回归到第四步的页面,点击红圈标注部分
8.进入如下页面(APPID和支付宝网关之后会用到),点击红圈标注处
9.按下图标注内容进行配置
10.点击保存设置后进入如下页面(支付宝公钥之后会用到)
以上十步需要整理的东西有:应用私钥,支付宝公钥,APPID和支付宝网关(注意:应用公钥不需要了),因为这些东西是往springboot项目集成是需要的。
此处插播一条
上述第九步点击下图红圈标注部分(卖家和买家信息之后会用到),还可以点击沙箱工具扫码在手机上下载一个沙箱版钱包,使用卖家账户登录
接下来将支付宝接口集成到项目中:
1.首先倒maven依赖
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.140.ALL</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
2.新建配置类(注意:将应用私钥,支付宝公钥,APPID和支付宝网关换成自己的)
public class AliPayConfig {
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// netapp映射的地址,,,根据自己的需要修改
// private static String neturl = "http://6dynnj.natappfree.cc";
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 按照我文章图上的信息填写
public static String app_id = "2021000117631591";
// 商户私钥,您的PKCS8格式RSA2私钥 刚刚生成的私钥直接复制填写
public static String merchant_private_key ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEeDgzdsHpzcRgQZJB1BXpdQLHmoSx2Pefzoh/75JdaVi+kg44PSbcdfDW0in8/PAnXCqnKzBZpC7I8n+CMuHaa0l8FPVWED5xMn/8EK66pOKYnrjbdcRCRKPykkmdLfCitpSapRgR0wHDq4VrEPKWmN+uXD08Vw/nhYkE9aaWHJkhqWFiwKGdtP3zvJ6x7zblaGUIRqU7LKqN6stJM7m6KpVQesg3PU3PGH0euax/ICmcdjVr8YEYBcS7ocfBe4KXiPPX/KHs0TtRao0gPwmL6saIiLiaIAScV8WFueu/nN9zWxkZvId2Z7iZSiKyQ8IRfxbSt0bapqeUYgpLPqQHAgMBAAECggEAGP1AxNyTShLKB8p217o1g/vR0WuhupcOZ3QjpdbAyqRT3GdbDVrj2NTa4Pt2dkYU26f0V+K61T42oSu1yA7nMjfo/eJKQbkAvoPjRt6yx3zRTi8q+iNmKYYfU2QrRN5ktZ0xvVaFit8+RvY1TfQ9fxFJqO+3kYlu86LqLShWC50FiQMoLw6l54XAawMVpHnSsXAskV/oWJmib0yyHvOYk5jB8E34IwS/lZeHUFVyJMNCh26GZL7HIKltYH0ZpwIoJiflZb7e0yCMXbTrcLIdrTw9ExAdlcSyjExVH/aTFWLBi1/I+6GdtLaeR+SdiRMMEkftoLW7Alo6xARA3ulGKQKBgQDOrhjdyNqcCwH32voKLc+oVj2Ql1aOP+aw+lrs/QMKD9vChhXIkUYDD2v2Ht97/1M7f+I/XvEHU2+sp9Ozsu2Z0qaJAWWl3B/FrA363sTRs0cMkr5M1JqZhuv55HyWIn0x+EbuKGcfE9E+mZm21Wj1lgkXWbZay4X1bcegzb1XnQKBgQCkFKvCpj5L2VEvSajT7gzle0qYHEcrE9UJ2nsHSLJSSyxbH7WE0J/quTtTDG0oUM7e22Qxnnw+ZFmBNVHVb9GeIn/nJkO7G4kx7c8uZOU+oX+rUGZ/HUAq7wMc8J2UULKdmIm2tLuRoGQt88jopjJtc4e5mB5k10v93vo5t0ZC8wKBgQDNTHxg2eHk/L4wwLB8qfLK6RdwaBPPa0Qw6g6lt9FsDkKiIGTE/SEJayk3qoUd+4pm4OoRPrK3LzcPzwloR8Tidi98igm5TkW1KeodF2l0T9u0bpNfaBRFipMef8sNqyanG1MBwNpmMV45C4R369a9lBJlwnR0DhR7rVeNsLBytQKBgHYS7fs32JKKgzKNRjGkF6G4FFjb2Jb2QZNCps/6D2DK+dNlQSGfY8TsoPVFdvPRGt0icbqHOw9G9WXWsdnvCqBKYVI8pfbqfNLyN+pB7vogC5iDVg7ZRMjgkJPtzufhHnfsQgW5j1TfX9f1m7lXh+hdf+kdv5l/mQ7Ku7R239fjAoGAeUSPvooU9wBf6x7ObYSrHXUw6AofpFU4vF3YVPZbtxtagvVvmtb7rB5jlDqm2ZHyOkPD33vnNVOzfbUoKWrjhMBH84NT2ymZzPzqTBeGKYuImPKnxdpz4Zw0e32AyPB0loBgutmaOsTbrX472SOEoYz6tW4BUMZCKhN0aouYZcA=";
// 支付宝公钥,对应APPID下的支付宝公钥。 按照我文章图上的信息填写支付宝公钥,别填成商户公钥
public static String alipay_public_key ="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhru+uX7u/BKCYg2otmGTCopdq6bot2VI5y7mB9V9D5dn0AvT7nc+AP67qCwrRhRkOqDCgxTqwYkfhE2qc2wV6jMSyVfdnIlHBYMadk0EbPTZjXVVQ8HAymCDIreylDOyAupjfWoF6wG4b7e7y3sdA6G/OVIieqMQUz9hTrDYevx+Jc4EOCbWuKxTlZ67OiWCv0cq0c+ABSOSHXGTac8LGyQLNJmsYfau7uPeqBvy7Uueon5HayM5T93NWe9wgx5yEQuZ6D/BWL7q8V5b5XYuQyl2pYiIlW5A1iKSQ2L1PnukD5lcHma8Xrvp8nNpF1a3z5CPeCitreWki/yvUw37zwIDAQAB";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,其实就是你的一个支付完成后返回的页面URL
// public static String notify_url = neturl+"/alipay/notify_url";
public static String notify_url ="http://www.baidu.com";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,其实就是你的一个支付完成后返回的页面URL
// public static String return_url = neturl+"/alipay/return_url";
public static String return_url ="http://www.baidu.com";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
}
3.写测试接口
⑴controller类
@RestController
@RequestMapping("/payment")
public class PaymentController {
@Autowired
AliPayService alipayService;
@RequestMapping("/pay")
public void payMent(HttpServletResponse response, HttpServletRequest request) {
try {
alipayService.aliPay(response, request);
} catch (IOException e) {
e.printStackTrace();
}
}
}
⑵service类
/**
* 支付宝支付调用接口
* @param response
* @param request
* @throws IOException
*/
void aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException;
}
在这里插入代码片
⑶实现类
@Service
@Slf4j
public class AlipayServiceImpl implements AliPayService{
@Override
public void aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfig.gatewayUrl, AliPayConfig.app_id, AliPayConfig.merchant_private_key, "json", AliPayConfig.charset, AliPayConfig.alipay_public_key, AliPayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequest aliPayRequest = new AlipayTradePagePayRequest();
//aliPayRequest.setReturnUrl(AlipayConfig.return_url);
//aliPayRequest.setNotifyUrl(AlipayConfig.notify_url);
//商户订单号,后台可以写一个工具类生成一个订单号,必填
String order_number = new String(StringUtils.getStr());
//付款金额,从前台获取,必填
String total_amount = new String("201314");
//订单名称,必填
String subject = new String("臭猪张云婷");
aliPayRequest.setBizContent("{\"out_trade_no\":\"" + order_number + "\","
+ "\"total_amount\":\"" + total_amount + "\","
+ "\"subject\":\"" + subject + "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result = null;
try {
result = alipayClient.pageExecute(aliPayRequest).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
//输出
out.println(result);
log.info("返回结果={}",result);
}
}
⑷这是我写的一个工具类,用于随机生成订单号。
public class StringUtils {
public static String getStr(){
int length=5;
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);
//charAt() 方法用于返回指定索引处的字符
sb.append(str.charAt(number));
}
return sb.toString();
}
}
3.运行项目,然后在浏览器输入http://localhost:项目端口/payment/pay,会跳转到下面页面
4.点击登录账户付款
(使用买家信息登录进行支付,支付前记得先回去充值),支付成功后卖家账户收到转账
啊终于写完了,一篇博客写了两个小时,累死宝宝了
版权声明:本文为qq_44239079原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。