作者:小爬虫 | 来源:互联网 | 2023-05-17 18:12
如题,代码如下。首次用手机微信关注时,会收到正确的模板消息,但是会收到二十几条,这是为什么呀?求解答,谢谢<?php发送模板消息classclass_weixin{
如题,代码如下。首次用手机微信关注时,会收到正确的模板消息,但是会收到二十几条,这是为什么呀?求解答,谢谢
//发送模板消息
class class_weixin
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
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;
}
}
public function send_template_message($data)
{
$access_token='TB51ZSi_tr0LqkaC6tbPycuWJzmBLs-MZfbL4-bNisM4kmLKivYITlN628mMocaugWJPJzUYaPBKqKHxI7vYk_TZ2q4-3PEx6IPJB9ceOfVgUGiQ-XGOqpRs9XIxDMIfADAVEA';
$url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$access_token ";
var_dump($url);//var_dump函数可以直接输出一个变量的值
$res=$this->http_request($url,$data);
return json_decode($res,true);
}
//https请求
protected function http_request($url,$data=NULL)
{
$ch=curl_init();//初始化一个curl会话
curl_setopt($ch, CURLOPT_URL, $url);//设置curl的参数
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
if(!empty($data)){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output=curl_exec($ch);//执行一个curl会话
curl_close($ch);
return $output;
}
}
$template=array(
'touser'=>"ovx4Xw8ppIX5ZcsZNP7DtdD5rcGE",
'template_id'=>"VCc3eWTJR0Z5k0Z5slofgNAlAAtveW9LOMr1yEjM",
//'url'=>"http://weixin.qq.com/",
'topcolor'=>"#FF0000",
'data'=>array('first'=>array('value'=>urlencode("您好!"),
'color'=>"",
),
'keyword1'=>array('value'=>urlencode("您有一项消息"),
'color'=>"",
),
'keyword2'=>array('value'=>urlencode("2016年11月19日"),
'color'=>"",
),
'keyword3'=>array('value'=>urlencode("北京"),
'color'=>"",
),
'remark'=>array('value'=>urlencode("\\n要快哦!"),
'color'=>"",
),
)
);
//调用SDK发送
//require_once('weixin.class.php');
define("TOKEN", "weixin");
$weixin = new class_weixin();
//$weixin->valid();
//var_dump($weixin->send_template_message(urldecode(json_encode($template))));
$weixin->send_template_message(urldecode(json_encode($template)));
?>
4 个解决方案
因为微信服务器还会给你返回消息,如果是这个地址的话,就会造成死循环!