支付宝开放平台沙箱Spring boot项目对接

开放平台沙箱对接的实现

首先简单的看一下项目文件结构,可以随便放,不用按照这个格式来进行。

接下来就是文件中的代码了

1,在pom.xml文件中导入jar包

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>com.alipay.sdk</groupId>
      <artifactId>alipay-sdk-java</artifactId>
      <version>4.9.79.ALL</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.30</version>
    </dependency>
  </dependencies>

2,Alipay

@Data
@Configuration
public class Alipay {
    private final String format = "json";
    private String appId="你的APPID";
    private String privateKey="应用私钥";
    
    private String publicKey="应用公钥";
    private String notifyUrl="服务器异步通知页面路径,和returnUrl格式相同,必须是http://格式的完整路径,不能带有?id=1&name=aaa这种格式的参数";
    private String returnUrl="支付成功后需要跳转的页面";
    private String signType="支付宝开放平台密钥工具的加密方式 如:RSA2";
    private String charset="utf-8";
    private String gatewayUrl="支付宝网关";
    
    //第三方接口方法实现
    public String pay(AliPayBean aliPayBean) throws AlipayApiException {
        AlipayClient alipayClient = new DefaultAlipayClient(
                gatewayUrl, appId, privateKey, format, charset, publicKey, signType);
        
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(returnUrl);
        alipayRequest.setNotifyUrl(notifyUrl);
        alipayRequest.setBizContent(JSON.toJSONString(aliPayBean));
        
        String result = alipayClient.pageExecute(alipayRequest).getBody();
        System.out.println(result);
        return result;
    }
}

3,AliPayBean

@Data
public class AliPayBean {
    //订单编号
    private String out_trade_no;
    //订单名称
    private String subject;
    //订单金额
    private String total_amount;
    //订单详情
    private String body;
    //超时参数
    private String timeout_express = "60m";
    //编号
    private String product_code = "FAST_INSTANT_TRADE_PAY";
}

4,PayService

public interface PayService {
    String aliPay(AliPayBean aliPayBean) throws AlipayApiException;
}

5,PayServiceImpl

@Service
public class PayServiceImpl implements PayService {
    
    @Resource
    private Alipay alipay;
    
    @Override
    public String aliPay(AliPayBean aliPayBean) throws AlipayApiException {
        return alipay.pay(aliPayBean);
    }
    
}

6,AliPayController

@RestController
@RequestMapping("alipay")
public class AliPayController {
    
    @Autowired
    private PayService payService;
    
    @RequestMapping("/pay")
    @ResponseBody
    public String alipay(AliPayBean aliPayBean) throws AlipayApiException {
        return payService.aliPay(aliPayBean);
    }
}

7,App

@SpringBootApplication
//避免因漏配置导致的错误。
@ComponentScan("org.example.Alipay.*")
public class App {
    public static void main( String[] args ) {
        SpringApplication.run(App.class,args);
    }
}

8,html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>支付宝体验页</title>
  <script src="js/vue.js"></script>
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <style>
    .aaa{
      width: 500px;
      height: 500px;
      border-radius: 30px;
      padding: 20px;
      margin: 0 auto;
      margin-top: 120px;
      margin-left: 160px;
      background-color: #FFFFFF;

    }
  </style>
</head>
<body>
<div id="app" class="aaa">
  <el-tabs value="1">
    <el-tab-pane label="付款" name="1">
      <el-form :model="form" method="post" id="forms"  target="_blank" action="/alipay/pay" label-width="80px">
        <el-form-item label="订单编号">
          <el-input id="WIDout_trade_no"  name="out_trade_no" v-model="form.mid"></el-input>
        </el-form-item>
        <el-form-item label="订单名称">
          <el-input id="WIDsubject"  name="subject"  v-model="form.mname"></el-input>
        </el-form-item>
        <el-form-item label="付款金额">
          <el-input id="WIDtotal_amount"  name="total_amount" v-model="form.mmoney"></el-input>
        </el-form-item>
        <el-form-item label="订单详情号">
          <el-input id="WIDbody" name="body"   v-model="form.mm"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button  @click="onClose(form.mmoney)">确认付款</el-button>
          <el-button type="danger" @click="cancellation(form.mid)">取消付款</el-button>
        </el-form-item>
        <span>温馨提示:付款前请先核实单号信息,如有疑问请取消付款</span><br>
        <span>温馨提示:付款完成后请等待自动跳转,以防数据传输出错造成个人财产损失</span>
      </el-form>
    </el-tab-pane>
  </el-tabs>
</div>
<script>
  var app = new Vue({
    el: '#app',
    data:function () {
      return {
        form: {
          mid:'02',
          mname:'aaa',
          mmoney:'28',
          mm:'192003',
        },
      };
    },
    methods: {
      onClose:function (money){
          console.log(app.form);
            document.getElementById("forms").submit();
      },
      getDateNow() {
        const now = new Date();
        let sNow = '';
        sNow += String(now.getFullYear());
        sNow += String(now.getMonth() + 1).padStart(2, '0');
        sNow += String(now.getDate()).padStart(2, '0');
        sNow += String(now.getHours()).padStart(2, '0');
        sNow += String(now.getMinutes()).padStart(2, '0');
        sNow += String(now.getSeconds()).padStart(2, '0');
        sNow += String(now.getMilliseconds()).padStart(3, '0');
      },
    },
    mounted() {
      this.getDateNow();
    },
  });
</script>
</body>
</html>

接下来就是获取添加AliPayBean中的数据了

1,首先访问支付宝开放平台

网址如下:https://open.alipay.com/

2,登录账号,支付宝扫码登录即可

3,登录成功后点击控制台

4,进入控制台界面滑动到页面底部,点击沙箱

进入后滑动到页面底部随便点击一个调试,进入文档中心

这里根据电脑的操作系统选择要下载的内容

5,下载完成后打开密钥工具直接生成密钥即可

加密算法就是AliPay中的signType的值

6,生成密钥后点击打开文件位置找到应用公钥私钥的存放位置

这里的应用公钥和私钥需要粘贴到AliPay中对应的位置

7,打开应用公钥文件,复制里面的内容

点击查看后将公钥粘贴进去,支付宝公钥会自动生成,然后保存确定即可

这两个后面的数据也需要粘贴在AliPay中

修改完成后既可以试试是否能使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值