支付宝沙盒(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

请求接口后出现下面界面


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/582187.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编写你的第一个 golang 的应用程序

进行你的第一个golang的程序 当你把程序都安装好以后 环境变量配置 好 vscode 插件下载好以后 1. 创建一个test.go 的文件 //主包,可执行文件所在包 package main//导入包 import "fmt"//主函数,入口函数 func main() { }2.解释 需要导入包 …

前端入门:HTML(css轮廓,填充,宽高)

1.CSS轮廓 注意: outline中,out-style是必须要设置的,格式为: outline-style一共有以下的几个值: 2.CSS填充属性 这是一个用于在一个元素的内容周围产生空间,也就是边框内到白框外之间的距离,…

FPlan Part1 EP1(MySQL)

今天完成了MySQL的第一部分,计划分为三部分,预计将在五一假期前完成,以及一个Java小游戏。 重点如下

【MySQL 所遇问题】

【MySQL 所遇问题】 总结:Error Code: 1064.You have an error in your SQL syntax报错解释1:报错解释2处理过程 Error Code:1366 - Incorrect string value:报错解释处理过程 总结: Error Code: 1064 不可见字符。 某些文本处理…

java8 Stream流常用方法(持续更新中...)

java8 Stream流常用方法 1.过滤数据中年龄大于等于十八的学生2.获取对象中其中的一个字段并添加到集合(以学生姓名(name)为例)3.获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别(sex)为例,将Str…

解析链动2+1模式:探寻电商新商业契机

大家好,我是微三云周丽 在当今数字化时代,电商行业日新月异,不断涌现出各种创新商业模式。其中,链动2121模式以其独特的商业逻辑和快速裂变的特性,吸引了众多用户和企业家的关注。本文将深入剖析链动2121模式的运作机…

在 Windows 系统上安装 TeamViewer 13

在 Windows 系统上安装 TeamViewer 13 References 默认安装到所有用户 同意协议 安装目录 勾选内容 打开文件位置 打开 rClientID.exe Extras -> Options -> Advanced Show advanced options -> Display language 重新启动TeamViewer 语言可修改为中文简体 …

快团团同城落地配怎么一键开团?免费配送设置教程!

1)点击快团团小程序底部的【一键开团】找到【物流方式】 2)选择物流方式为【顾客自提】后,点击【设置自提点】 3)选择自提点 4)可勾选已设置的自提点,或是点击【添加自提点】 5)设置好自提点…

自制贪吃蛇小游戏

此片文章涉及到到控制台设置的相关操作,虚拟键码,宽字符输出等,有些地方大家可能会看不懂,可以阅读以下文章来进一步了解: 控制台程序设置-CSDN博客 效果展示: QQ2024428-181932 源码已放在文章结尾 目录 …

【while循环】

目录 什么是循环 while语句的执行过程 编程求1*2*3*...*n 所有不超过1000的数中含有数字3的自然数 求数 求数II 编程求1平方2平方...n平方 什么是循环 循环就是重复做同样的事儿使用while语句循环输出1到100 int i 1; while( i < 100 ){cout <<…

ES练习项目-酒店搜索

目录 1 需求分析2 酒店搜索和分页2.1 请求和响应分析2.2 定义实体类&#xff0c;接收请求参数的JSON对象2.3 编写controller&#xff0c;接收页面的请求2.4 编写业务实现&#xff0c;利用RestHighLevelClient实现搜索、分页 3. 酒店结果过滤3.1 请求和响应分析3.2 修改请求参数…

java-stream流案例

需求 代码 Vote类 // 1. 定义一个投票类 public class Vote {private String name;private ArrayList<String> voteList;public Vote(String name, ArrayList<String> voteList) {this.name name;this.voteList voteList;}public String getName() {return nam…

比较LLM和RAG技术:塑造AI的未来

在人工智能&#xff08;AI&#xff09;的动态领域中&#xff0c;两项突破性技术——大型语言模型&#xff08;LLM&#xff09;和检索增强生成&#xff08;RAG&#xff09;因其在理解和生成类人文本方面的变革潜力而脱颖而出。本文开始了LLM和RAG之间的比较之旅&#xff0c;阐明…

ROS2专栏(三) | 理解ROS2的动作

​ 1. 创建一个动作 目标&#xff1a; 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包&#xff1a; mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

C++:拷贝构造函数与赋值的区别

目录 拷贝构造函数 拷贝构造函数的使用方法 拷贝构造函数与赋值运算符的区别 谈深拷贝和浅拷贝 浅拷贝 注意: 深拷贝 拷贝构造函数 拷贝构造函数的也是一种构造函数,它的作用是将一个类的成员拷贝到另一个类中,类似于赋值。拷贝构造函数分为深拷贝和浅拷贝。 先来定义一…

【MySQL 5.7安装时候 出现2503报错,解决方案】

MySQL5.7 安装遇 2503问题如何解决 1.能正常安装就点这里2.出现2503问题就看这2.1先看问题2.1.1在官网下载好安装包后&#xff0c;首先先确认安装包是否完整&#xff0c;排除安装包损坏的问题2.1.2 安装时候出现这个2503问题 2.2上解决方案2.2.1 打开任务管理器2.2.2 解决 1.能…

网盘—上传文件

本文主要讲解网盘里面关于文件操作部分的上传文件&#xff0c;具体步骤如下 目录 1、实施步骤&#xff1a; 2、代码实现 2.1、添加上传文件协议 2.2、添加上传文件槽函数 2.3、添加槽函数定义 2.4、关联上传槽函数 2.5、服务器端 2.6、在服务器端添加上传文件请求的ca…

4G远程温湿度传感器在农业中的应用—福建蜂窝物联网科技有限公司

解决方案 农业四情监测预警解决方案 农业四情指的是田间的虫情、作物的苗情、气候的灾情和土壤墒情。“四情”监测预警系统的组成包括管式土壤墒情监测站、虫情测报灯、气象站、农情监测摄像机&#xff0c;可实时监测基地状况,可以提高监测的效率和准确性&#xff0c;为农业生…

分布式系统事务一致性解决方案(基于事务消息)

参考&#xff1a;https://rocketmq.apache.org/zh/docs/featureBehavior/04transactionmessage/ 文章目录 概要错误的方案方案一&#xff1a;业务方自己实现方案二&#xff1a;RocketMQ 事务消息什么是事务消息事务消息处理流程事务消息生命周期使用限制使用示例使用建议 概要 …

进迭时空宣布开源RISC-V芯片的AI核心技术

仟江水商业电讯&#xff08;4月29日 北京 委托发布&#xff09;4月29日&#xff0c;在“创芯生生不息——进迭时空2024年度产品发布会”上&#xff0c;进迭时空CEO、创始人&#xff0c;陈志坚博士宣布将开源进迭时空在自研RISC-V AI CPU上的核心技术&#xff0c;包括AI扩展指令…