​小程序消息推送token验证PHP代码

/** * 检查配置token */ 
public function check_server()    { 
//这个echostr呢 只有说验证的时候才会echo 如果是验证过之后这个echostr是不存在的字段了 if($_GET['echostr']){ 
$echoStr = $_GET["echostr"]; 
if ($this->checkSignature()) { 
ob_clean();//防止之前缓存区数据影响 
echo $echoStr;               
exit; 
} 
}else{ 
$this->response_msg(); //如果没有echostr,则返回消息 
}
} 

/** * 验证微信开发者模式接入是否成功 */ 
private function checkSignature() { 
//signature 是微信传过来的签名 
$signature = $_GET["signature"]; 
//微信发过来的时间戳 
$timestamp = $_GET["timestamp"]; 
//微信传过来的值随机字符串 
$nonce = $_GET["nonce"]; 
//定义你在微信公众号开发者模式里面定义的token 这里举例为weixin 
$token = "baigebao"; 
//三个变量 按照字典排序 形成一个数组 
$tmpArr = array( 
$token, 
$timestamp, 
$nonce 
); 
// 字典排序 
sort($tmpArr, SORT_STRING); 
$tmpStr = implode($tmpArr); 
//哈希加密 在laravel里面是Hash:: 
$tmpStr = sha1($tmpStr);       
//哈希加密后的数据 和微信服务器传过来的签名比较 
if ($tmpStr == $signature) { 
return true; 
} else { 
return false; 
} 
} 

/** * @name 消息接收 * @author weikai */
public function response_msg() { 
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
if (!empty($postStr) && is_string($postStr)){ 
//禁止引用外部xml实体 
//libxml_disable_entity_loader(true); 
//$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 
$postArr = json_decode($postStr,true); 
if(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'text'){  
//文本消息 
$fromUsername = $postArr['FromUserName']; //发送者openid 
$toUserName = $postArr['ToUserName']; //小程序id 
$textTpl = array( 
"ToUserName"=>$fromUsername, 
"FromUserName"=>$toUserName, 
"CreateTime"=>time(), 
"MsgType"=>"transfer_customer_service", 
); 
exit(json_encode($textTpl)); 
}elseif(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'image'){ 
//图文消息 
$fromUsername = $postArr['FromUserName']; //发送者openid 
$toUserName = $postArr['ToUserName']; //小程序id 
$textTpl = array( 
"ToUserName"=>$fromUsername, 
"FromUserName"=>$toUserName, 
"CreateTime"=>time(), 
"MsgType"=>"transfer_customer_service", 
); 
exit(json_encode($textTpl)); 
}elseif($postArr['MsgType'] == 'event' && $postArr['Event']=='user_enter_tempsession'){ 
//进入客服动作 
$fromUsername = $postArr['FromUserName']; //发送者openid 
$content = '您好,有什么能帮助你?'; 
$data=array( 
"touser"=>$fromUsername, 
"msgtype"=>"text",// 
"msgtype"=>"transfer_customer_service", 
"text"=>array("content"=>$content) 
); 
/* POST发送https请求客服接口api */ 
$json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4+ 
$access_token = $this->mini_customer_service->get_access_token(); 
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token; 
$output = $this->mini_customer_service->curl_get($url,$json); 
if($output == 0){ 
echo 'success';exit; 
} 
}else{ 
exit('aaa'); 
} 
}else{ 
echo ""; 
exit; 
} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值