首先我们把准备工作做好,再进行支付宝接口的集成
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>
12345678910111213141516171819202.新建配置类(注意:将应用私钥,支付宝公钥,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"; }
1234567891011121314151617181920212223242526272829303.写测试接口
⑴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(); } } } 123456789101112131415
⑵service类
/** * 支付宝支付调用接口 * @param response * @param request * @throws IOException */ void aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException; } 在这里插入代码片 12345678910
⑶实现类
@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); } }
12345678910111213141516171819202122232425262728293031323334353637383940414243⑷这是我写的一个工具类,用于随机生成订单号。
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(); } }
12345678910111213141516173.运行项目,然后在浏览器输入http://localhost:项目端口/payment/pay,会跳转到下面页面
4.点击登录账户付款
(使用买家信息登录进行支付,支付前记得先回去充值),支付成功后卖家账户收到转账
啊终于写完了,一篇博客写了两个小时,累死宝宝了
相关知识
Springboot鲜花售卖管理系统593y6(程序+源码+数据库+调试部署+开发环境)
蚂蚁聚合支付系统源码完美版+附安装教程
【SpringBoot项目
【Java项目源码】鲜花销售系统.zip
对接支付宝、微信、第三方支付,超详细讲解+demo演示
【2024最新】springboot网上商城购物系统lw+ppt
java计算机毕业设计基于SpringBoot的疫苗接种管理系统(开题+程序+论文)
鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)
Springboot花店管理系统i6v19
Springboot生态农业信息管理系统81257(程序+源码+数据库+调试部署+开发环境)
网址: springboot项目集成支付宝接口超详细(附源码和沙箱测试) https://m.huajiangbk.com/newsview948962.html
上一篇: 支付接口的基本定义及thinkp |
下一篇: iOS开发教你怎么集成Apple |