微信公众号开发(一)打通服务器与微信之间的通信

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 说来惭愧PHP做了这么久,好像就没有从头开发过一个微信公众号,这次刚好有机会从头接入开发一个完整的公众号,也不能说完整,但是这些微信的接口我基本上都试一试~看看大概是什么情况。首先:打通服务器与微信之间的通信。

说来惭愧PHP做了这么久,好像就没有从头开发过一个微信公众号,这次刚好有机会从头接入开发一个完整的公众号,也不能说完整,但是这些微信的接口我基本上都试一试~看看大概是什么情况。

首先:打通服务器与微信之间的通信。

我这里主要使用的框架是thinkphp5

首先,去百度上找一个微信公众号的类。这种资源很多,基本上找一个就行,下边我是用我找的类中的方法介绍,文末有资源可下载。我这里只贴部分这里需要使用到的代码。

Weixin.php

php

复制代码

/**
   * @name: 验证服务器地址有效性
   * @author: camellia
   * @date: 20200711
   * @email:805795955@qq.com
   * @param:  $TOKEN  string  签名字符串
   * @return: data  type  description
   */
  public function valid($TOKEN)
  {
    $res = $this->checkSignature($TOKEN);
    if($res)
    {
      $echostr = $_GET['echostr'];//随机的字符串
      return $echostr;
    }
    else
    {
      return "Error";
    }
  }
  /**
   * @name: 检查签名
   * @desc: 描述
   * @author: camellia
   * @date: 20200711
   * @email:805795955@qq.com
   * @param:  $TOKEN  string  签名字符串
   * @return: data  type  description
   */
  protected function checkSignature($TOKEN)
  {
    if(empty($_GET))
    {
      return false;
    }
    //一、接收微信服务器GET方式提交过来的4个参数数据
    $signature = $_GET['signature'];//微信加密签名
    $timestamp = $_GET['timestamp'];//时间戳
    $nonce = $_GET['nonce'];//随机数
    //二、加密/校验过程
    // 1. 将token、timestamp、nonce三个参数进行字典序排序;
    // bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 对数组排序
    $tmpArr = array($TOKEN,$timestamp,$nonce);//将上面三个参数放到一个数组里面
    sort($tmpArr,SORT_STRING);
    // 2. 将三个参数字符串拼接成一个字符串进行sha1加密;
    $tmpStr = implode($tmpArr); //将数组转化成字符串
    $signatureStr = sha1($tmpStr);
    // 3. 开发者获得加密后的字符串与signature对比。
    if($signatureStr == $signature)
    {
      return true;
    }
    else
    {
      return false;
    }
  }

调用:

ini

复制代码

/**
     * 验证微信接口
     */
    public function checkSignature()
    {
        $TOKEN = 'es3b3t41mk3matoji1tgortbctcoxiid';
        $weixin = new weixin();
        //var_dump($weixin); die;
        $res = $weixin->valid($TOKEN);
        echo $res;    
    }

上文中设置的$TOKEN的值,需要和微信公众平台开发配置的相同。如下图所示:

image.png

服务器地址配置你刚刚能访问到你调用的接口的地址,令牌(Token)就是一个随机字符串,啥都可以,但是复杂度最好高点,毕竟看着高级点。

当然这部分微信官方是有文档的,但是微信这个文档吧,第一次做能不能看明白,就得看你自己的了,想看请移步《微信官方文档

至此,服务器链接打通。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
6月前
|
Java
Java Socket编程与多线程:提升客户端-服务器通信的并发性能
【6月更文挑战第21天】Java网络编程中,Socket结合多线程提升并发性能,服务器对每个客户端连接启动新线程处理,如示例所示,实现每个客户端的独立操作。多线程利用多核处理器能力,避免串行等待,提升响应速度。防止死锁需减少共享资源,统一锁定顺序,使用超时和重试策略。使用synchronized、ReentrantLock等维持数据一致性。多线程带来性能提升的同时,也伴随复杂性和挑战。
112 0
|
2月前
|
存储 监控 NoSQL
Redis的实现二: c、c++的网络通信编程技术,让服务器处理多个client
本文讨论了在C/C++中实现服务器处理多个客户端的技术,重点介绍了事件循环和非阻塞IO的概念,以及如何在Linux上使用epoll来高效地监控和管理多个文件描述符。
36 0
|
4月前
|
API Windows
揭秘网络通信的魔法:Win32多线程技术如何让服务器化身超级英雄,同时与成千上万客户端对话!
【8月更文挑战第16天】在网络编程中,客户/服务器模型让客户端向服务器发送请求并接收响应。Win32 API支持在Windows上构建此类应用。首先要初始化网络环境并通过`socket`函数创建套接字。服务器需绑定地址和端口,使用`bind`和`listen`函数准备接收连接。对每个客户端调用`accept`函数并在新线程中处理。客户端则通过`connect`建立连接,双方可通过`send`和`recv`交换数据。多线程提升服务器处理能力,确保高效响应。
59 6
|
4月前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
5月前
|
小程序
尝试使用阿里云服务器搭建微信小程序
华北电力大学核工程大一学生,出于对编程的热爱与大创项目需求,涉足微信小程序搭建。初期在实验指导下克服不熟悉编程的困难,但后期发现教程引导不足,尤其是对于代码定位缺乏清晰指引。建议加强网页图像指导,以适应不同编程水平用户,尤其是新手。
尝试使用阿里云服务器搭建微信小程序
|
4月前
|
运维 安全 网络安全
运维笔记:基于阿里云跨地域服务器通信
运维笔记:基于阿里云跨地域服务器通信
197 1
|
4月前
|
网络协议 C# 开发者
WPF与Socket编程的完美邂逅:打造流畅网络通信体验——从客户端到服务器端,手把手教你实现基于Socket的实时数据交换
【8月更文挑战第31天】网络通信在现代应用中至关重要,Socket编程作为其实现基础,即便在主要用于桌面应用的Windows Presentation Foundation(WPF)中也发挥着重要作用。本文通过最佳实践,详细介绍如何在WPF应用中利用Socket实现网络通信,包括创建WPF项目、设计用户界面、实现Socket通信逻辑及搭建简单服务器端的全过程。具体步骤涵盖从UI设计到前后端交互的各个环节,并附有详尽示例代码,助力WPF开发者掌握这一关键技术,拓展应用程序的功能与实用性。
150 0
|
4月前
|
Java
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
|
5月前
|
SQL DataWorks Java
DataWorks操作报错合集之在与某个数据库服务器建立或保持通信连接时遇到报错,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
下一篇
DataWorks