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

如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务

文章目录

        • 1.测试环境
        • 2.本地配置
        • 2. 内网穿透
        • 2.1 下载安装cpolar内网穿透
        • 2.2 创建隧道
        • 3. 测试公网访问
        • 4. 配置固定二级子域名
        • 4.1 保留一个二级子域名
        • 4.2 配置二级子域名
        • 5. 使用固定二级子域名进行访问

1.测试环境
  • Maven
  • Spring boot
  • Jdk 1.8
2.本地配置

获取支付宝支付Java SDK,maven项目可以选择maven版本,普通java项目可以在GitHub下载,这里以maven为例

SDK下载地址:https://doc.open.alipay.com/docs/doc.htm?treeId=193&articleId=103419&docType=1

2023011001

选择最新版的SDK版本

2023011002

复制maven坐标,导入spring boot项目pom 文件里面

2023011003
2023011004

打开开发文档:https://opendocs.alipay.com/open/028r8t?scene=22

这里只是单独对电脑网站支付统一收单下单并支付页面接口进行测试.

2023011005

编写一个接口,为了方便演示,创建get请求,订单信息写死在代码中

//支付宝支付接口
@Controller
@RequestMapping("/pay")
public class AlipayTest {private String serverUrl="https://openapi.alipaydev.com/gateway.do";private String appId="2021000122601685";private String privateKey="MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCCk5evhVhZL3kaWEN4ACD+xHoTfn0RqR7aoh2esSTHeca8bV77z4KYUYXH/76uG1ufeYX8CsI68fMTTIxTcvA1F/vctjCkyAS3fjo+DTPpQ5tZpXvJjbNhwXJwrNov/44Dsy727N+b6CAmz5C6vkNipTdekUlHO+6EJmNgMo+ZgYuoEvinP/1JLST6IpcYj/QjGtG8cYStDlx6C3P2Xk7Jv//rOsMbem6bO5v7zZU4E29lVn5mZucxyPqDfRgyz2H++EaNxDRRh6cdVxwntEImpn9Tap+Jv1tTEddI7pOnXqsOwy5lOEJ6r36g48OyXWOLum2x9bxZUs/6tg96VAgMBAAECggEAN7StlqTltHuJNQ2hBe9eQSjKRJmI3y8gQc5C6ZLLNSHXzselaEQHNd6mMjarPhg6zUV8wPH/wuvbsFOcF9tmMkFmxBiyjnGwV1pjYVmafMkpwh7jWkLk9UBLPTEbKN2+wqbuq08Pjc7et2cywRXjn8SrhQ6F47dZBspgkTDQ+PTpQ4unHjUeQVz55K2VitReDZuTNWPCj2DT7UHDaItFTVtG0oNd1mVtcmeS+4Na7WS/3dusUef2v8fpTuTYcNNcoDxYLunL90u3H5AQCnKIkk+hu6qWyuU6eJLj8QgOf82JqZcueFQxFI/8Ahlv/Y3yfdDm5RfrpsgQKBgQDXT9v9inqZPYgQqTOfZwgtU9WLcuO3e8RaKZ8NUl67Y+M4iKoYoms9ZdBFDPdj5BAygncZpTv4wrJ5Fj1gVeuBMWwmf34WkopQwXt+GbmNHPVFe12XzjkyJBGE3dOG3k0hAadWIw4O2Ipx0IqQFzQdiNCU1cSCQKBgQCbQH1260iD0PF/tNvYyq/YDe+I9+NrPgSe6f0gTOSFFo/Ni04T23vxCSdSt8mDlCULx71hxkr7uNYReUCI/ujXijlgyI/MOmd1AsDEfYceBXkEsOVjC4Zf4zYyvqqTArDdS6Hsn+Y3rwwEBa+hhTLvraCHZddbjbY7rlJttQKBgQCT2OiM/ywUUeY+2pJ5aO4FEnAg7hdKwSbKY3v+ynB8kugBq750tcUoGTQVohPaY/y8j1uIfN/pj/bCOTAP/mtrdodEd8ceN+dxXheZ8YcQgwQk7E+tvm4rMH1WGzJ/2KyiTu8AgF/Cd4791L3/NyNdwSLil9vrlwQKBgQCNBsvxllDMzKRTKWr7R0Lss9v/Q45mAHQaFttE2BRNgO0n/X7zMtEnZvU9go2e5JeyV8KEaqf6eTCbtnNnN0VXFwOo+zl7kP5fz5UMz1izUQgxdKD7sI208MmtZAvznhe47V1TDqYxq0KvNi4y64FAgwEuuMqiqFdSP6g4ecQKBgCF4KzJxe0n+intzTGKgt4a8sBDeyjUIPjU3/ujGXbYWzgmHUFtHOIgTMCs8kmkJlI+xgjqnCUNicIr0hfkjtRGTw6Tw0MqDFX1/EfDJp2spv2rQDMZyKCJZwZ2QyZNz2yYdm1ukzxbJI/conKUSsujdhKEZZhchv2MWl2moscwn";private String alipayPublicKey="MIIBIjANBgkqhkiG9QEFAAOCAQ8AMIIBCgKCAQEAhsM/TnpIff7e39eqsCLQwI8fBQ+5lYcFjOrSw7p0ZsMETXXAS677MZTKw5JyHVTieg79708qvaYWZ58jYuViTqpBCnot+cEOnEZcfP3TxeKReAH379bHUVQOz7h3uH0eDcFmi3GjwPBB9lmcJdTI6qD/XObiWJID1e+XYzVgNKC+DXfJ2YN8NEuyRH5Zr862s3C6xd8BAYU1VW9ZfyAssQxILCOwQZ0qDOOq48GAhzDWwPG8oteJX7+lcH1TrnG01SmPiZqkHX6uUW2ye+fZkbW9qjtyujNnADIWNb/D1R2qgAcHsuOVV4hniRQIDAQAB";//创建订单接口@ResponseBody@GetMapping("/create")public String create(){//创建连接AlipayClient alipayClient = new DefaultAlipayClient(serverUrl,appId,privateKey,"json", "UTF-8",alipayPublicKey,"RSA2");AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();//订单信息JSONObject bizContent = new JSONObject();bizContent.put("out_trade_no", "202100012260165");bizContent.put("total_amount", 5.00);bizContent.put("subject", "测试");bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");request.setBizContent(bizContent.toString());AlipayTradePagePayResponse response = null;try {response = alipayClient.pageExecute(request);} catch (AlipayApiException e) {e.printStackTrace();}if(response.isSuccess()){//成功return  response.getBody();} else {//失败return  "调用失败";}}
}

注意配置参数:

  • serverUrl参数的值:

2023011006

  • appId参数的值:

2023011007

  • privateKey 和alipayPublicKey的值:

2023011008
2023011009

配置好参数值后,接着我们启动springboot项目,这里配置的tomcat使用8080端口

2023011010

启动成功后,打开浏览器访问我们上面编写的接口地址:http://localhost:8080/pay/create,出现支付宝界面表示成功.如果失败,检查配置的参数!

2023011011

2. 内网穿透

以上调用sdk创建支付单的服务运行在本地,局限性在于只能本地的项目才能调用测试支付的接口,如果想要远程也可以调用,需要把服务暴露到公网。

而Cpolar是一款内网穿透工具,它支持http/https/tcp协议,不限制流量,操作简单,无需公网IP,也无需路由器,可以轻松把服务暴露到公网访问。

cpolar官网:https://www.cpolar.com/

2.1 下载安装cpolar内网穿透

访问cpolar官网,注册一个账号,并下载安装cpolar客户端。详细可以参考文档教程进行下载安装。

20230116162253

2.2 创建隧道

cpolar安装成功后,我们在浏览器上访问本地9200端口,登录Cpolar的web ui界面:http://localhost:9200。

点击左侧仪表盘的隧道管理——创建隧道,由于tomcat中配置的是8080端口,因此我们要来创建一条http隧道,指向8080端口:

  • 隧道名称:可自定义,注意不要与已有隧道名称重复
  • 协议:http协议
  • 本地地址:8080
  • 域名类型:免费选择随机域名
  • 地区:选择China top

点击创建

2023011012

点击左侧仪表盘的状态——在线隧道列表,可以看到刚刚创建的隧道已经有生成了相应的公网地址,一个http协议,一个https协议(免去配置ssl证书的繁琐步骤),将其复制想下来

2023011013

3. 测试公网访问

打开浏览器输入复制的公网地址+接口路径 进行访问,出现支付宝页面表示访问成功

20230116161201

202301161609

4. 配置固定二级子域名

由于以上使用cpolar所创建的隧道使用的是随机公网地址,该地址24小时内会发生变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上。【cpolar.cn已备案】

4.1 保留一个二级子域名

访问Cpolar官网,登录cpolar官网后台,点击左侧的预留,找到保留二级子域名:

  • 地区:选择China VIP
  • 二级域名:可自定义填写
  • 描述:即备注,可自定义填写

点击保留

2023011015

提示子域名保留成功,复制所保留的二级子域名

2023011016

4.2 配置二级子域名

访问http://127.0.0.1:9200/,登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到支付接口测试隧道,点击右侧的编辑

2023011017

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新

2023011018

更新完后,再次打开在线隧道列表,此时可以看到,隧道变成了固定的二级子域名,复制该域名

2023011019

5. 使用固定二级子域名进行访问

打开浏览器输入刚刚配置成功的固定二级子域名+接口路径进行访问,出现支付宝页面表示访问成功

2023011020

填写账户名和支付密码测试,账户名和支付密码登录控制台查看

2023011021

选择测试账户的余额进行支付,支付密码在控制台能看到

2023011022
2023011023

支付成功

2023011024

相关文章:

如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务

文章目录 1.测试环境2.本地配置2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道3. 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名5. 使用固定二级子域名进行访问 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,…...

[EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 Dell Latitude-7400 处理器Intel Core i7-8665U已驱动内存16GB DDR4 RAM已驱动硬盘Toshiba KIOXIA 512GB SSD已驱动显卡Intel UHD 620 Graphics已驱动声卡Realtek ALC256已驱动有线网卡 无 无无线网卡蓝牙Intel Wireless-AC 9560已驱动 支持系统版本 maco…...

用芯片SIC8833可开发电子秤方案

SIC8833作为一款高性能的电子秤方案芯片,这款芯片是一个带24bitADC的8位RISC MCU,内置8k16位OTP程序存储器。具体24位双向I/O口的特性,广泛应用于电子衡器和精密测量及控制系统,能满足用户的不同需求和应用场景。 以下是电子秤方案…...

【Qt-QFile-QDir】

Qt编程指南 ■ Stream■ QTextStream■ QDataStream ■ QDial■ QDir■ QFile■■ ■ Stream ■ QTextStream /* 获取文件的路径 */ QString fileName QFileDialog::getOpenFileName(this);/* 指向文件 */ file.setFileName(fileName);/* 判断文件是否存在 */ if (!file.exi…...

设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…...

Android 13 - Media框架(25)- OMXNodeInstance(二)

上一节我们了解了 OMXNodeInstance 的创建过程,以及 IOmx 服务和 OMXNodeInstance、OMX组件之间的联系。接下来我们将一起了解 ACodec 是如何通过 OMXNodeInstance 这个中间层进行端口定义设置,以及端口Buffer分配的。 OMXNodeInstance 的代码还是比较长…...

生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用

V.PhyloMaker2是一个R语言的工具包,专门用于构建和分析生物系统学中的进化树(也称为系统发育树或phylogenetic tree)。以下是对V.PhyloMaker2的一些基本介绍和使用说明: 论文介绍:V.PhyloMaker2: An updated and enla…...

XStream 反序列化漏洞 CVE-2021-39144 已亲自复现

XStream 反序列化漏洞 CVE-2021-39144 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建 修复建议总结 漏洞名称 漏洞描述 在Unmarshalling Time处包含用于重新创建前一对象的类型信息。XStream基于这些类型的信息创建新实例。攻击者可以控制输入流并替换或注入对象&am…...

深入剖析LinkedList:揭秘底层原理

文章目录 一、 概述LinkedList1.1 LinkedList简介1.2 LinkedList的优点和缺点 二、 LinkedList数据结构分析2.1 Node节点结构体解析2.2 LinkedList实现了双向链表的原因2.3 LinkedList如何实现了链表的基本操作(增删改查)2.4 LinkedList的遍历方式 三、 …...

计算机网络复习-OSI TCP/IP 物理层

我膨胀了,挂我啊~ 作者简介: 每年都吐槽吉师网安奇怪的课程安排、全校正经学网络安全不超20人情景以及割韭菜企业合作的FW,今年是第一年。。 TCP/IP模型 先做两道题: TCP/IP协议模型由高层到低层分为哪几层: 这题…...

虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤

网络技术的不断发展也为网络威胁带来了安全隐患,近期,对于许多大型企业来说,许多企业的虚拟机服务器系统遭到了lockbit2.0/3.0勒索病毒攻击,导致企业所有计算机系统瘫痪,无法正常工作,严重影响了企业的正常…...

【MATLAB】 RGB和YCbCr互转

前言 在视频、图像处理领域经常会遇到不同色域图像的转换,比如RGB、YUV、YCbCr色域间的转换,这里提供一组转换公式,供大家参考。 色彩模型 RGB RGB色彩模型是一种用于表示数字图像的颜色空间,其中"RGB"代表红色&…...

【线性代数】决定张成空间的最少向量线性无关吗?

答1: 是的,张成空间的最少向量是线性无关的。 在数学中,张成空间(span space)是一个向量空间,它由一组向量通过线性组合(即每个向量乘以一个标量)生成。如果这组向量是线性无关的&…...

暴力破解(Pikachu)

基于表单的暴力破解 先随便输入一下,然后抓包,进行字典爆破 验证码绕过(on server) server服务端要输入正确的验证码后进行爆破 之后的操作没什么不一样 验证码绕过(on client) 这个也需要输入验证码,但是后面进行字典爆破的时候&#xf…...

如何使用CMake查看opencv封装好的函数

当我们有时想查看opencv自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCreateImage的一个简单声明,而没有源代码呢?这是因为openCV将很多…...

微盛·企微管家:用户运营API集成,电商无代码解决方案

连接电商平台的新纪元:微盛企微管家 随着电子商务的蓬勃发展,电商平台的高效运营已经成为企业成功的关键。在这个新纪元里,微盛企微管家以其创新的无代码开发连接方案,成为企业之间连接电商平台的强大工具。它允许企业轻松集成电…...

Hive 部署

一、介绍 Apache Hive是一个分布式、容错的数据仓库系统,支持大规模的分析。Hive Metastore(HMS)提供了一个中央元数据存储库,可以轻松地进行分析,以做出明智的数据驱动决策,因此它是许多数据湖架构的关键组…...

CopyOnWriteArrayList源码阅读

1、构造方法 无参构造函数 //创建一个空数组,赋值给array引用 public CopyOnWriteArrayList() {setArray(new Object[0]); }//仅通过getArray / setArray访问的数组。 private transient volatile Object[] array;//设置数组 final void setArray(Object[] a) {arra…...

Windows操作系统:共享文件夹,防火墙的设置

1.共享文件夹 1.1 共享文件夹的优点 1.2 共享文件夹的优缺点 1.3 实例操作 ​编辑 2.防火墙设置 2.1 8080端口设置 3.思维导图 1.共享文件夹 1.1 共享文件夹的优点 优点 协作和团队合作:共享文件夹使多个用户能够在同一文件夹中协作和编辑文件。这促进了团…...

STM32独立看门狗

时钟频率 40KHZ 看门狗简介 STM32F10xxx 内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看 门狗设备 ( 独立看门狗和窗口看门狗 ) 可用来检测和解决由软件错误引起的故障;当计数器达到给 定的超时值时,触发一个中…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...