本文目录一览:
- 1、微信平台 php 示例 token验证失败
- 2、Thinkphp3.2.3接入公众号响应微信发送的Token验证总是失败
- 3、微信公众平台里面token验证失败
- 4、怎么处理微信"token验证失败”
微信平台 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