×

php微信公众平台token验证

php微信公众平台token验证(微信公众号token获取)

admin admin 发表于2023-04-05 10:29:07 浏览69 评论0

抢沙发发表评论

本文目录一览:

微信平台 php 示例 token验证失败

你的服务器没有正确响应Token验证,请阅读消息接口使用指南这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查2.请求URL超时你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。如果经常这样,就需要考虑更换服务器3.提交成功恭喜你,配置成功了。这是一种方法 详细图文教程和其他几种方法你可以访问这个链接希望可以帮到你

Thinkphp3.2.3接入公众号响应微信发送的Token验证总是失败

用得着判断那个TOKEN?是不是多此一举,用我这个,包你满意

?php

namespace Home\Controller;

use Think\Controller;

class IndexController extends WechatController {

    public function index(){

     $v = $_GET["echostr"];

     if(!isset($v)){//根据随机字符串判断是否之前已经验证过,避免重复验证

$this-receive();

}else{

$this-checkSignature();

}

    }

//未验证执行验证

public function checkSignature(){

        $signature = I("signature");//加密签名

        $timestamp = I("timestamp");//时间戳

        $nonce = I("nonce");//随机数

        $token = TOKEN;//token

$tmpArr = array($token,$timestamp, $nonce);//组成新数组

sort($tmpArr,SORT_STRING);//重新排序

$tmpStr = implode($tmpArr);//转换成字符串

$tmpStr = sha1($tmpStr);//再将字符串进行加密

if( $tmpStr == $signature )

{

echo $_GET["echostr"];

exit;

//return true;

}else{

return false;

}

}

//已经验证过执行这里

public function receive(){

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//获取用户发送的消息,格式为xml

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

libxml_disable_entity_loader(true);

$postObj = simplexml_load_string($postStr, "SimpleXMLElement", LIBXML_NOCDATA);

$this-logger($postStr);

//并且回复信息给用户

if(!empty($postObj)){

switch($postObj-MsgType){

case "text":

$result = $this-receiveText($postObj);

//避免错误信息报出

if(empty($result)){

$xml = "xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

Content![CDATA[%s]]/Content

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),$postObj-MsgType,"多图文信息没有获取到");-php微信公众平台token验证

}

echo $result;

break;

case "image":

$result = $this-receiveImage($postObj);

if(empty($result)){

$xml ="xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

ArticleCount1/ArticleCount

Articles

item

Title![CDATA[%s]]/Title 

Description![CDATA[%s]]/Description

PicUrl![CDATA[%s]]/PicUrl

Url![CDATA[%s]]/Url

/item

/Articles

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"news","跟老李一起来做微信开发","微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,用户通过简单的设置,就能生成微信3G网站。通过微信公众平台将企业品牌展示给微信用户,减少宣传成本,建立企业与消费者、客户的一对一互动和沟通,将消费者接入企业CRM系统,进行促销、推广、宣传、售后等。形成了一种主流的线上线下微信互动营销方式。","",""); -php微信公众平台token验证

}

echo $result;

break;

case "event":

$result = $this-receiveEvent($postObj);

if(empty($result)){

$xml = "xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

Content![CDATA[%s]]/Content

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","感谢您关注微信接口测试服务号,我是李先生!");-php微信公众平台token验证

}

echo $result;

break;

default :

$result = "你发送的数据类型暂时不做处理: " . $postObj-MsgType;

echo $result;

break;

}

}

}

//log

private function logger($content){

$logSize=100000;

$log = "./log.txt";

if(file_exists($log)  filesize($log)  $logSize){

unlink($log);

}

file_put_contents($log, date("Y-m-d H:i:s")." ".$content."\n",FILE_APPEND);

}

//关注自动回复信息

private function receiveEvent($postObj){

$xml = "xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

Content![CDATA[%s]]/Content

/xml";

if($postObj-Event=="subscribe"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","感谢您关注微信接口测试服务号,我是李先生!");-php微信公众平台token验证

}else if($postObj-Event=="CLICK"){

if($postObj-EventKey=="getSalary"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【查询-工资】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getAttendance"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【查询-考勤记录】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getBonus"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【查询-奖金明细】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getAbout"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【关于我们-联系】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getJoin"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【关于我们-加入我们】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getCustomer"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【关于我们-客服】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getInternational"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【新闻-国际】按钮"); -php微信公众平台token验证

}else if($postObj-EventKey=="getIndustry"){

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您点击了【新闻-行业】按钮"); -php微信公众平台token验证

}

}else if($postObj-Event=="scancode_waitmsg"){

//扫码带提示的事件

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您使用了扫码带提示事件,事件KEY:{$postObj-EventKey}");-php微信公众平台token验证

}else if($postObj-Event=="scancode_push"){

//扫码推事件

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您使用了扫码推事件,事件KEY:{$postObj-EventKey}");-php微信公众平台token验证

}else{

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"text","您的操作有点奇葩");

}

return $result;

}

//处理接收的文本信息并且回复给用户

private function receiveText($postObj){

$content = trim($postObj-Content);

//if(strstr($content,"你好")){

if(preg_match("/^\d*$/",$content)){

//回复多图文信息

$result = $this-receiveNews($postObj);

return $result;  

}else if($content=="图片"){

//回复图片信息

$xml = "xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

Image

MediaId![CDATA[%s]]/MediaId

/Image

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"image","t8ASWVXMl1vyPfFmDzNEzLq2Z2B6WiM4JI4pBc23quMuc91t9NM1GWFGajCDuMv-"); -php微信公众平台token验证

return $result;

}else{

//回复文本信息

$xml = "xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

Content![CDATA[%s]]/Content

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),$postObj-MsgType,$content); -php微信公众平台token验证

return $result;

}

}

//处理接收的文本信息并且回复给用户为单图文信息

private function receiveImage($postObj){

$xml ="xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

ArticleCount1/ArticleCount

Articles

item

Title![CDATA[%s]]/Title 

Description![CDATA[%s]]/Description

PicUrl![CDATA[%s]]/PicUrl

Url![CDATA[%s]]/Url

/item

/Articles

/xml";

$result = sprintf($xml,$postObj-FromUserName,$postObj-ToUserName,time(),"news","跟老李一起来做微信开发","微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,用户通过简单的设置,就能生成微信3G网站。通过微信公众平台将企业品牌展示给微信用户,减少宣传成本,建立企业与消费者、客户的一对一互动和沟通,将消费者接入企业CRM系统,进行促销、推广、宣传、售后等。形成了一种主流的线上线下微信互动营销方式。","",""); -php微信公众平台token验证

return $result;

}

//处理接收的文本信息并且回复给用户为多图文信息

private function receiveNews($postObj){

$con = array(

array("Title"="观前街","Description"="hjhhj","PicUrl"="","Url"=""),

array("Title"="平江路","Description"="mkbkbjj","PicUrl"="","Url"=""),

array("Title"="观前街","Description"="hjhhj","PicUrl"="","Url"=""),

array("Title"="平江路","Description"="mkbkbjj","PicUrl"="","Url"=""),

array("Title"="观前街","Description"="hjhhj","PicUrl"="","Url"=""),

array("Title"="平江路","Description"="mkbkbjj","PicUrl"=";fm=214gp=0.jpg","Url"=";fm=214gp=0.jpg"),

array("Title"="观前街","Description"="hjhhj","PicUrl"="","Url"=""),

array("Title"="平江路","Description"="mkbkbjj","PicUrl"="","Url"="")

);

$bodys="item

Title![CDATA[%s]]/Title

Description![CDATA[%s]]/Description

PicUrl![CDATA[%s]]/PicUrl

Url![CDATA[%s]]/Url

/item";

$tpl2 ="";

foreach($con as $key=$newArray) {

$tpl2 .= sprintf($bodys,$newArray["Title"],$newArray["Description"],$newArray["PicUrl"],$newArray["Url"]);-php微信公众平台token验证

}

$fromUsername = $postObj-FromUserName;

$toUsername = $postObj-ToUserName;

$tpl1="xml

ToUserName![CDATA[%s]]/ToUserName

FromUserName![CDATA[%s]]/FromUserName

CreateTime%s/CreateTime

MsgType![CDATA[%s]]/MsgType

ArticleCount%s/ArticleCount

Articles";

$tpl3="/Articles

/xml";

$tpl1=sprintf($tpl1,$fromUsername,$toUsername,time(),"news",count($con));

$result = $tpl1.$tpl2.$tpl3;

return $result;

}

}

微信公众平台里面token验证失败

需要在你的接口服务端配置好这个token值,并且保证服务端运行正常就可以验证通过了。

1、在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。词法分析是计算机科学中将字符序列转换为标记(token)序列的过程。从输入字符流中生成标记的过程叫作标记化(tokenization),在这个过程中,词法分析器还会对标记进行分类。-php微信公众平台token验证

2、token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。例如在USB1.1协议中定义了4类数据包:token包、data包、handshake包和special包。-php微信公众平台token验证

延展回答:

使用Notepad++或类似编辑工具打开设置的响应Token验证的Url网页文件,比如“index.php”

点击菜单栏上的“编码”—"转为 UTF - 8 无 BOM 编码格式",然后保存。

回到微信公众平台进行再次提交验证,即可解决问题。

怎么处理微信"token验证失败”

一.

1. 首先要了解的是什么是URL和Token,

在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上的访问地址是什么。而Token就是一个令牌,该令牌是个数字或字母形式的字符串,用于微信服务器与你的服务器进行通讯的时候的身份验证。防止非法数据来搞乱。-php微信公众平台token验证

2. 然后要了解的是开发模式为什么要使用Url和Token,

使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。不然你填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。-php微信公众平台token验证

3.那么如何处理如下问题”token验证失败”

valid(); class wechatCallbackapiTest { public function valid()     {         $echoStr = $_GET["echostr"];         //valid signature , option         if($this-checkSignature()){         echo $echoStr;         exit;         }     }     public function responseMsg()     { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];       //extract post data if (!empty($postStr)){                               $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                 $fromUsername = $postObj-FromUserName;                 $toUsername = $postObj-ToUserName;                 $keyword = trim($postObj-Content);                 $time = time();                 $textTpl = " %s 0 ";             if(!empty( $keyword ))                 {               $msgType = "text";                 $contentStr = "Welcome to wechat world!";                 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                 echo $resultStr;                 }else{                 echo "Input something...";                 }         }else {         echo "";         exit;         }     } private function checkSignature() {         $signature = $_GET["signature"];         $timestamp = $_GET["timestamp"];         $nonce = $_GET["nonce"];        $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?-php微信公众平台token验证

2.在微擎中修改token值也是为roselife

3.登陆微信公众平台中:开发——基本配置——修改配置中

a.服务器配置地址(URL):域名后后面跟wx_sample.php

b.token填写的也是roselife