当前位置: 首页 > news >正文

项目支付接入支付宝【沙箱环境】

三连哦

前言

订单支付接入支付宝,使用支付宝提供的沙箱机制模拟为订单付款。我这里主要记录一下沙箱环境如何接入到系统中,具体细节的实现。按照官方文档来就可以了。

1、使用步骤

这里有几个重要数据要拿到,一个是支付宝的公钥和私钥,一个是支付的网关,和支付的APPID。这几个数据是要写到代码中的
官方手册:文档

1.1 配置沙箱应用环境

开放平台控制台 > 开发工具推荐,点击 沙箱 进入沙箱环境

在这里插入图片描述

在这里插入图片描述

1.2 配置接口加签方式

接入系统使用自定义密钥,等下要添加公钥和私钥。

在这里插入图片描述

1.2 密钥生成器

需要下载对应版本的密钥生成器。本机使用的是windows。直接无脑安装下一步。地址

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

将生成的公钥和私钥填入到这边

在这里插入图片描述

1.4 沙箱账号

就是付款的时候模拟的账户信息和付款密码。以及收款商家

在这里插入图片描述

2、订单支付接入支付宝

2.1 pom添加依赖

        <!-- 支付宝sdk --><!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.28.ALL</version></dependency>

2.2 服务端代码配置

沙箱环境调试接口时,开发者需调整如下代码配置:

• 支付宝网关地址 修改为:https://openapi.alipaydev.com/gateway.do
• APPID 切换为沙箱的 APPID
• 签名方式 使用 RSA2
• 根据配置的密钥/证书,选择对应加签代码设置商户应用私钥和支付宝公钥。

这里将这些数据抽取成配置文件。你也可以直接写死在代码里边

#支付宝相关的配置
alipay.app_id=你的id
alipay.merchant_private_key= 你的私钥
alipay.alipay_public_key=你的公钥
alipay.notify_url=http://497n86m7k7.52http.net/payed/notify //这个是下单后的通知
alipay.return_url=http://member.zyz.com/memberOrder.html
alipay.sign_type=RSA2
alipay.charset=utf-8
alipay.gatewayUrl=https://openapi.alipaydev.com/gateway.do

封装的接口,具体参数可以参考官方文档接口调用说明【接口API调用说明】


@ConfigurationProperties(prefix = "alipay")
@Component
@Data
public class AlipayTemplate {// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public String app_id;// 商户私钥,您的PKCS8格式RSA2私钥public String merchant_private_key;// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public String alipay_public_key;// 服务器[异步通知]页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问// 支付宝会悄悄的给我们发送一个请求,告诉我们支付成功的信息public String notify_url;// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问//同步通知,支付成功,一般跳转到成功页public String return_url;// 签名方式private  String sign_type;// 字符编码格式private  String charset;//订单超时时间private String timeout = "1m";// 支付宝网关; https://openapi.alipaydev.com/gateway.dopublic String gatewayUrl;public  String pay(PayVo vo) throws AlipayApiException {//AlipayClient alipayClient = new DefaultAlipayClient(AlipayTemplate.gatewayUrl, AlipayTemplate.app_id, AlipayTemplate.merchant_private_key, "json", AlipayTemplate.charset, AlipayTemplate.alipay_public_key, AlipayTemplate.sign_type);//1、根据支付宝的配置生成一个支付客户端AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl,app_id, merchant_private_key, "json",charset, alipay_public_key, sign_type);//2、创建一个支付请求 //设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(return_url);alipayRequest.setNotifyUrl(notify_url);//商户订单号,商户网站订单系统中唯一订单号,必填String out_trade_no = vo.getOut_trade_no();//付款金额,必填String total_amount = vo.getTotal_amount();//订单名称,必填String subject = vo.getSubject();//商品描述,可空String body = vo.getBody();alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\""+timeout+"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");String result = alipayClient.pageExecute(alipayRequest).getBody();//会收到支付宝的响应,响应的是一个页面,只要浏览器显示这个页面,就会自动来到支付宝的收银台页面System.out.println("支付宝的响应:"+result);return result;}
}

2.3 调用支付接口

调用封装好的接口方法: String pay = alipayTemplate.pay(payVo); 关于为何传入这个参数,请自行查询沙箱案例Demo。各个参数代表的意义

    /*** 用户下单:支付宝支付* 1、让支付页让浏览器展示* 2、支付成功以后,跳转到用户的订单列表页* @param orderSn* @return* @throws AlipayApiException*/@ResponseBody@GetMapping(value = "/aliPayOrder",produces = "text/html")public String aliPayOrder(@RequestParam("orderSn") String orderSn) throws AlipayApiException {PayVo payVo = orderService.getOrderPay(orderSn);String pay = alipayTemplate.pay(payVo);System.out.println(pay);return pay;}

2.4 单独的支付案例

在这里插入图片描述

直接下载运行一下,可以看看
在这里插入图片描述

3、实现的效果

3.1 订单支付页面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

alipay.notify_url=http://497n86m7k7.52http.net/payed/notify
//这个是下单后的通知
这个就是自己内网的访问地址。也就是订单支付成功后,调用这个接口方法,然后修改订单的状态。所以要做一个内网穿透。就是让外部网络可以访问到内部网路

在这里插入图片描述

相关文章:

项目支付接入支付宝【沙箱环境】

前言 订单支付接入支付宝&#xff0c;使用支付宝提供的沙箱机制模拟为订单付款。我这里主要记录一下沙箱环境如何接入到系统中&#xff0c;具体细节的实现。按照官方文档来就可以了。 1、使用步骤 这里有几个重要数据要拿到&#xff0c;一个是支付宝的公钥和私钥&#xff0c…...

程序员应该如何提升自己

作为一名程序员&#xff0c;以下是您可以考虑的一些方法来提高自己的技能和知识&#xff1a; 深入学习编程语言和相关工具&#xff1a;了解您使用的编程语言和相关工具的基本原理和高级特性&#xff0c;以便更好地理解其工作方式并更有效地使用它们。 刻意练习&#xff1a;刻意…...

全球上线!ABB中国涡轮增压器分拆 – 数据清理阶段完成

ABB是数字行业的技术前沿者&#xff0c;拥有四项主营业务&#xff1a;电气化&#xff0c;工业自动化&#xff0c;运动控制以及机器人和离散自动化。ABB总部位于瑞士苏黎世&#xff0c;业务遍及100多个国家&#xff0c;拥有约105&#xff0c;000名员工。2021年&#xff0c;该公司…...

手写简易 Spring(三)

文章目录 三. 手写简易 Spring&#xff08;三&#xff09;1. Bean 对象初始化和销毁方法1. XML 添加 init-method 与实现 InitializingBean 接口注册初始化2. XML 添加 destroy-method 与实现 DisposableBean 接口注册销毁3. DefaultSingletonBeanRegistry 优秀的解耦方法 2. 定…...

设计模式-看懂UML类图和时序图

这里不会将UML的各种元素都提到&#xff0c;只讲类图中各个类之间的关系&#xff1b; 能看懂类图中各个类之间的线条、箭头代表什么意思后&#xff0c;也就足够应对 日常的工作和交流&#xff1b; 同时&#xff0c;应该能将类图所表达的含义和最终的代码对应起来&#xff1b; 1…...

2023年全国最新安全员精选真题及答案57

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 101.&#xff08;单选题&#xff09;遇有&#xff08;&#xff09;及以上强风、浓雾等…...

数字图像处理基础

图像增强&#xff1a;不论方法&#xff0c;只要能够得到较好的图像即可 图像复原&#xff1a;找到图像退化的原因&#xff0c;把噪声过滤得到较好的图像 RGB——HSI(色调 饱和度 亮度)彩色图像处理需要用到灰度图像处理 直方图均衡&#xff0c;灰度概率密度函数接近均匀分布&a…...

onnx手动操作

使用onnx.helper可以进行onnx的制造组装操作&#xff1a; 对象描述ValueInfoProto 对象张量名、张量的基本数据类型、张量形状算子节点信息 NodeProto算子名称(可选)、算子类型、输入和输出列表(列表元素为数值元素)GraphProto对象用张量节点和算子节点组成的计算图对象ModelP…...

虚拟机安装Centos7,ping不通百度

虚拟机安装Centos7&#xff0c;ping不通百度 一、虚拟机网络配置 网络适配器选择桥接模式&#xff0c;不勾选复制物理网络连接状态。 同时虚拟机使用默认配置都是桥接。 二、配置静态IP 1、首先&#xff0c;查看宿主机的IP和网关 2、配置静态ip的文件地址及修改命令如下&…...

leetCode算法第一天

今天开始刷算法题&#xff0c;提升自己的算法思维和代码能力&#xff0c;加油&#xff01; 文章目录 无重复字符的最长子串最长回文子串N形变换字符串转换整数 无重复字符的最长子串 leetCode链接 https://leetcode.cn/problems/longest-substring-without-repeating-characte…...

怎么将太大的word文档压缩变小,3个高效方法

怎么将太大的word文档压缩变小&#xff1f;word文档是我们在办公中使用较多的文件格式之一&#xff0c;相信小伙伴们会遇到这样的问题&#xff0c;编辑完成word文档之后发现&#xff0c;编辑完的文档体积太大了&#xff0c;无论是发送给客户还是上传到邮箱中都不方便&#xff0…...

mvc+动态代理

不使用MVC的时候系统存在的缺陷 一个Servlet都负责了那些工作&#xff1f; 负责了接收数据负责了核心的业务处理负责了数据表中的CRUD负责了页面的数据展示… 分析银行转账项目存在那些问题&#xff1f; 代码的复用性太差。&#xff08;代码的重用性太差&#xff09; 因为没…...

vue-cli(vue脚手架方式搭建)

1.首先安装node前端环境,可以帮助我们去下载其他的组件 下载完成后,去自己的电脑找到node的文件路径,复制去配置环境变量,在path中配 环境搭配完成后,在cmd中进行测试 ,输入一下两个命令进行测试 2.在hbuilderX中创建一个vue-cli项目(标准的前段项目) 3.组件路由 (1)安装 v…...

CentOS 安装 Docker

文章目录 一、更新yum源二、查看docker是否曾经安装过三、安装所需要的软件包四、设置yum源&#xff08;也可以设置成国内的阿里源等&#xff09;五、查看docker版本六、.安装docker &#xff08;默认全部选y&#xff09;七、查看docker安装版本八、docker 启动/停止/重启/开机…...

别搞了 软件测试真卷不动了...

内卷可以说是 2022年最火的一个词了。2023 年刚开始&#xff0c;在很多网站看到很多 软件测试的 2022 年度总结都是&#xff1a;软件测试 越来越卷了&#xff08;手动狗头&#xff09;&#xff0c;2022 年是被卷的一年。前有几百万毕业生虎视眈眈&#xff0c;后有在职人员带头“…...

OJ刷题 第十二篇

21308 - 特殊的三角形 时间限制 : 1 秒 内存限制 : 128 MB 有这样一种特殊的N阶的三角形&#xff0c;当N等于3和4时&#xff0c;矩阵如下&#xff1a; 请输出当为N时的三角形。 输入 输入有多组数据&#xff0c;每行输入一个正整数N&#xff0c;1<N<100 输出 按照给出…...

【计算机专业应届生先找培训还是先找个工作过渡一下?】

计算机专业应届生先找培训还是先找个工作过渡一下&#xff1f; 计算机应届生是先培训还是先工作&#xff0c;这个问题应该困扰了很多专业技能一般的同学&#xff0c;尤其是学历方面还没有优势的普通本专科院校。都说技术与学历优秀的人进大厂&#xff0c;技术一般学历优秀的人能…...

MySQL数据库,联合查询

目录 1. 联合查询 1.1 内查询 1.2 外查询 1.3 自连接 1.4 子查询 1.5 合并查询 1. 联合查询 联合查询&#xff0c;简单的来讲就是多个表联合起来进行查询。这样的查询在我们实际的开发中会用到很多&#xff0c;因此会用笛卡尔积的概念。 啥是笛卡尔积&#xff1f;两张表…...

springboot注解(全)

一、什么是Spring Boot Spring Boot是一个快速开发框架&#xff0c;快速的将一些常用的第三方依赖整合&#xff08;通过Maven子父亲工程的方式&#xff09;&#xff0c;简化xml配置&#xff0c;全部采用注解形式&#xff0c;内置Http服务器&#xff08;Jetty和Tomcat&#xff0…...

进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

目录 1.进制转换必备知识&#xff1a; 1.1 二进制逢2进1 8进制逢8进1 10进制逢10进1 16进制逢16进1 1.2为了区分二、八、十、十六进制&#xff0c;我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换 2.1 二进制转八进制 2.2 八…...

什么是UML?

文章目录 00 | 基础知识01 | 静态建模类图对象图用例图 02 | 动态建模时序图通信图状态图活动图 03 | 物理建模构件图部署图 UML&#xff08;Unified Model Language&#xff09;&#xff0c;统一建模语言&#xff0c;是一种可以用来表现设计模式的直观的&#xff0c;有效的框图…...

5.3 Mybatis映射文件 - 零基础入门,轻松学会查询的select标签和resultMap标签

本文目录 前言一、创建XML映射文件二、MybatisX插件安装三、mapper标签四、select标签UserMapper接口方法UserMapper.xml 五、resultMap标签定义resultMap标签修改select标签 总结 前言 MyBatis的强大在于它的语句映射&#xff0c;它提供了注解和XML映射文件两种开发方式&…...

“华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附获奖论文和python代码实现)

目录 摘 要: 1 问题重述 1.1 问题背景 1.2 问题重述 2 模型假设 3 符号说明...

C6678开发概述与Sys/bios基本使用

C6678开发概述 参考开发环境标记及术语创建sys/bios自定义平台运行第一个sys/bios程序Clock模块使用Demo 参考 TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Datasheet TMS320C66x DSP CorePac User Guide 官方手册 创龙6678开发教程 开发环境 …...

python算法中的图算法之网络流算法(详解二)

目录 学习目标: 学习内容: 网络流算法 Ⅰ. 网络流模型 Ⅱ . Ford-Fulk...

企业电子招投标采购系统之项目说明和开发类型源码

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…...

ERTEC200P-2 PROFINET设备完全开发手册(8-1)

8.1 IRT通讯实验 这里我们使用APP3 IsoApp&#xff0c;修改源代码usrapp_cfg.h的宏为 #define EXAMPL_DEV_CONFIG_VERSION 3 使能App3&#xff0c;对应的主程序为“usriod_main_isoapp.c” 编译后下载运行。打开4.2建立的TIA项目&#xff0c;添加等时模式组织块&#xff0c…...

手撕Twitter推荐算法

Twitter近期开源了其推荐系统源码[1,2,3]&#xff0c;截止现在已经接近36k star。但网上公开的文章都是blog[1]直译&#xff0c;很拗口&#xff0c;因此特地开个系列系统分享下。系列涵盖&#xff1a; Twitter整体推荐系统架构&#xff1a;涵盖图数据挖掘、召回、精排、规则多…...

JAVA多态性测试的基本实验------JAVA入门基础教程

package duotai;public class Person {public void eat(){System.out.println("人吃饭");}public void Pdrink(){System.out.println("人喝水");} }package duotai;public class Man extends Person {public void eat(){System.out.println("男人吃饭…...

小说作者推荐: 妄鸦合集

《惊悚练习生》作品介绍 主人公叫弥赛亚,宗九的小说是《惊悚练习生》&#xff0c;它的作者是妄鸦倾心创作的一本现代耽美、娱乐圈、才女类型的小说&#xff0c;书中主要讲述了&#xff1a;作者&#xff1a;妄鸦 落魄魔术师宗九穿书了他穿到一本恐怖无限流选秀文里&#xff0c…...