springboot整合支付宝沙箱支付

springboot整合支付宝沙箱支付,第1张

文章目录
  • 一、登录支付宝开放平台
    • 二.开始整合springboot
      • 2.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.bootgroupId>
            <artifactId>spring-boot-starter-thymeleafartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>com.alipay.sdkgroupId>
            <artifactId>alipay-sdk-javaartifactId>
            <version>4.22.49.ALLversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        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: 2021000119674366
  #此处请填写你的应用私钥且转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/eF0VeIICaZ6LVWOP6npD1kDs1RFqi5JuZo2IVfYdHW6VLrrrEKzSJtjqqwumMUsNTtZKVbM7FB7H2cps7NnLdm4+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>Titletitle>
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>Titletitle>
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>Titletitle>
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>Titletitle>
head>
<body>
    <div th:text="${query}">div>
body>
html>
三.运行代码

我这里运行正常





然后进入·这个网站解析饭后来的json数据
添加链接描述


到这里我们boot整合沙盒支付就完成了,如果有小伙伴对上面的参数该兴趣的话看这里
支付宝开放平台
这里官网有详细的解释,还有demo实例
https://opendocs.alipay.com/open/270/106291

我已经把代码上到gitee上了
记得关注我后面我会出一个整合沙箱支付的项目
gitee的下载地址

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/722765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存