SpringBoot 简单集成 支付宝沙箱环境调用

SpringBoot集成电脑版 支付宝沙箱 简单集成

  1. 创建SpringBoot项目
    第一步:在这里插入图片描述
    第二步:

在这里插入图片描述
第三步:
在这里插入图片描述
第四步选择框架需要集成的 我只是简单以SpringBoot环境集成,只选择的web。
在这里插入图片描述
如果你以创建好 启动不了 启动类显示没导入成功就降低SpringBoot版本。

  1. 引入jar包
		<!--支付宝调用jar包-->
  		 <dependency>
            <groupId>com.github.1991wangliang</groupId>
            <artifactId>alipay-api</artifactId>
            <version>1.0.0</version>
        </dependency>

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

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
		
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>
  1. 生成支付宝公钥 私钥并且配置
    https://miniu.alipay.com/keytool/create 点击生成密钥
    把生成的公钥配置给支付宝
    https://openhome.alipay.com/platform/developerIndex.htm
    开发服务-》沙箱服务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 复制支付宝密保配置方法

package com.example.alipays.config;

import java.io.FileWriter;
import java.io.IOException;

/* *     http://localhost:8080/payment/pay
 *类名:AlipayConfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *修改日期:2017-04-05
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 */

public class AlipayConfig {

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

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

    // 商户私钥,您的PKCS8格式RSA2私钥 https://miniu.alipay.com/keytool/create 自己手动生成的私钥
    public static String merchant_private_key = "";

    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "";
    // 服务器异步通知页面路径  需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();
                }
            }
        }
    }
}


  1. 业务成和控制层
package com.example.alipays.service;

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

public interface AlipayService {

    /**
     * 支付宝支付调用接口
     * @param response
     * @param request
     * @throws IOException
     */
    String  aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException;
}

package com.example.alipays.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.alipays.service.AlipayService;
import com.example.alipays.config.AlipayConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;

/**
 * 业务层
 */
@Service
@Slf4j
public class AlipayServiceImpl implements AlipayService {



    @Override
    public String aliPay(HttpServletResponse response, HttpServletRequest request) throws IOException {
//        response.setContentType("text/html;charset=utf-8");

//        PrintWriter out = response.getWriter();
        //获得初始化的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("0.01");
        //订单名称,必填
        String subject = new String("祖万敏小可爱");
        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();
        }
        //输出
//        out.println(result);
        log.info("返回结果={}",result);
        return result;
    }
}
package com.example.alipays.controller;

import com.example.alipays.service.AlipayService;
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;

/**
 * @description 支付控制类
 */
@RestController
@RequestMapping("/payment")
public class PaymentController {

    @Autowired
    AlipayService alipayService;


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

}

application.yml 配置一下端口号

server:
  port: 8080
  servlet:
    context-path: /
  tomcat:
    uri-encoding: utf-8

调用:
http://localhost:8080/payment/pay
在这里插入图片描述
这一支付就基本成功了。

如果出现 :支付存在钓鱼风险!防钓鱼网站的方法 错误的界面,就关闭所有支付宝登录的平台 清除缓存再次 访问 http://localhost:8080/payment/pay
就OK了 ,不行换个浏览器 就搞定了,其他错误需要你去好好验证你的配置有没有配好没啥大问题。

在每一天中奋斗:百万秦关终属楚,三千越甲可吞吴。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值