企业微信开始代开发应用 配置代开发应用回调URL

2023-11-16

用到的php版本是7.4

开发时间:2022-11-2

在做公司的项目时因为企业微信的更新,同一个服务器ip不能在多个企业项目中出现否则就会被判定为第三方服务商,所以新建应用时只能新建代开发应用;在配置回调的时候走了很多坑,在这里梳理一下

先附上配置截图,大家可以对比下是否是这里

 

1:下载需要用到的解密库代码(PHP版本)

        下载地址:https://github.com/sbzhu/weworkapi_php/tree/master/callback

        企业微信原文地址:登录 - 企业微信开发者中心icon-default.png?t=M85Bhttps://developer.work.weixin.qq.com/devtool/introduce?id=101282: 把下载解码库代码引用到 php文件中,并完成逻辑书写

 public function agencyCallBack(Request $request)
    {
       
        // 假设企业号在公众平台上设置的参数如下
        $encodingAesKey = "EncodingAESKey"; // 
        $token = "Token"; // 
        $corpId =  "corpId" ; // 

        /*
        ------------使用示例一:验证回调URL---------------
        *企业开启回调模式时,企业号会向验证url发送一个get请求
        假设点击验证时,企业收到类似请求:
        * GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3&timestamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
        * HTTP/1.1 Host: qy.weixin.qq.com
        接收到该请求时,企业应
        1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及公众平台推送过来的随机加密字符串(echostr),
        这一步注意作URL解码。
        2.验证消息体签名的正确性
        3. 解密出echostr原文,将原文当作Get请求的response,返回给公众平台
        第2,3步可以用公众平台提供的库函数VerifyURL来实现。
        */


        $sVerifyMsgSig = $_GET["msg_signature"];
        $sVerifyTimeStamp = $_GET["timestamp"];

        $sVerifyNonce = $_GET["nonce"];

        $sVerifyEchoStr = $_GET["echostr"];

        $sEchoStr = "";

        $wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId); // 此类为下载的解码库类,需要在文件中引用
        $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
        if ($errCode == 0) {
            return $sEchoStr;

        } else {
            print("ERR: " . $errCode . "\n\n");
        }
    }

  需要注意的一点,这个corpId 我找遍了企业微信后台的的配置也没有找到在哪里,最后没有办法只能查看 企业微信验证url的时候发送来的corpId ,可以在解码库中打印到日志里 如下图所示:

先点击进入VerifyURL方法,然后点击 decrypt 方法

 最后一点,我用的是tp5.1框架,验证url的时候一定要 把调试模式关闭,否则输出有问题验证通不过

      

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

企业微信开始代开发应用 配置代开发应用回调URL 的相关文章

  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • Laravel 意外错误“类用户包含 3 个抽象方法...”

    在 Laravel 上编写我的身份验证应用程序时 我遇到了一个以前从未见过的错误 我已经集思广益了近一个小时来解决这个问题的原因 但仍然找不到解决方案 Error User 类包含 3 个抽象方法 因此必须声明为抽象方法或实现其余方法 Il
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 合并 csv 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 PHP 或 joomla 中将多个 CSV 文件合并为一个 csv 文件 将文件夹中 csv 文件中的所有数据合并到文本文件中 通
  • PHP 和 DOM 文档

    我有一个关于 DOMDocument 的使用和创建 XML 的问题 我有一个 PHP 程序 加载到 XML 文件中 处理XML的每个节点 行 将其发送到另一个进程 然后该进程返回一个 XML 元素 我获取节点的字符串表示形式 以便可以创建
  • php 或 zend 中国际电话号码验证的正则表达式是什么?

    我有一个 zend 表单 其中有一个电话号码字段 并且必须检查验证器 我决定为此使用正则表达式 我搜索了谷歌 但我得到的结果不起作用 谁能给我提供正则表达式 这是我的代码 phone new Zend Form Element Text p
  • cakephp 1.1 与 php 5.3

    我刚刚从 php 5 1 升级到 5 3 之前在我的服务器上使用 cakephp 1 1 自从升级 或者可能更早 我不确定 以来 我收到以下错误 任何人都可以透露一些信息 Deprecated Assigning the return va
  • 如何使用 PHP 查找目录中的前 5 个文件?

    如何使用 PHP 列出按字母顺序排序的目录中的前 5 个文件或目录 Using scandir array slice array filter scandir path to dir is file 0 5 The array filte
  • PHP语言问题

    我有一个 php 页面 它将邮件发送到特定电子邮件 其中包含此页面表单中的数据 邮件必须以网站的母语 阿拉伯语 发送 但是当我单击表单上的提交按钮时 收到的邮件一半可读 阿拉伯语 另一部分不可读 符号 我想知道如何解决这个问题并且能够发送邮
  • ajax 会增加还是降低安全性?

    我正在创建一个网站 到目前为止它是纯 PHP 的 我在想 既然很少有人没有启用 JavaScript 我想知道为什么 也许我应该将我的网站创建为一个完全 PHP 的网站 而不使用任何 AJAX 难道是我想错了 可以肯定的是 如果我实施一些
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • Lumen 微框架 => php artisan key:generate

    我正在尝试 PHP 微框架 Lumen 来自 Laravel 我的第一步就是调查 env example文件并复制一份以供我使用 env文件 就像 Laravel 中一样 有一个变量 APP KEY 现在我尝试了简单的命令php artis
  • 如何在PHP中将图像从内存上传到AWS S3?

    所以我目前有一个使用 AWS S3 上传图像的上传系统 这是代码 Upload image to S3 s3 Aws S3 S3Client factory array key gt mykey secret gt myskey try s
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • 如何让Symfony2直接加载CSS、JS文件而不是通过PHP?

    老问题 请参阅下面的更新版本 我的开发环境不是最快的 每个 PHP 请求大约需要 500 毫秒 它开始成为 Symfony2 资源文件的问题 因为每个资源文件都是通过 Symfony 的内部控制器请求的 http localhost myp
  • 将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

    我正在 Symfony2 中创建一个表单 表格只包含一个book字段允许用户在列表中进行选择Books实体 我需要检查是否选择了Book属于Author我的控制器里有 public class MyFormType extends Abst
  • WooCommerce 自定义产品类型选项不隐藏自定义产品选项卡

    我刚刚向我的 WC 管理产品页面添加了自定义产品类型选项 add filter product type options this filter product type options 99 1 public function filte
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos

随机推荐

  • 深入理解Flink的水位线

    Apache Flink是一个流处理框架 它支持事件时间和处理时间的概念 在处理流数据时 Flink通过水位线 Watermark 来追踪事件时间的进度 从而支持事件时间的操作 水位线是一种特殊的事件 它表示在此时间戳之前的所有事件都已经到
  • java八股文合集(附免费0积分下载链接)

    下面是地址 Java八股文一 java基础知识 Java八股文二 java集合框架 Java八股文三 Java多线程 Java八股文四 Java虚拟机 Java八股文五 MySQL Inno DB Java八股文六 spring相关 Jav
  • Python项目开发

    今天任务 1 创建Python项目为pythontest1以及test1 py文件 2 修改字号 3 输入九九乘法表程序 编译调试执行 4 配置全局pip镜像为阿里镜像 5 命令行中下载安装pygame包 新建项目 选择 Create Ne
  • Python解决OpenCV系列库安装报错问题

    1 pip install dlib 这个库的安装很大概率出现问题 可以去参考 Python dlib 无需编译安装 dlib 19 23 0 cp39 cp39 win amd64 whl 这里放一个百度网盘的链接 要求Python3 9
  • C#中Linq用法汇集

    C 中Linq常用用法 LINQ查询语法 有两种基本的方法来编写一个LINQ查询IEnumerable集合或IQueryable数据源 1 查询语法或查询表达式语法 2 方法语法或方法扩展语法或Fluent LINQ查询语法 查询语法与数据
  • linux各目录详细介绍

    bin 二进制可执行命令 dev 设备特殊文件 etc 系统管理和配置文件 etc rc d 启动的配置文件和脚本 home 用户主目录的基点 比如用户user的主目录就是 home user 可以用 user表示 lib 标准程序设计库
  • stm32定时器外部计数模式 最大频率计算。

    本 外部时钟模式下 外部信号通过内部时钟 CK INT 采样得到 外部信号周期的计算方法是 2xTINT 20ns 这里的TINT是CK INT的周期时间 例如 内部时钟频率为72MHz 则TINT 13 89ns 这时外部信号的最高频率是
  • flask 第七章 简陋版智能玩具 +MongoDB初识和基本操作

    1 简陋版web智能玩具 FAQ py文件 import os from aip import AipSpeech AipNlp from uuid import uuid4 你的 APPID AK SK APP ID 16027160 A
  • Git命令查看以及修改用户名和密码

    一 查看 查看用户名 git config user name 查看密码 git config user password 查看邮箱 git config user email 查看配置信息 git config list 二 修改 修改用
  • ios删除分割线_iOS开发中隐藏导航栏的分割线

    iOS开发中经常会遇到需要隐藏导航栏的分割线的需求 之前已经有两种方法 方法一 直接设置navigationBar的ShadowImage和BackgroundImag 这样做可以一劳永逸 在当前导航控制器的所有子控制器页面看到的导航栏都是
  • js判断时间大小以及计算时间差

    有些时候我们需要使用JS判断一下不同格式的时间的大小该怎判断呢 例如 2019 06 26 14 00 00 这个格式的时间 如何判断是否大于现在的时间 function compareTimeNow time var strArray t
  • osgEarth的Rex引擎原理分析(十五)分页瓦片加载器在更新遍历时对请求处理过程

    目标 十四 中的34 osgEarthDrivers engine rex Loader cpp void PagerLoader traverse osg NodeVisitor nv for count 0 count lt merge
  • Java-基于SSM的智能仓储管理系统

    项目背景 随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 智能仓储系统当然也不能排除在外 智能仓储系统是以实际运用为开发背景 运用软件工程开发方法 采用jsp技术构建的一个管理系统
  • React 项目中添加 react-redux 状态管理

    redux作为一个单独的库 他可以搭配 Angular vue react以及jQuery使用 今天我们再项目中搭配react redux来使用 Redux的核心概念其实很简单 将需要修改的state都存入到store里 发起一个actio
  • java中设计思想及设计原则及设计模式解析

    前言 在java开发过程中 或者各种语言在编程过程中 对基础知识的累计 这其中就会包含java的设计思想及设计原则及设计模式 我们想对当前的架构以及某些功能逻辑进行优化 及繁简 更加适合当前业务的开发 如何让人一看就能懂得代码 以及各种热门
  • 10071 - Back to High School Physics

    Back to High School Physics Time limit 3 000 seconds A partical 电 质点 has inital velocity and accerleration 初速度与加速度 If it
  • SQL6 查找学校是北大的学生信息

    描述 题目 现在运营想要筛选出所有北京大学的学生进行用户调研 请你从用户信息表中取出满足条件的数据 结果返回设备id和学校 示例 user profile id device id gender age university provinc
  • Linux--消息队列

    目录 一 线程和进程的概念 1 线程 2 进程 3 ipcs 二 消息队列代码 写消息 man msgget返回值问题 添加消息队列 man msgsnd 运行代码 运行结果图 进程和消息的状态 三 消息队列代码 读消息 b c读取消息 执
  • 微信公众号html教程,公众号排版简易教程

    微信公众号文章排版流程 1 将文章转换成Markdown格式 2 使用Typora渲染Markdown格式 3 使用印象笔记 生成图表 流程图 时序图等 并转换成图片 4 将Markdown格式转换为Html格式 5 将Html格式内容复制
  • 企业微信开始代开发应用 配置代开发应用回调URL

    用到的php版本是7 4 开发时间 2022 11 2 在做公司的项目时因为企业微信的更新 同一个服务器ip不能在多个企业项目中出现否则就会被判定为第三方服务商 所以新建应用时只能新建代开发应用 在配置回调的时候走了很多坑 在这里梳理一下