Bootstrap

支付宝沙盒(java使用支付宝)springboot

目录

前言

注册账号(直接搜索支付宝沙盒)

​编辑

具体代码编写

Application配置(按自己需求添加)

config(这里需要亲自添加appid,privateKey,publicKey)

controller类

Service类

ServiceImpl类

运行

请求地址

请求接口后出现下面界面


前言

本来想直接对接到自己的账号的,结果支付宝开发者账号申请支付,需要有公司营业执照(没有不能使用),有沙盒练手也行。

注册账号(直接搜索支付宝沙盒)

具体代码编写

Application配置(按自己需求添加)

server:
  port: 9190

config(这里需要亲自添加appid,privateKey,publicKey)

public class AlipayConfig {
    /**
     * 支付宝网关地址
     */
    public static String serverUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
    /**
     * appId
     */
    public static String appId = "";
    /**
     * 应用私钥 后期替换成自己的私钥
     */
    public static String privateKey = "";
    /**
     * 发送数据的格式 目前只能为json
     */
    public static String format = "json";
    /**
     * 设置字符集编码 目前只能为utf-8
     */
    public static String charset = "utf-8";
    /**
     * 支付宝公钥 后期替换成自己的支付宝公钥
     */
    public static String publicKey = "";
    /**
     * 支付宝签名 目前是 RSA2
     */
    public static String signType = "RSA2";
    public static AlipayClient getAlipayClient() {
        // 获得初始化的AlipayClient
        return new DefaultAlipayClient(AlipayConfig.serverUrl, AlipayConfig.appId,
                AlipayConfig.privateKey, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.publicKey,
                AlipayConfig.signType);
    }
}

controller类

@RestController
@RequestMapping("alipay")
public class PayController {

    @Autowired
    private AliPayServiceImp aliPayServiceImp;
    /**
     * 支付请求接口
     */
    @RequestMapping("pay/{orderId}/{cost}/{aliname}") // 订单id(不能重复)和消费金额
    public void pay(@PathVariable String orderId,@PathVariable String cost,@PathVariable String aliname, HttpServletResponse response){
        boolean pay = aliPayServiceImp.pay(orderId, cost,aliname, response);
    }

}

Service类

public interface AliPayService {
    boolean pay(String orderId, String cost ,String aliname, HttpServletResponse response);

}

ServiceImpl类

回调地址:成功后请求到的地址,可以直接使用,百度地址:https://www.baidu.com。

@Service
public class AliPayServiceImp implements AliPayService {

    @Override
    public boolean pay(String orderId, String cost, String aliname, HttpServletResponse response) {
        try {
        AlipayClient alipayClient = AlipayConfig.getAlipayClient();
        // 设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        AlipayTradePayModel model = new AlipayTradePayModel();
        model.setOutTradeNo(orderId);
        // 设置订单金额
        model.setTotalAmount(cost);
        // 订单名字
        model.setSubject(aliname);
        // 订单描述
        model.setBody("这是"+aliname+"的消费订单");
        // 产品码
        model.setProductCode("FAST_INSTANT_TRADE_PAY");
        // 设置参数
        alipayRequest.setBizModel(model);
        // 设置回调地址
        String url = "http://localhost:9528/#/example/index";
        System.out.println(url);
        alipayRequest.setReturnUrl(url);
        String result = alipayClient.pageExecute(alipayRequest).getBody();
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println(result);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }

        return false;
    }
}

运行

请求地址

http://localhost:9190/alipay/pay/222987226543232/509/111

请求接口后出现下面界面


 

;