我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Springboot中添加支付接口

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Springboot中添加支付接口

本篇文章为大家展示了怎么在Springboot中添加支付接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1. 支付宝支付接口(沙箱实现)

1.1 支付宝沙箱账号获取

如下图:

怎么在Springboot中添加支付接口

此处可以自行设置账户金额

1.2 下载客户端(目前好像只支持Android)

怎么在Springboot中添加支付接口

下载完成后根据官方提供的账号以及密码登录手机端支付宝账号 如图(商家账号):

怎么在Springboot中添加支付接口

1.3 代码配置

工具类AlipayConfig

public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号    public static String app_id = "";    // 商户私钥,您的PKCS8格式RSA2私钥    public static String merchant_private_key = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/HOeQNyultzkc5cUnqxBSTIpYt6BTgJoCHKiLQDYgPhjvSX16r08Qw82qYdQgWEs4hHNy2COGA5ksw1eW+zyY2alcTEvRMo4sqx7Ytdm250f67wZQkuPRFSJN7ywHkTipjGKNcS9z9U0Dp18jRXHow4/A9OF8jOau7pWyG0Tc87WHf5u0/G16uMpRtGRzzyNvim7cHAnyFPNrAJ+5DRBdhBg+PjV7EcpYg5LRaMqaO8qDSis+AUU4e7QOELqMgr7yxBNScQ6KksnWnztcFxz6M9T66dAZJ0dWpiB8qatM6sT/MeHTAXeYLhIbnUaxM9vGJR3AJHbHmvNa9o0ToT0LAgMBAAECggEBAIk1a1szAPc9EJgaru3H9zPfGASR8V2CGxAhGzC+rR2A9830aU5HxvA2Y9ZL3kxKl9a/4VM2smpo8vQcWypevibPPrSxYk2Tilevk7nq9aBHdHpIWbRHgaB/F930NRxJuvCfhbIe7P7Hwr84zyk3loySuwbByZHuZ0B4sqjowwwN/wbshl5m/5i4ej6AUp1LVEbxUFpNHNjIZejWVJ0Liq69l8o+1HsFIaGW1Vcrf+fmq20moZzFOLi4EmGfBp/na8JDmo3bE3X+ccAJ375OYictfZVKKYI/UIC/D+7y4XuZatLq3V3lql5ukMnAUJwTJeEapSigkJHDOX38xcSA7iECgYEA5qvIl7PGl8CwDOgTe8LoT8toTUmhAVDFwSF+ROCZD8u9qQeGG7SSCovoTQcVDuzVA3bW8d4Guvb7ZTpnUZZyWHD2rOqxh76wqHGiVTJRApNTS7XHXt3FERNgM7Y8lSoYHdarsZ7QZaJDGGkcwuGvJM0klwyuqs6LQq5DRsz9qp8CgYEA1BkiCjD5FUE/i48MFh+qYcOSiqsm7Hrj/4zuHj0QODonuUZPH0V6b3p4SIWHeBsjmSxBsqoLh3qFOzWAUeBVU3+muPHp3uglumtjZ5wE0nHCt2+0ZH+QKSk5mm8j+09xfTJ185FMusx0N9RQ4l6Rpzb7DSLQFelT4M7gvTRjAhUCgYAtUPQwcV4DdBRiBLnHJ4xSGMjd3igmRQMEpRrUVzdathEFgvfiu3+xWLkDYO/PJdHXQ2KI07CIzHqo8WdYzPCb1V1wrQ7BdB06ilB04lSt59mGVyjax0Cu0RqmLhgKyeFBA2ppk6SnQtBhnEzNMF8jILYegpxR7A/JwshuwVjYSwKBgQCTxfMGgLp6iZxZgs/b9jICrX1DKh5Tc0e5PBqHbOoJEtOsbYUg94pncz+s34PUNaxmwwP/FCS2M4wiBZOi+Bba9zxU7Q+R49KtgLagcH6XlPUiUyyvPIVXeEaPB9Jc/SvIG8k8a0a3e02ZvE6G1hETQj2GGZv0ENiSpRQKBgC8qOk7TMndVDi3vlgGky3BmxSpycwGnI0tcBZnzAyzcLPH3RL3nLvUoZ1w550be7mPDt30/WkCMKV8uKRnNVSrp1LSbT0Z6oJxsaHaCxv3C2UFzlqKWsTtiKNKhYEhjsMYj6l2nRg2CC0WIAA6MPP3xaezSWO1la39Slam0w3l";    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。    public static String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvxznkDcrpbc5HOXFJ6sQUkyKWLegU4CaAhyoi0A2ID4Y70l9eq9PEMPNqmHUIFhLOIRzctgjhgOZLMNXlvs8mNmpXb4pu3BwJ8hTzawCfuQ0QXYQYPj41exHKWIOS0WjKmjvKg0orPgFFOHu0DhC6jIK+8sQTUnEOipLJ1p87XBcc+jPU+unQGSdHVqYgfKmrTOrE/zHh0wF3mC4SG51GsTPbxiUdwCR2x5rzWvaNE6E9CwIDAQAB";    // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问    public static String notify_url = "http://localhost:8080/alipay/alipayNotifyNotice.action";    // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问    public static String return_url = "http://localhost:8080/alipay/alipayReturnNotice.action";    // 签名方式    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 = "C:\\";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑        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();                }            }        }    }}

其中的参数获取如下: app_id

怎么在Springboot中添加支付接口

商户私钥,以及支付宝公钥获取方法参考官方文档:密钥生成

页面跳转便是支付以后自动跳转的界面

接下来解释编写下单页面:

    @RequestMapping(value = "/goAlipay", produces = "text/html; charset=UTF-8")    @ResponseBody    public String goAlipay(String orderId, HttpServletRequest request, HttpServletRequest response) throws Exception {         order = (Order) request.getSession().getAttribute("order");    orderId="FinchII";        //获得初始化的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 out_trade_no = orderId;        //付款金额,必填        BigDecimal total_amount = order.getTotalPrice();        //订单名称,必填        int subject = order.getOrderId();        //商品描述,可空        String body = "用户订购商品个数:" + order.getLineItems().size();        // 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。        String timeout_express = "1c";        alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","                + "\"total_amount\":\""+ total_amount +"\","                + "\"subject\":\""+ subject +"\","                + "\"body\":\""+ body +"\","                + "\"timeout_express\":\""+ timeout_express +"\","                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");        //请求        String result = alipayClient.pageExecute(alipayRequest).getBody();        return result;    }    @RequestMapping(value = "/alipayReturnNotice")    public ModelAndView alipayReturnNotice(HttpServletRequest request, HttpServletRequest response) throws Exception {        //获取支付宝GET过来反馈信息        Map<String,String> params = new HashMap<String,String>();        Map<String,String[]> requestParams = request.getParameterMap();        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {            String name = (String) iter.next();            String[] values = (String[]) requestParams.get(name);            String valueStr = "";            for (int i = 0; i < values.length; i++) {                valueStr = (i == values.length - 1) ? valueStr + values[i]                        : valueStr + values[i] + ",";            }            //乱码解决,这段代码在出现乱码时使用            valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");            params.put(name, valueStr);        }        boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //调用SDK验证签名        ModelAndView mv = new ModelAndView("alipaySuccess");        //——请在这里编写您的程序(以下代码仅作参考)——        if(signVerified) {            //商户订单号            Order order= (Order) request.getSession().getAttribute("order");            BigDecimal out_trade_no = order.getTotalPrice();            //支付宝交易号            String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");            //付款金额            String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");            // 修改叮当状态,改为 支付成功,已付款; 同时新增支付流水                       mv.addObject("out_trade_no", out_trade_no);            mv.addObject("trade_no", trade_no);            mv.addObject("total_amount", total_amount);                  }else {                   }        return mv;    }        @RequestMapping(value = "/alipayNotifyNotice")    @ResponseBody    public String alipayNotifyNotice(HttpServletRequest request, HttpServletRequest response) throws Exception {        //获取支付宝POST过来反馈信息        Map<String,String> params = new HashMap<String,String>();        Map<String,String[]> requestParams = request.getParameterMap();        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {            String name = (String) iter.next();            String[] values = (String[]) requestParams.get(name);            String valueStr = "";            for (int i = 0; i < values.length; i++) {                valueStr = (i == values.length - 1) ? valueStr + values[i]                        : valueStr + values[i] + ",";            }            //乱码解决,这段代码在出现乱码时使用//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");            params.put(name, valueStr);        }        boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //调用SDK验证签名        //——请在这里编写您的程序(以下代码仅作参考)——        if(signVerified) {//验证成功            //商户订单号            String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");            //支付宝交易号            String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");            //交易状态            String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");            //付款金额            String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");            if(trade_status.equals("TRADE_FINISHED")){                //判断该笔订单是否在商户网站中已经做过处理                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序                //如果有做过处理,不执行商户的业务程序                //注意: 尚自习的订单没有退款功能, 这个条件判断是进不来的, 所以此处不必写代码                //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知            }else if (trade_status.equals("TRADE_SUCCESS")){                //判断该笔订单是否在商户网站中已经做过处理                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序                //如果有做过处理,不执行商户的业务程序                //注意:                //付款完成后,支付宝系统发送该交易状态通知                // 修改叮当状态,改为 支付成功,已付款; 同时新增支付流水                           }                   }else {//验证失败                   }        return "success";    }

上述内容就是怎么在Springboot中添加支付接口,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Springboot中添加支付接口

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Springboot中添加支付接口

本篇文章为大家展示了怎么在Springboot中添加支付接口,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 支付宝支付接口(沙箱实现)1.1 支付宝沙箱账号获取如下图:此处可以自行设置账户金额1
2023-06-14

怎么在SpringBoot中添加JSP支持

今天就跟大家聊聊有关怎么在SpringBoot中添加JSP支持,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。序言:SpringBoot默认不支持JSP,如果想在项目中使用,需要进行相
2023-05-31

springboot中怎么对接微信支付

springboot中怎么对接微信支付,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。对接的完整流程如下首先是配置gzh.appid=公众号appidwxPay.mchId=
2023-06-20

Python中怎么实现一个支付接口

这篇文章给大家介绍Python中怎么实现一个支付接口,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先定义数据如下:用的测试平台的数据data=[ "", ("p0_Cmd","Buy"), ("p1_Me
2023-06-17

PHP中怎么实现一个支付宝接口

这期内容当中小编将会给大家带来有关PHP中怎么实现一个支付宝接口,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在使用支付宝支付的时候,首先必须注册一个支付宝的账户,然后下载支付宝提供的接口文件,通过支付宝
2023-06-17

Java Springboot整合支付宝接口的方法是什么

本篇内容主要讲解“Java Springboot整合支付宝接口的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java Springboot整合支付宝接口的方法是什么”吧!一、创建支付
2023-07-05

Android中怎么接入支付宝实现支付功能

本篇文章为大家展示了Android中怎么接入支付宝实现支付功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.登录官网他的官网就是蚂蚁金服的开放平台了,我们可以访问 蚂蚁金服开放平台 ,并且注册账
2023-05-31

python中怎么实现一个快速支付接口

今天就跟大家聊聊有关python中怎么实现一个快速支付接口,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先定义数据如下:#用的测试平台的数据data=[ "", ("p0_
2023-06-17

在springboot项目中拦截器怎么添加

这篇文章给大家介绍在springboot项目中拦截器怎么添加,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。构建一个spring boot项目。添加拦截器需要添加一个configuration@Configuration
2023-05-31

怎么在win10中添加本地连接

本篇文章给大家分享的是有关怎么在win10中添加本地连接,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Win10桌面右下角的网络图标中右键,然后点击【打开网络共享中心】,如下
2023-06-15

CentOS中怎么添加端口

CentOS中怎么添加端口,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。添加端口: # /sbin/iptables -I INPUT -p tcp --dpo
2023-06-10

怎么在CentOS中添加动态链接库

今天就跟大家聊聊有关怎么在CentOS中添加动态链接库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一:在/etc/profile中添加共享库的路径:[plain] view pl
2023-06-10

怎么在Html5中实现微信支付

本篇文章为大家展示了怎么在Html5中实现微信支付,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。爬坑之路爬坑一:单页SPA和后端路由的问题这个我已经单独做总结:https://www.yisu.co
2023-06-09

如何在PHP项目中实现支付接口和订单处理?

如何在PHP项目中实现支付接口和订单处理?随着电子商务的快速发展,支付接口和订单处理成为了一个PHP项目中不可或缺的组成部分。本文将介绍如何在PHP项目中实现支付接口和订单处理的方法和步骤。一、支付接口的选择和集成首先,我们需要选择一个适合
如何在PHP项目中实现支付接口和订单处理?
2023-11-02

html中怎么添加链接

这篇文章给大家分享的是有关html中怎么添加链接的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html添加链接的方法:首先创建一个HTML示例文件;然后在body标签内添加链接格式“

如何在SpringBoot项目中的自定义配置添加IDE支持

这篇文章将为大家详细讲解有关如何在SpringBoot项目中的自定义配置添加IDE支持,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Application.java:application.
2023-06-06

springboot怎么添加bean到容器中

在Spring Boot中,有多种方法可以将Bean添加到容器中。1. 使用@Component注解:在类上添加@Component注解,Spring Boot会自动将该类实例化为Bean并添加到容器中。例如:```java@Compone
2023-09-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录