前言

今天工作的时候,碰到一个极其无语的关于微信公众号的坑,为此,我语言攻击了腾讯的机器人客服。然而并没有卵用。。。万万没想到,我还是解决了这个问题,并记录下踩坑经历,希望能帮到一些朋友吧。

背景

今天不是我第一次开发这部分功能,我想象中的是只要把之前的代码片段Ctrl+c,Ctrl+v就可以了;

第一次开发这部分,花费了我三个小时;

第二次开发这部分,花费了我30分钟,(真的就只是Ctrl+c,Ctrl+v)

然鹅,事情并没有那么简单

踩坑记

第一步,写验证代码

按照我以往的开发经验看,一下代码直接Ctrl+c,Ctrl+v就可以,事实证明,确实是这样

private function checkSignature()

{

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = 'prettygirl';

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){

return true;

}else{

return false;

}

}

//使用

public function callbackAction()

{

if ($this->checkSignature()) {

echo $_GET['echostr'];

exit;

}else{

//等会进行补全

}

}

第二步,配置服务器

俗话说:完事开头难,我是真的体会到了啊...我先使用的是测试号验证token正确性,主要就是下面的参数。

确保url可以访问,

确保你的token和文件中定义的token相同

注意:这个地方有个大坑,在包含第一步那两个方法的文件中,返回的字符串echostr官方文档中说要完全原阳返回才能配置成功,但是总有一些不为人知的秘密影响我们的代码...

不瞒你说,我配置这个地方的时候从早晨上班一直到下午三点半才搞出来。惭愧...不说了,再说我又想发起语言攻击了。

以后一定要记住,文件结束符以后,不要留空格,或者干脆就不要写结束符。否则就会出现下面的情况

这TM的的是什么鬼东西,为什么会从第二行输出,原因就是在这个文件中引入了别的文件,刚好,那个文件就有结束符;刚好,那个文件结束符以后还有空行。那你就中奖了啊。

第三部,记得启用,启用后是下面扬子

第四步,写业务代码

搞完上面的步骤,你就可以天马行空的去处理你的业务了,这边撸一个简单的业务代码

// 微信服务器回调

public function wxcallbackAction()

{

if ($this->checkSignature()) {

echo $_GET['echostr'];

}else{

$postStr = file_get_contents('php://input');

if($postStr!=""){

$postArr = $this->xmlToArrayOrObject($postStr,false);

file_put_contents('wx.log', date('Y-m-d H:i:s') .'==='.json_encode($postArr). chr(10), FILE_APPEND | LOCK_EX);

$msgType = trim($postArr['MsgType']);

if($msgType=="event"){

$event = strtolower($postArr['Event']);

$ToUser = $postArr['ToUserName'];

$appid = 'appid';

$secret = 'secret';

$content = "欢迎关注";

file_put_contents('wx.log', date('Y-m-d H:i:s') .'==='.$event. chr(10), FILE_APPEND | LOCK_EX);

if($event == "subscribe"){

$content = "您好,欢迎关注。";

$openid = $postArr['FromUserName']; //oP_Vc0bbhVTzpa2vWUpWCPyCvCy8

$userid = end(explode("_",$postArr['EventKey'])); //qrscene_978562210

}

if($event == "scan"){

$content = "您好,您已关注。";

$openid = $postArr['FromUserName'];

$userid = $postArr['EventKey'];

}

$wxuser = $this->tuserRepository->findByOpenid($openid);

if ($wxuser) {

$content = "欢迎关注。您的微信账号已绑定至 【".$wxuser."】";

}else{

//获取用户信息并进行插库操作

$user = $this->tuserRepository->findByUid($userid);

$user->setOpenid($openid);

$this->tuserRepository->update($user);

$this->refreshObjData();

}

}

$textTpl .= "\n";

$textTpl .= "\n";

$textTpl .= "\n";

$textTpl .= "".time()."\n";

$textTpl .= "\n";

$textTpl .= "\n";

$textTpl .= "";

file_put_contents('wx.log', date('Y-m-d H:i:s') .'==='.$textTpl. chr(10), FILE_APPEND | LOCK_EX);

echo $textTpl;

}else{

echo "";

ob_clean();

}

}

exit;

}

后记

算了吧,不说了。都是教训啊

微信公众号服务器配置但没有回调,微信公众号 “服务器配置” 踩坑记相关推荐

  1. 微信小程序使用web-view,内嵌跳转h5踩坑记!!

    先说说我遇到的错误,项目在部署测试环境之前一切正常,没有遇到任何阻碍性bug,但是部署测试环境之后,跳转h5报如下错误: 然后我就去查了官方文档,以及各类技术文档,意思就是需要在微信公众平台配置业务域 ...

  2. win10samba服务器配置_win10访问samba配置共享目录,踩坑记

    以前都很顺利,突然报错,看似是认证没通过,也配置也用户密码,还是不行,折腾好久,记录一下: 配置过程: 安装 sudo apt-get install samba sudo apt-get insta ...

  3. 微信小程序踩坑记——ColorUI组件的使用

    微信小程序踩坑记--组件的使用 组件类型 ColorUI Vant weapp ColorUI 首先贴上官网链接:官网链接,GitHub链接 简介 ColorUI是一个css库!!!在你引入样式后可以 ...

  4. 微信头像失效_微信头像地址失效踩坑记附带方案

    微信头像失效问题说明? 最近工作遇到一个微信头像失效的问题,情况是这样的,我们一个h5页面在微信授权后打开,会存储微信相关昵称和头像信息,不过,我们没有保存图片到自己的服务器,而是仅仅存储微信头像地址 ...

  5. iOS旧版微信SDK升级1.8.6版本小白踩坑记

    虽然写了多年前端,但是一直都是写的lua,这次突然接到通知要升级微信SDK,以前也不是我捣鼓的,这下可愁坏了.本着万事不明,先备份改错的心态去下了微信SDK然后对比了下,发现跟以前没太大区别.主要区别 ...

  6. 微信头像失效_微信头像地址失效踩坑记附带解决方案

    微信头像失效问题说明? 最近工作遇到一个微信头像失效的问题,情况是这样的,我们一个h5页面在微信授权后打开,会存储微信相关昵称和头像信息,不过,我们没有保存图片到自己的服务器,而是仅仅存储微信头像地址 ...

  7. 微信小程序入门踩坑记(妥妥的干货,新手快快看过来)

    初次上手微信小程序,各种踩坑各种百度,草草扫过官网的文字,呃....表示记不住不想看,然后看了一本入门基础, 诺,就这本啦(链接:https://pan.baidu.com/s/15hKlDNpowU ...

  8. 微信分享踩坑记(一)——微信生态右上角自定义分享(微信JS-SDK)

    使用框架:Vue.js.微信JS-SDK.HTML5+(HBuilder) 两种场景:微信生态右上角自定义分享.APP分享到微信 1' 公众号设置JS安全域名 公众号开发者可在该域名下调用微信开放的J ...

  9. 微信小程序使用canvas画图并保存到手机相册踩坑总结

    接到个项目做微信小程序的,需要将手机中的页面保存到手机相册中,效果图如下 首先想到的就是利用canvas画图然后在保存到相册,看起来很简单网上也有很多例子,但都不完整,很多网友分享的都在半吊子工程,只 ...

最新文章

  1. pypy的安装及使用介绍
  2. c++/c SM4加密解密算法代码实现
  3. 基于ArcGIS JS API实现垂直滑动缩放条
  4. list-style-type:decimal在IE中显示全是1的解析
  5. Spark的相关概念说明和检查点机制
  6. Elastic-Job项目启动后,控制台一直报Cron表达式有误且Cron表达式与当前配置的表达式不一样
  7. Linux使用SSH上传下载文件,linux下用ssh上传,下载文件
  8. python---之打印日志logging
  9. php验证码显示碎图片,我的验证码只显示破碎的小图片
  10. 【刷题】BZOJ 1003 [ZJOI2006]物流运输
  11. 抽象代数基本概念(一):代数系
  12. 精心整理10个高逼格的优质素材(视频、图片)网站
  13. Mybatis关联查询遇到的坑-无主键的关联数据去重
  14. 当AI开始创作出令人惊叹的作品时 你的双眼已被蒙蔽
  15. flask keras 多线程环境下加载模型
  16. ac3168无线网卡驱动下载_英特尔面向Windows 10推出无线网卡驱动程序和图形命令中心应用更新...
  17. nonlocal和global的区别
  18. 新研究发现:太平洋上仅存的冰川将很快融化
  19. 互联网高并发解决方案(2)--高并发服务限流特技
  20. Win7下利用MinGW和Android NDK编译ffmpeg0.10(neon优化)

热门文章

  1. markdown支持的脑图工具
  2. 微信编辑器自带阅读鼓励金,让阅读更有意思!
  3. 车联网上云最佳实践(一)
  4. 在线图片转文字怎么操作?
  5. 【IEEE】IEEE审稿意见与回复-写作指南
  6. matplotlib——画布分辨率和尺寸
  7. 设计模式 之 中介者
  8. 仪器科学与技术毕业论文范文
  9. QT::QBitArray
  10. 解决Xcode Simulator 黑屏问题