使用支付宝的沙箱环境在本地配置模拟支付并发布至公网调试

在这里插入图片描述

文章目录

  • 前言
  • 1. 下载当面付demo
  • 2. 修改配置文件
  • 3. 打包成web服务
  • 4. 局域网测试
  • 5. 内网穿透
  • 6. 测试公网访问
  • 7. 配置二级子域名
  • 8. 测试使用固定二级子域名访问
  • 9. 结语

前言

在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境中有多种支付场景,往往是多人联合开发,本地环境可能无法满足异地联合,所以把本地环境变成公网环境下进行调试开发会更好。

本次教程,我们将使用支付宝平台提供的沙箱环境,在本地配置测试模拟支付,并做内网穿透,通过cpolar穿透内网,实现在公网环境下的远程访问,无需公网IP,也无需配置路由器。

1. 下载当面付demo

进入支付宝开放平台沙箱应用(https://open.alipay.com/develop/sandbox/app),查看产品列表–>已支持的产品,选择一种支付场景,这里选择 当面付,然后点击查看文档

2023010901

然后下载官方提供demo,有三种语言,这里以java语言为例,下载java版demo

2023010902

2. 修改配置文件

demo下载好后,把TradePayDemoTradePaySDK两个模块倒入开发工具中,这里以IDEA开发工具为例,需要注意,官方要求的JDK版本是1.6

2023010903

倒入并且设置好JDK版本后,打开TradePayDemo下面的zfbinfo.properties配置文件,填写对应的信息

2023010904

注意配置文件情况:

  • 第一个配置信息open_api_domain的值需要设置成支付宝开发平台以下对应的值

2023010905

  • pid和appid对应以下信息

2023010906

  • private_keypublic_keyalipay_public_key分别对应以下信息

2023010907

202301090801

修改好配置文件后,在Main启动类,右键运行mian方法运行测试配置文件是否正确,出现下单成功表示配置文件正确

2023010909

3. 打包成web服务

接下来把TradePayDemo这个web项目打包成web服务.

2023010910

2023010911

2023010912

接着右键重新运行Main类的main方法

2023010913

然后在输出的路径上可以看到出现了一个.war的web war包

2023010914

接下来把这个war包放在tomcat中的webapps目录下运行.(这里tomcat版本为8.5.84)

2023010915

运行tomcat

2023010916

2023010917

4. 局域网测试

在浏览器上输入http://localhost+:端口号/TradePayDemo_war exploded/index.html,访问支付页面,出现如下界面表示成功

2023010918

5. 内网穿透

接着使用cpolar穿透本地支付宝支付沙箱环境demo,使得远程可以进行访问沙箱环境进行测试。cpolar支持http/https/tcp协议,不限制流量,操作简单,无需公网IP,也无需路由器。

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

在本地安装cpolar内网穿透之后,在浏览器上访问本地9200端口,打开cpolar web ui 界面:http://127.0.0.1:9200。

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

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

点击创建

2023010919

隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址,将其复制下来

2023010920

6. 测试公网访问

打开浏览器,访问刚刚复制的公网地址,出现如下界面表示公网访问成功

2023010921

7. 配置二级子域名

由于以上使用cpolar所创建的隧道使用的是随即公网地址,该地址为随机临时地址,24小时内会发生变化,不利于长期远程访问。

因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

需要注意,配置固定二级子域名需要将cpolar升级到基础套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留

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

地址保留成功后,将其复制下来,本例为alipayTest

2023010922

访问本地9200端口,打开cpolar web ui 界面,点击左侧的隧道管理——隧道列表,找到支付接口测试隧道,点击右侧的编辑

2023010923

修改隧道信息:

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

点击更新

2023010924

点击左侧的状态——打开在线隧道列表,可以看到公网地址已经更新成为了二级子域名,复制对应的公网地址

2023010925

8. 测试使用固定二级子域名访问

我们打开浏览器,访问我们刚刚配置成功的固定二级子域名,出现如下信息表示成功。

2023010926

9. 结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,春人的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是春人前进的动力!
在这里插入图片描述

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

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

相关文章

java--ArrayList快速入门

1.什么是集合&#xff1f; 集合是一个容器&#xff0c;用来装数据的&#xff0c;类似于数组。 2.有数组&#xff0c;为啥还学习集合 ①数组定义完成并启动后&#xff0c;长度是固定了。 ②集合大小可变&#xff0c;开发中用的更多。 3.ArrayList<E> 是用的最多、最…

OpenStack-train版安装之基础组件安装

基础组件安装 安装MariaDB&#xff08;数据库&#xff09;安装RabbitMQ&#xff08;消息队列&#xff09;安装Memcached&#xff08;缓存&#xff09; 安装MariaDB&#xff08;数据库&#xff09; 安装 # yum install mariadb mariadb-server python2-PyMySQL -y数据库配置 …

公益众筹模式源码模式:水滴筹模式 实现社会价值的最大化 附带完整的搭建教程

随着社会的进步和互联网技术的发展&#xff0c;公益众筹作为一种有效的筹款方式&#xff0c;越来越受到人们的关注。其中&#xff0c;水滴筹模式以其独特的运营方式和强大的社交功能&#xff0c;逐渐成为了公益众筹领域的一种重要模式。该源码系统就是在这样的背景下应运而生&a…

洗地机哪个牌子好用?洗地机选购攻略

传统的清洁方式都是扫把拖把的结合&#xff0c;既繁琐也劳累&#xff0c;每次清洁完后还得累的腰酸背痛的&#xff0c;像厨房这种地方甚至会不容易清洁干净&#xff0c;总感觉地板灰蒙蒙的。洗地机的诞生就很好的解决了这些问题&#xff0c;不用一遍遍的重复扫地拖地擦地&#…

vue一个页面左边是el-table表格 当点击每条数据时可以在右边界面编辑表格参数,右边保存更新左边表格数据

实现思路&#xff1a; 1.点击当前行通过row拿到当前行数据。 2.将当前行数据传给子组件。 3.子组件监听父组件传过来的数据并映射在界面。 4.点击保存将修改的值传给父组件更新表格。 5.父组件收到修改过后的值&#xff0c;可以通过字段判断比如id&#xff0c;通过 findIn…

volatile 详解

目录 一. 前言 二. 可见性 2.1. 可见性概述 2.2. 内存屏障 2.3. 代码实例 三. 不保证原子性 3.1. 原子性概述 3.2. 如何解决 volatile 的原子性问题呢&#xff1f; 四. 禁止指令重排 4.1. volatile 的 happens-before 关系 4.2. 代码实例 五. volatile 应用场景 5…

JOSEF 漏电继电器 LLJ-100FG φ45 50-500mA 卡轨安装

系列型号&#xff1a; LLJ-10F(S)漏电继电器LLJ-15F(S)漏电继电器LLJ-16F(S)漏电继电器 LLJ-25F(S)漏电继电器LLJ-30F(S)漏电继电器LLJ-32F(S)漏电继电器 LLJ-60F(S)漏电继电器LLJ-63F(S)漏电继电器LLJ-80F(S)漏电继电器 LLJ-100F(S)漏电继电器LLJ-120F(S)漏电继电器LLJ-125F(S…

Linux基础命令4

find查找操作 1.文件名 上图中&#xff0c;一共有4个部分&#xff0c;分别是find&#xff0c;搜索路径&#xff0c;-name&#xff0c;文件名 find加上文件的路径&#xff08;也就是要查找的文件在根目录下的usr目录下的bin目录底下&#xff09; 加上 -name 加上文件名&a…

如何用网格交易做ETF套利

ETF套利是指利用ETF基金的交易机制&#xff0c;通过短期的买卖差价或组合投资来获取利润。 具体来说&#xff0c;ETF套利最常用的套利方法则是&#xff1a;价格套利和波动套利。 1. 价格套利&#xff1a;当ETF二级市场的价格与一级市场的净值出现偏差时&#xff0c;投资者可以通…

消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

前言 本章我们来一次快速入门RabbitMQ——生产者与消费者。需要构建一个生产端与消费端的模型。什么意思呢&#xff1f;我们的生产者发送一条消息&#xff0c;投递到RabbitMQ集群也就是Broker。 我们的消费端进行监听RabbitMQ&#xff0c;当发现队列中有消息后&#xff0c;就进…

CS2的到来会对csgo产生什么影响?

从左手持枪到教练观战位&#xff0c;周四更新的CS新版本缺乏CSGO里很多关键功能。社区服务器和创意工坊地图&#xff0c;目前最重要的功能缺失是创意工坊地图和社区服务器。这些社区制作的地图长期以来一直是玩家磨练技能的首选场所&#xff0c;从死斗服务器到用来练习瞄准、跑…

动态loading

项目中需要用到动图loading的地方可以下载 https://www.intogif.com/loading/ 高级点的还有css动画;692 Loaders: CSS & Tailwind 692 Loaders: CSS & Tailwind

【带头学C++】----- 八、C++面向对象编程 ---- 8.1 面向对象编程概述

目录 8.1 面向对象编程概述 8.1.1 面向对象概念&#xff08;OOP&#xff09; 8.1.2 面向过程概念 8.1 面向对象编程概述 8.1.1 面向对象概念&#xff08;OOP&#xff09; 面向对象&#xff08;Object-Oriented&#xff09;是一种编程范式&#xff0c;它将程序设计中的数据和…

section header

section header table 是一个section header的集合&#xff0c;每个section header是一个描述section的结构体。在同一个ELF文件中&#xff0c;每个section header大小是相同的。 每个section都有一个section header描述它&#xff0c;但是一个section header可能在文件中没有…

创新建筑形式:气膜体育馆助力校园体育设施革新

体育场馆在校园中扮演着重要的角色&#xff0c;是学生们进行体育锻炼、比赛和各类体育活动的场所。传统的室内体育馆建设往往需要大量资金和漫长的建设周期&#xff0c;但随着气膜体育馆的崭露头角&#xff0c;校园体育设施的面貌正迎来一场革新。 快速搭建&#xff0c;灵活性极…

虚拟机系列:windows 虚拟机相关功能、组件梳理

一. 简介 英文名称中文名称说明Container容器Guarded Host受保护的主机利用远程证明创建并运行受防护的虚拟机Hyper-V├Hyper-V Management ToolsHyper-V 管理工具包含 GUI 管理工具和 Power Shell 的 Hyper-V 模块└Hyper-V PlatformHyper-V 平台├Hyper-V HypervisorHyper-V …

浅谈JDK动态代理(上)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 到目前为止&#xff0c…

基于 Flink SQL 和 Paimon 构建流式湖仓新方案

本文整理自阿里云智能开源表存储负责人&#xff0c;Founder of Paimon&#xff0c;Flink PMC 成员李劲松在云栖大会开源大数据专场的分享。本篇内容主要分为四部分&#xff1a; 数据分析架构演进介绍 Apache PaimonFlink Paimon 流式湖仓流式湖仓Demo演示 数据分析架构演进 …

Flutter 父子组件通信

在Flutter 中父组件调用子组件的方法可以通过GlobalKey实现&#xff0c;而子组件调用父组件方法可以通过回调函数实现。 父组件 class _MyHomePageState extends State<MyHomePage> {final GlobalKey<LoadPencilState> loadPencilKey GlobalKey<LoadPencilSt…

在 Python 的 requests 二进制数据的传输方式发生了变化

在Python编程中&#xff0c;requests库是一个非常有用的工具&#xff0c;用于发送HTTP请求。由于其简单易用的API和广泛的兼容性&#xff0c;requests库已经成为Python开发者中最常用的网络请求库之一。 然而&#xff0c;最近在requests 0.10.1版本中&#xff0c;POST二进制数据…