前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信公众号服务器接口验证示例

微信公众号服务器接口验证示例

作者头像
MoLeft
发布2022-08-30 11:16:25
2.2K0
发布2022-08-30 11:16:25
举报
文章被收录于专栏:用砖头敲代码

开发背景

今天用营业执照重新申请了一个微信公众号,然后在配置服务器的时候犯了难,因为打算使用EasyWeChat来开发,所以说得先配置服务器,这就让我犯了难,最后结合开发文档之后才研究出来了验证的套路,希望对你们有帮助。

配置信息

既然是微信公众号那自然得有一个微信公众号,然后在 开发->基本配置->填写服务器配置 里面配置好你的信息,加密方式建议选兼容模式(如果你会消息加密的话可以选安全模式)

1.png
1.png

这时候点保存应该会提示token验证失败,那是因为微信去访问你填写的url了,所以我们需要去填代码了。

开始验证

以下内容来源于微信开放文档: 开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下: 1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

然后我们按照文档开始写代码,首先需要定义一个token的常量

代码语言:javascript
复制
<?php
define("TOKEN", "与微信公众平台token一致");

然后我们把微信开放文档里面的那个校验函数贴进去,因为我们没有用面向对象,所以说不用加private修饰词

代码语言:javascript
复制
function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    
    if( $tmpStr == $signature ){
        return true;
    }else{
        return false;
    }
}

最后一步我也是看了好久才看明白,说白了就是验证一下消息是不是来自微信,所以说一个判断就ok

代码语言:javascript
复制
$echoStr = @$_GET["echostr"];
if(!empty($echoStr) && checkSignature()){
    echo $echoStr;
    exit;
}

测试代码

测试这个代码的话就只能在微信公众平台去保存了,看看是否能保存成功。如果保存成功了之后把echo $echoStr;注释掉,再次保存,如果保存失败了,那么就证明我们写的代码是对的

如无特殊说明《微信公众号服务器接口验证示例》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-123.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发背景
  • 配置信息
  • 开始验证
  • 测试代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档