微信公众号本地开发调试 - 无公网IP —— 内网穿透

news2024/12/23 16:32:20

文章目录

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

前言

在微信公众号开发中,微信要求开发者需要拥有自己的服务器资源来响应微信发送的token验证,这个服务器只能通过域名访问,不能使用ip地址来进行访问,如果购买服务器,再购买域名,将是一笔比较大的开销,如果能将本地服务暴露出去,再使用域名去访问,不仅能简化配置,还能减少开销,达到快速开发的效果。

幸运的是,Cpolar帮您搞定这一点。 启动Cpolar并将隧道的URL粘贴到微信公众号对接服务器的URL字段中,完成!

转载自cpolar极点云文章 微信公众号开发:对接本地开发环境【内网穿透】

1. 配置本地服务器

创建本地服务,这里以java服务为例,环境配置:

  • JDK1.8
  • maven
  • springboot
  • tomcat

根据微信开发者文档的接入指南中要求,对微信的发送的get请求参数进行加密对比

202301161502

在springboot服务controller编写一个微信验证的接口,根据要求获取微信传入的参数进行处理

/**
 * 微信服务调用接口
 */
@Controller
@RequestMapping("/wechat")
public class WeChatTest {

    private static String wxToken="flzabc123";

    @GetMapping("")
    public void weChatTestV(HttpServletRequest request, HttpServletResponse response) {

        // 1、验证消息的确来自微信服务器
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");

        //将微信echostr返回给微信服务器
        try(OutputStream os = response.getOutputStream()) {
            String sha1 = getSHA1(wxToken, timestamp, nonce, "");

            //和signature进行对比
            if (sha1.equals(signature)){
            // 返回echostr给微信
                os.write(URLEncoder.encode(echostr, "UTF-8").getBytes());
                os.flush();
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 用SHA1算法生成安全签名
     *
     * @param token     票据
     * @param timestamp 时间戳
     * @param nonce     随机字符串
     * @param encrypt   密文
     * @return 安全签名
     * @throws Exception
     */
    public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws Exception {
        try {
            String[] array = new String[]{token, timestamp, nonce, encrypt};
            StringBuffer sb = new StringBuffer();
            // 字符串排序
            Arrays.sort(array);
            for (int i = 0; i < 4; i++) {
                sb.append(array[i]);
            }
            String str = sb.toString();
            // SHA1签名生成
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            md.update(str.getBytes());
            byte[] digest = md.digest();
            StringBuffer hexstr = new StringBuffer();
            String shaHex = "";
            for (int i = 0; i < digest.length; i++) {
                shaHex = Integer.toHexString(digest[i] & 0xFF);
                if (shaHex.length() < 2) {
                    hexstr.append(0);
                }
                hexstr.append(shaHex);
            }
            return hexstr.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }



}

编写好接口后,接着启动服务,启动springboot,这里暴露的是8080端口

202301161502

2. 内网穿透

这里我们使用cpolar内网穿透,将本地服务映射到公网,无需公网ip,也不用设置路由器,操作非常简单。【cpolar.cn已备案】

2.1 下载安装cpolar内网穿透

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

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

20230116153634

2.2 创建隧道

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

点击左侧仪表盘的隧道管理——创建隧道,我们来创建一条隧道,将在本地8080端口下的web服务映射到公网:

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

点击创建

202301161503

提示隧道创建成功后,页面自动跳转至隧道列表,可以看到刚刚创建成功的tunnel-1隧道,状态active,表示为正常在线,注意无需再次点击启动。

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

202301161504

3. 测试公网访问

打开微信公众平台公众号页面,点击下面的基本配置,在URL框中填写复制的公网地址,

202301161505

出现提交成功表示验证成功

202301161506

点击启用服务器配置,出现操作成功表示启用成功

202301161507

4. 固定域名

由于以上配置的公网地址使用的是随机地址,在24小时内会随机变化,为了使服务更稳定运行,建议必须配置固定域名地址。

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

4.1 保留一个二级子域名

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

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

点击保留

202301161508

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

202301161509

4.2 配置二级子域名

访问http://127.0.0.1:9200/,登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到刚刚创建的http微信开发隧道,点击右侧的编辑

202301161510

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

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

点击更新

202301161511

更新完后,再次打开在线隧道列表,此时可以看到,隧道变成了固定的二级子域名,名称是我们在官网保留的wechat,然后复制该域名

202301161512

5. 使用固定二级子域名进行微信开发

打开微信公众平台——公众号页面,点击基本配置,修改URL的值,修改前需要点击停用服务器配置,替换后点击提交

202301161513

出现提交成功表示替换成功

202301161514

接着,点击启动服务器配置,出现操作成功表示成功,接下来就可以使用本地服务器进行微信开发啦

202301161515

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考:中级软件设计师:进程死锁,死锁的预防和避免,银行算法家,

软考&#xff1a;中级软件设计师:进程死锁 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

STM32:使用RS485和多摩川编码器通信

本文主要讲使用STM32F767和绝对式多摩川TS5700N8501编码器通信的流程和注意事项。 首先使用STM32CubeMX生成RS485驱动部分功能代码&#xff0c;注意该款编码器的波特率是2.5Mbps。 注意使能的GPIO可以使用其他管脚&#xff0c;我们的主控板使用的是PA8。前期可以这么配置。 配…

zabbix的安装

前提 作为一个运维&#xff0c;需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等&#xff0c;利用监控系统的数据去了解网站上线发布的结果和健康状态。 利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器…

Linux—实操篇:用户管理

1、基本介绍 Linux系统是一个多用户多任务的操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员申请一个 账号&#xff0c;然后以这个账号的身份进入系统。 2、添加用户 基本语法&#xff1a; useradd 用户名 细节说明&#xff1a; 1、…

【Kafka】Kafka基础操作笔记

【Kafka】Kafka基础操作笔记 文章目录 【Kafka】Kafka基础操作笔记1. 两种模式1.1 点对点模式1.2 发布/订阅模式 2. 基础架构3. Topic命令行操作3.1 查看 Topic 操作3.2 创建 Topic3.3 查看所有 Topic3.4 查看 Topic 的详情3.5 修改分区数3.6 删除 Topic 1. 两种模式 Kafka作为…

Linux设备驱动基础04:Linux设备驱动中的互斥与同步(部分)

1 并发与竞态 1.1 竞态概念 1. 并发&#xff08;Concurrency&#xff09;是指多个执行单元在同一时间段内执行&#xff08;但并不一定在同一时刻&#xff09;&#xff0c;而并发的执行单元对共享资源&#xff08;包括硬件资源和软件资源&#xff09;的访问就会导致竞态&#…

期货程序化交易软件文华财经和无限易那个成交速度快?自编软件能不能接CTP通道?

期货程序化交易软件是指可以根据预设的策略和条件&#xff0c;自动执行买卖指令的软件。期货程序化交易软件有很多种&#xff0c;不同的软件有不同的特点和优劣&#xff0c;选择哪一种要根据自己的需求和偏好。 期货程序化交易是指将交易思路用编程语言编写成计算机可以执行的指…

Zabbix 6.0 介绍及部署

目录 一、Zabbix 6.0 介绍1. 简介2. **利用一个优秀的监控软件带来的好处**3. **zabbix 6.0 的功能组件**4.zabbix 监控原理 二、Zabbix 6.0 部署 一、Zabbix 6.0 介绍 1. 简介 Zabbix 是由 Alexei Vladishev 创建&#xff0c;目前是由 Zabbix SIA 在持续开发和提供支持。zab…

2023秋招,软件测试面试八股文(有答案版),金九银十季,涨薪涨薪

最近呢有很多的小伙伴问我有没有什么软件测试的面试题&#xff0c;由于笔者之前一直在忙工作上的事情&#xff0c;没有时间整理面试题&#xff0c;刚好最近休息了一下&#xff0c;顺便整理了一些面试题&#xff0c;现在就把整理的面试题分享给大家&#xff0c;希望可以帮助到各…

途乐证券|指数反弹上行周期仍未结束 建议继续做多

股票的开盘价通常可以表示商场的情绪&#xff0c;一起还能影响投资者进行决策。那么股票低开好仍是高开好&#xff1f;股票低开高走再回落是什么意思&#xff1f;下面为我们预备了相关内容&#xff0c;以供参考。 股票低开好仍是高开好&#xff1f; 股票高开比较好。股票高开阐…

kali安装安全漏洞扫描工具Snyk

进kali&#xff0c;sudo su进入root用户 apt install npm 下载npm sudo npm install -g snyk 安装snyk snyk auth进行授权&#xff0c;会自动跳转到一个网页&#xff0c;我选的是github授权。 如果github上不去的话&#xff0c;物理机上面科学上网开个全局就行了&#xff0c;…

WWW(URL,HTTP,HTML)

1.WWW 万维网(World Wide Web&#xff0c;WWW)&#xff0c;是一个规模巨大、可以互联的资料空间。该资料空间的资源依靠URL进行定位&#xff0c;通过HTTP协议传送给使用者&#xff0c;又由HTML来进行文档的展现。由定义可以知道WWW的核心由三个主要标准构成:URL、HTTP、HTML。(…

软件设计模式与体系结构-设计模式-行为型软件设计模式-访问者模式

目录 二、访问者模式概念代码类图实例一&#xff1a;名牌运动鞋专卖店销售软件实例二&#xff1a;计算机部件销售软优缺点适用场合课程作业 二、访问者模式 概念 对于系统中的某些对象&#xff0c;它们存储在同一个集合中&#xff0c;具有不同的类型对于该集合中的对象&#…

力扣算法练习(三)

目录 1. N 字形变换&#xff08;6&#xff09; 题解一&#xff08;力扣官方解析力扣&#xff09; 题解二&#xff08;官方解法&#xff09; 题解三&#xff08;力扣&#xff09; 2. 整数反转&#xff08;7&#xff09; 题解一 题解二 题解三&#xff08;官方解析&#…

车辆在刹车不及时导致与行人发生碰撞事故,产生出险记录

车辆在刹车不及时导致与行人发生碰撞事故&#xff0c;是一种常见的交通事故。当发生此类事故时&#xff0c;车主需要及时处理保险理赔事宜&#xff0c;同时也需要了解车辆出险、理赔、事故记录情况&#xff0c;以便更好地维护车辆和自身权益。为方便车主查询车辆出险、理赔、事…

UI自动化测试工具能够做的几件事情

UI自动化测试工具在软件开发过程中发挥着重要的作用。它们可以帮助测试人员自动执行各种用户界面操作&#xff0c;验证界面功能和性能&#xff0c;提高测试效率和质量。本文将介绍UI自动化测试工具能够做的几件事情&#xff0c;并解释为什么它们对测试人员来说非常有价值。 首先…

UE5 plugin failed to load because module could not be found

解决方法&#xff1a;将提示缺少的插件加入到.uproject中即可解决

Liunx系统编程:系统层面上的文件IO接口

目录 一. 如何在系统层面上理解文件 二. 语言层面上的文件IO函数 三. Linux操作系统提供的IO接口 3.1 open接口 -- 打开文件 3.2 close接口 -- 关闭文件 3.3 write接口 -- 向文件中写内容 3.4 read接口 -- 从文件中读取内容 四. 总结 一. 如何在系统层面上理解文件 在L…

axios文件上传和 Content-Type类型介绍

Content-Type的作用是什么&#xff1f; Content-Type: 用于在请求头部指定资源的类型和字符编码。 请求头中的content-type&#xff0c;就是 B端发给S端的数据类型描述 。 即告诉服务器端&#xff0c;我给你传的数据是某种类型的。 服务器端针对不同类型的数据&#xff0c;做法…

分布式监控Zabbix的部署

zabbix 6.0 一、zabbinxzabbix的简介Zabbix 6.0 功能组件zabbix的监控原理zabbix 6.0的特性 二、zabbix 6.0 部署部署 Nginx PHP 环境并测试部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本编译安装 zabbix Server 服务端部署 Web 前端&#xff0c;进行访问…