springboot+沙箱支付宝

springboot+沙箱支付宝

pom依赖

  <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.10.70.ALL</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.7</version>
        </dependency>

        <!--slf4j-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

Aliconfig

商户私钥:生成的私钥

应用id,沙箱账号的id

支付宝公钥:沙箱的支付宝公钥:不是应用公钥

通知路径:支付成功发送位置

页面跳转同步通知路径,支付成功后页面跳转,回调路径

package com.example.demo.config;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.FileWriter;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.UUID;

public class AliPayConfig {
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
    public static String app_id = "2021000117698375";

    // 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1YCyXWnz29UKUnwnTH3COYeSD6zoEOOz79J6TJjlT/05mWPs2NbJwQAVujyBIYBb+PtYAH6bgO3w9uIW3NhNlf97iSmpaqVwqLnxWGnwKndJj9E+nMOM5EYqgzQzOvHd8pKATIXd1OIrP36BLIUfKH9PizzePYjBIzFeq6L5Xg2IrpbqGTDu42c1/mi1VyzPUYennv48GlpTpEZbkIZAySXepT0n9aLcazqXUuEZJCJOgdLgYeT+CAjYI7WLJIrZgBl/0G41S9QMC5rIjz2DqLy9LIJB0nkceMCwfmsfPc99zW/iek7bAdX3HxUNP6G1xbSs8J1WZ51G37vzhKz0XAgMBAAECggEBAJqUmAx6y4xypUcjcG0mG3jOB8NCxFR668ckyc2hwzRKoFfsOFYQV78BYV/DzgDBHHeduCes0j3DlPTJgfUOumNEIwJ7577THsC4k7GSquslbP1RaF2W9eFaiOrZN7QuvitV5zPGzxfxk6Ts86F0gMnMbHqenryuM3an6YO5DxhnaUyS4tYYwqBmXTJKwE+IR1U8tH+Y7x470rHTuNofvqy3G2RglKlbZh17vI2Ye4sG8ENClhwEofsoQtd3wAoE3BqmqRLmLC+YIiVQEM0yKULbSFSNP8q14JLl+VcTLyr7KKsmaSZfuvIgNuSjcjurZc7b2/ilsRp7eFnAfFetZfECgYEA7VckT88SjMoP5N6dIrLIeEGqaljiNSS2gHbY282f9W/IClKo9mEw7ARsj9fzEu4uBudNLhlFd3ROgfFv9DqMBoVEH+6MtGgGYmUVrAjwaCExDuIlkAUllka9ctUy4mvZQrjibJY1q2wfmI3LPFJewv1ND0V/xz6Jv60xpCsFu88CgYEAw6Km9O3/YDt1R63H2YHSAPPjF1nR964LB79aG5u2Yv4ioC7vggaKfNB/azeCefHJ4i2LGa0FNxW3kAgYt1hqHk9DPl6BQL1WBxso1a5l9id757co4QDdQZQab0ZXt0VtEKXRSJ4zUA5+mX4lpanfEsgxmr1ek9CW//writMT1DkCgYAF/lhdZ5ZJVeT226RONwOW/dmG2/3CZ83wCpBJZLTwZsU/dXzs0+F/ZFE1hLePt9ITvI2XZ234qUg+QdGY8k2M8Jqaz9RfzeyzWWglswgXKRdrD8zxCSA83kZ0euvRCfYvmCmnoldyn8VgfdwvBsl71Re4FgI3Dt49p+sEAU4gwwKBgDD0svL328ApIOAfDLPRWMwEO//L6k8groHx0Iq4HJwJHIEZPbY8DMvPIROjgHMjnnGLFBQIyBVQye6xF/5JkcSj8R/aZl3dA3ojwcQ3MCy5FLiXjRNBNB0FAth1sd2a8gAIfqa9b/nIpsWiW6lpKPl6P2+Jk/FJcX/9iqfiykOBAoGBALCKe7dkYqNDyu0c+n/nWpYtAPnYSM57BPNrp+jZFD5QCDf0qldLqU+6K3rUaCobqGlX3ayPUNJ2mfrrqvgl9kCqiz0S5RUVmhmd1yw+qf2wjZ40x5jyAS0XPHIFUhKs4BTHKeT8JNxn2sJmZK5GpMt2YnniOvQKfBnu7olabwko";

    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnH15E5ATMIS+SnmbjY5yoihHRDsKCrCFWKvrgw5/Z8AIQGaMc2f3Km27y2wGghTX3A+uREO5REJ4W4i54eZLiulwZdjgCpuzU8NRzBl1Lkvdg497Z6wRG3chYLTdebk5mR1aEX81mD9BWILsTL3hB5qtf5SStT1emX3VSZs/K/kfdLUOz7MoVm3AFavwh2CflvTQkBNoa67YlS5daHmsHK/3MbbeXhLz/m5LBVSTz3LJ4nTvbXobOR0iJ1mTTXgDqU98XBKYFrU5l9ZC9XDhatcIiT/eZzxi/lJxEXm48DqFMVM6c9LP1MrwTRQRSUgT8FmxTJbpZbBP1HxfzDWGAwIDAQAB";

    // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String notify_url = "https://www.baidu.com";

    // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String return_url = "https://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";

    // 支付宝网关
    public static String log_path = "D:\\";


//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    /**
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @param sWord 要写入日志里的文本内容
     */
    public static void logResult(String sWord) {
        FileWriter writer = null;
        try {
            writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
            writer.write(sWord);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

controller层

package com.example.demo.controller;

import com.example.demo.service.AliPayService;
import com.sun.deploy.net.HttpResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@RestController
@RequestMapping("/alipay")
public class AliPayController {
    @Autowired
    AliPayService aliPayService;

    @RequestMapping("/pay")
    public String pay(HttpServletResponse response, HttpServletRequest  request){
        String str="" ;
        try {
            str = aliPayService.aliPay(response,request);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
}

service及其接口实现类

package com.example.demo.service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface AliPayService {
    String aliPay(HttpServletResponse response, HttpServletRequest request);
}
package com.example.demo.service.impl;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.example.demo.config.AliPayConfig;
import com.example.demo.service.AliPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.UUID;

@Component
@Slf4j
public class AliPayServiceImpl implements AliPayService {
    @Override
    public String aliPay(HttpServletResponse response, HttpServletRequest request) {
        //获得初始化的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(UUID.randomUUID().toString().replace("-", ""));
        //付款金额,从前台获取,必填
        String total_amount = new String("200");
        //订单名称,必填
        String subject = new String("a");
        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();
        }
        //输出
        log.info("返回结果={}", result);
        return result;

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值