springboot整合支付宝沙箱支付

springboot整合支付宝沙箱支付文章目录一 登录支付宝开放平台二 开始整合 springboot2 1 创建一个 boot 的项目 2 2 配置 yml 配置文件 2 3 开始写代码了 2 4 html 代码三 运行代码一 登录支付宝开放平台支付宝开放平台用支付宝扫码登录开放平台登录进来之后是这样的 1 1 点进入管理中心 1 2 点击沙箱进入沙箱之后就可以看到沙箱给我们准备好的的支付环境信息 1 3 配置之定义秘钥生成密钥这里要记住这里生成的秘钥等下写代码还要用的 如果忘了也没关系点这里就有了到这里我们所需要的基本配值就

一、登录支付宝开放平台

在这里插入图片描述
这里要记住这里生成的秘钥等下写代码还要用的,如果忘了也没关系点这里就有了
在这里插入图片描述
在这里插入图片描述
到这里我们所需要的基本配值就配好了








二.开始整合springboot

2.1.创建一个boot的项目

在这里插入图片描述

  
    <dependencies> <dependency> <groupId>org.springframework.boot 
     groupId> <artifactId>spring-boot-starter-thymeleaf 
      artifactId>  
       dependency> <dependency> <groupId>org.springframework.boot 
        groupId> <artifactId>spring-boot-starter-web 
         artifactId>  
          dependency> <dependency> <groupId>com.alipay.sdk 
           groupId> <artifactId>alipay-sdk-java 
            artifactId> <version>4.22.49.ALL 
             version>  
              dependency> <dependency> <groupId>org.springframework.boot 
               groupId> <artifactId>spring-boot-starter-test 
                artifactId> <scope>test 
                 scope>  
                  dependency>  
                   dependencies> 

2.2.配置yml配置文件

server: port: 8800 spring: thymeleaf: cache: false suffix: .html
    prefix: classpath:/templates/ alipay: url: https://openapi.alipaydev.com/gateway.do #此处请填写你当面付的APPID appid: 74366 #此处请填写你的应用私钥且转PKCS8格式 privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEnWye3jI2equTliM79t5lvT5lW3Lci8byiXS9r0O9lGHXYA/jyxr639Ui/Ub2iBvXBvBoEluPnFC1dPMCvIAhf2dJCtGTEXPWOkl1rd9plr57Zmo2w7QyQPyZle0wLmQdGlGXu4AQB8iyEvJTm9RmF55evFLWVQVNaV9I0p7uRKsUET8SMT7wV0f1TpXfjiSZ9AjX1JAD7rV+ue8Z6wOiEi4vjT8DBS6Z7bLeskEWQosL15cXwemHbA5uPkKw8ggYcKWbzP+4upJZXlnEEZubWTlxRWx7ByzHcyywog+6KXlLECJBu2ZDdPm+dYufP9AccSpPhQZ1iASJ3MdC+2PbAgMBAAECggEAXz+uh4Cx8f0zhMJeNjB+1fYRfb0sB4oBb6wYhDEA54ZOq+GcKBF2JGBl9kaSFHn3/P5H54ff6YrtURdZf0qigOy/4294zTfIykJ9Bp/GilEyKPGLMiBoKXwRscJEZMm9MEX5+pA6T8k3decz06dl65nlLsf2e2j/cPVQ8b4NVrZBKak/L3BQgAA6oB89MabNUtFUeO0bvyS/2E1hx7Ip9jYltwqNKkO+/T5Y0SRQVu2tD4Wf6HaIxOwdsV0iupOdmr9d2RniiQkS+tq90+okyL1FciCZ3yikFsMDadF3jl8qUTuvgGmvDDPdICUN+vd+QeSV7MN5ihBro+8avw79oQKBgQDZCeeT0xienqshGKptux2tWltJ2oj99O5/4UuoXt1pfH2fxS4rF49J+q2yUX0erX+HtGhye2thIpxyo+4hLYJkg04Ph2wDPuid2JhoSeq/mwN9sZQMwGMtNEu2CT5hXUxXYgJUsQtK3KRUs1oRedIEBdvFoDJ85r+RUP3iFRNFcQKBgQCca8tOA66qnjYU/R8KQ2gcvc546s5nMhfmZs3nEiLdC32jc3Jr+LnJfS5LNFniw/eF0VeIICaZ6LVWOP6npD1kDs1RFqi5JuZo2IVfYdHW6VLrrrEKzSJtjwumMUsNTtZKVbM7FB7H2cps7NnLdm4+WQiMmtzvgxEK+yB0noCwKBgH/4eRUOWOvd/mUrWAIPXDZEmqL3OeMTsjSwsJ18Iez6vE+iQdCiuZgTOKt1pOKbxiBL3XHzF6NUdw6ZXeUuIj4FtdcuMB/RzfKULXkAbGvBiNNqCzNhlJioxyN0W9Wo30R+w4UQRupDIpnWjnrTa2N32Nez11ER9U5HhQrzBkPhAoGATHeNzbeTHal2OtB66iOFs/c+BnKTMHOWp3W+VqXREUpawxre5tWSzWM6zFztTCQMzwhFyDAfbsIKU/pM01tA/7cUu/1dwhW4Ma0XlkdVs8AgX0LpHaSmnfROkVKsuSKxFNRM2cbtcpLP3VLWakGgjtX+FagpH6S8RBAqM9fIU30CgYEAjQ1f0V6ZU7OP0d9ZL9ZxNLwu8q8FzSCgarpwCmo7mXKhDVU6PENK7u6OgBekJyYsHpBH14urtKp+S/VP7KrOWlPxW2cIm+CWJdBMMLEbBd8BjgNPwW6mT5hpGexcmDS8Lrw7bIs5JaFTAxmNk1S75aB4VFGwK9jv9on8uAEoqW0= #此处请填写你的应用公钥 publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlaXJhOzn/mLe1OzK+p3R52r1/f7aNAGdyPpDBgb5tq9BeKCSpOpPK9GwGngyrwFxEJIX/77MlHn6Kis36gJBvzSxo6fejLyiwSMZFNRl+wGp/HnhDRbfUcrAxCppkpKp9KwP8lbwabGYIIJLK26l9s3Rw9FXf++/h94g2HgvfE1DaSgCNcG9T7bVZXD76pqvD8gxvtXe5MvYFbiTcP6WAUP/W5hNB+roZ9ZmgyK/8HBLljpnB9WVrjg1d/6TSWgCuu6k6aDlkZLQGibxUNb9RyXIYVXQYkagMYkzd8TUvBwaBq04y3yV2orpb2Y7HVSEjSsvid9JTpswzAuWl4rU1wIDAQAB #异步通知url(注意拦截器是否拦截) notifyUrl: http://localhost:8800/notify #支付成功后返回的页面地址 returnUrl: http://localhost:8800/return 

2.3.开始写代码了

package com.mumuwei.alipay.controller; import com.mumuwei.alipay.util.AlipayUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class AlipayController { 
    private AlipayUtil alipayUtil; @Autowired public void setAlipayUtil(AlipayUtil alipayUtil) { 
    this.alipayUtil = alipayUtil; } @GetMapping("/") public String index(){ 
    return "index"; } @PostMapping("/create") public String create(String id, String price, String title, Model model){ 
    String pay = alipayUtil.pay(id, price, title); model.addAttribute("form", pay); return "pay"; } @GetMapping("/return") public String returnNotice(String out_trade_no, Model model){ 
    String query = alipayUtil.query(out_trade_no); model.addAttribute("query", query); return "query"; } @PostMapping("/notify") public void notifyUrl(String trade_no, String total_amount, String trade_status){ 
    System.err.println("支付宝订单编号:" + trade_no + ", 订单金额: " + total_amount + ",订单状态:" + trade_status); } } 
package com.mumuwei.alipay.util; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.request.AlipayTradeQueryRequest; import com.alipay.api.response.AlipayTradePagePayResponse; import com.alipay.api.response.AlipayTradeQueryResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class AlipayUtil { 
    @Value("${alipay.appid}") private String appid; @Value("${alipay.url}") private String url; @Value("${alipay.privateKey}") private String privateKey; @Value("${alipay.publicKey}") private String publicKey; @Value("${alipay.notifyUrl}") private String notifyUrl; @Value("${alipay.returnUrl}") private String returnUrl; public String pay(String id, String price, String title ){ 
    AlipayClient alipayClient = new DefaultAlipayClient(url,appid,privateKey,"json","UTf-8",publicKey,"RSA2"); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); request.setNotifyUrl(notifyUrl); request.setReturnUrl(returnUrl); JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", id); bizContent.put("total_amount", price); bizContent.put("subject", title); bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); request.setBizContent(bizContent.toString()); AlipayTradePagePayResponse response = null; String form = null; try { 
    response = alipayClient.pageExecute(request); form = response.getBody(); } catch (AlipayApiException e) { 
    e.printStackTrace(); } if(response.isSuccess()){ 
    System.out.println("调用成功"); } else { 
    System.out.println("调用失败"); } return form; } public String query(String id){ 
    AlipayClient alipayClient = new DefaultAlipayClient(url,appid,privateKey,"json","UTf-8",publicKey,"RSA2"); AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", id); request.setBizContent(bizContent.toString()); AlipayTradeQueryResponse response = null; String body = null; try { 
    response = alipayClient.execute(request); body = response.getBody(); } catch (AlipayApiException e) { 
    e.printStackTrace(); } if(response.isSuccess()){ 
    System.out.println("调用成功"); } else { 
    System.out.println("调用失败"); } return body; } } 
package com.mumuwei.alipay; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class AlipayApplication { 
    public static void main(String[] args) { 
    SpringApplication.run(AlipayApplication.class, args); } } 

2.4.html代码

index.html
 
    DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title 
      title>  
       head> <body> <h1>支付宝沙箱支付 
        h1> <form action="create" method="post"> 订单编号: <input type="text" name="id"> <br> 订单金额:<input type="text" name="price"> <br> 订单标题:<input type="text" name="title"> <br> <input type="submit" value="创建订单">  
         form>  
          body>  
           html> 
notify.html
 
    DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title 
      title>  
       head> <body> <h1>支付宝沙箱支付异步通知 
        h1>  
         body>  
          html> 
pay.html
 
    DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title 
      title>  
       head> <body> <div th:utext="${form}"> 
        div>  
         body>  
          html> 
query.html
 
    DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title 
      title>  
       head> <body> <div th:text="${query}"> 
        div>  
         body>  
          html> 

三.运行代码

在这里插入图片描述
到这里我们boot整合沙盒支付就完成了,如果有小伙伴对上面的参数该兴趣的话看这里
支付宝开放平台
这里官网有详细的解释,还有demo实例
https://opendocs.alipay.com/open/270/106291
在这里插入图片描述
我已经把代码上到gitee上了
记得关注我后面我会出一个整合沙箱支付的项目
gitee的下载地址
















版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228493.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:53
下一篇 2026年3月16日 下午6:54


相关推荐

  • 揭秘LangChain AI模型:性能对比,谁才是AI语言处理的佼佼者?

    揭秘LangChain AI模型:性能对比,谁才是AI语言处理的佼佼者?

    2026年3月13日
    1
  • 翻译器DIY————次序

    翻译器DIY————次序

    2022年1月12日
    48
  • 怎样更新pip(怎么升级python的pip)

    在Python的環境中,許多人都習慣使用PIP指令來管理模組的安裝、更新與移除的動作。但是最近我一直遇到一個問題,就是下完PIP指令執行完後都會在最後出現要求更新PIP版本的訊息,例如:WARNING:Youareusingpipversion19.2.1,howeverversion19.2.3isavailable.Youshouldconsider…

    2022年4月16日
    64
  • WdatePicker小结

    WdatePicker小结转载自博客园 nbsp donglf 的博客 原博客链接 nbsp https www cnblogs com donglf p 5868999 htmlWdatePic js 日期插件 1 y nbsp nbsp 当前年 nbsp M nbsp nbsp 当前月 nbsp d nbsp nbsp 当前日 nbsp ld 本月最后一天 nbsp H nbsp nbsp 当前时 nbsp m nbsp nbsp 当前分 nbsp s nbsp nbsp 当前秒 2 可以通过配置 minDate 最小日期 和 max

    2026年3月17日
    2
  • AUC计算方法总结

    AUC计算方法总结1 nbsp 最直观的 根据 AUC 这个名称 我们知道 计算出 ROC 曲线下面的面积 就是 AUC 的值 事实上 这也是在早期 MachineLearn 文献中常见的 AUC 计算方法 由于我们的测试样本是有限的 我们得到的 AUC 曲线必然是一个阶梯状的 因此 计算的 AUC 也就是这些阶梯下面的面积之和 这样 我们先把 score 排序 假设 score 越大 此样本属于正类的概率越大 然后一边扫描就可以得到我们想要

    2026年3月26日
    2
  • VMware虚拟机三种联网方式(图文详细解说)

    VMware三种网络模式联网首先说一下VMware的几个虚拟设备安装了VMware虚拟机后,会在网络连接对话框中多出两个虚拟网卡,如图:VMnet0:用于虚拟桥接网络下的虚拟交换机VMnet1:用于虚拟Host-Only网络下的虚拟交换机VMnet8:用于虚拟NAT网络下的虚拟交换机VMwareNetworkAdepterVMnet1:Host用于与Host-Onl…

    2022年4月3日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号