这段代码基本上拿来就能用 这个是只要点击客服 无论你发送啥 都回复统一的消息 没做太详细的区分 是否发的图片文字这种
参考了别人的代码
<?php
namespace app\api\controller;
use app\api\controller\Base;
use think\Cache;
header('Content-type:text');
define("TOKEN", "weixin");
class Xiaokefu extends Base {
public function index(){
// $access_token = $this->get_accessToken();
// $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
// $content = '您好,有什么能帮助你?';
// // $data=array(
// // "touser"=>"424",
// // "msgtype"=>"text",
// // "text"=>array("content"=>$content)
// // );
// $data=array(
// "touser"=>"535",
// "msgtype"=>"link",
// "link"=>array(
// "title"=>"aaa",
// "description"=>"Is Really A Happy Day",
// "url"=>"http://mp.weixin.qq.com/s?__biz=MzU0MTY5MDYxOQ==&mid=100000046&idx=1&sn=548cee99f32bc6a78d050a77f1a17a76&chksm=7b275eba4c50d7acb65ca556277e2fc94d225fa9fe7ff0c223f9f081c8d19359e9835cefbf71#rd",
// "thumb_url"=>"http://mp.weixin.qq.com/s?__biz=MzU0MTY5MDYxOQ==&mid=100000046&idx=1&sn=548cee99f32bc6a78d050a77f1a17a76&chksm=7b275eba4c50d7acb65ca556277e2fc94d225fa9fe7ff0c223f9f081c8d19359e9835cefbf71#rd"
// )
// );
// // $json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4+
// echo $url."<br />";
// $arr=curl_post($url,$data);
// print_r($arr);exit;
}
public function check_server(){ //校验服务器地址URL
if (isset($_GET['echostr'])) {
$this->valid();
}else{
$this->responseMsg();
}
}
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
header('content-type:text');
echo $echoStr;
exit;
}else{
echo $echoStr.'+++'.TOKEN;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
file_put_contents("kefu.txt",$postStr);
$postArr1 = json_decode($postStr,true);
if ($postStr){
//文本消息
$fromUsername = $postArr1['FromUserName']; //发送者openid
$toUserName = $postArr1['ToUserName']; //小程序id
// file_put_contents("a.txt",$fromUsername);
// file_put_contents("b.txt",$toUserName);
// $textTpl = array(
// "ToUserName"=>$fromUsername,
// "FromUserName"=>$toUserName,
// "CreateTime"=>time(),
// "MsgType"=>"transfer_customer_service",
// );
// {
// "touser":"OPENID",
// "msgtype":"text",
// "text":
// {
// "content":"Hello World"
// }
// }
// $content = '您好,有什么能帮助你?';
// $data=array(
// "touser"=>$fromUsername,
// "msgtype"=>"text",
// "text"=>array("content"=>$content)
// );
$data=array(
"touser"=>$fromUsername,
"msgtype"=>"link",
"link"=>array(
"title"=>"标题",
"description"=>"标题描述",
"url"=>"http://xxxx", //这里是图文跳转的链接
"thumb_url"=>"https://ubmcmm.baidustatic.com/media/v1/0f000Ki-jIfGPvxkW_YOt0.jpg"//这个是图文右小角的图片
)
);
$json = json_encode($data,JSON_UNESCAPED_UNICODE); //php5.4+
// file_put_contents("fs.txt",$json);
$access_token = $this->get_accessToken();
// file_put_contents("tk.txt",$access_token);
/*
* POST发送https请求客服接口api
*/
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
//以'json'格式发送post的https请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($json)){
curl_setopt($curl, CURLOPT_POSTFIELDS,$json);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($curl, CURLOPT_HTTPHEADER, $headers );
$output = curl_exec($curl);
if (curl_errno($curl)) {
file_put_contents("cw.txt",json_encode($curl));
curl_close($curl);
if($output == 0){
echo 'success';exit;
}
//file_put_contents("url.txt",$url);
// $data = curl_post($url,$data);
// file_put_contents("sb.txt",json_encode($data));
}else{
// file_put_contents("kefu1.txt",$postStr);
// file_put_contents("6.txt",'666');
echo "";
exit;
}
}
}
/* 调用微信api,获取access_token,有效期7200s -xzz0704 */
public function get_accessToken(){
/* 在有效期,直接返回access_token */
if(Cache::get('access_token')){
return Cache::get('access_token');
}
/* 不在有效期,重新发送请求,获取access_token */
else{
$appid=config("app_id");
$secret=config("app_secret");
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
file_put_contents("tkurl.txt",$url);
$result = curl_get($url);
$res = json_decode($result,true); //json字符串转数组
if($res){
Cache::set('access_token',$res['access_token'],7100);
return Cache::get('access_token');
}else{
return 'api return error';
}
}
}
}