<?php
namespace app\api\controller;
use app\api\library\WnoticeHandle;
use app\common\controller\Api;
use think\Db;
/**
* 首页接口
*/
class Wnotice extends Api
{
const TOKEN = 'HL2021';
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
/**
* 首页
*
*/
public function index()
{
$this->success('请求成功');
}
/**
* 服务器鉴权
*/
public function checkToken()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = self::TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr === $signature) {
exit($_GET['echostr']);
} else {
exit($_GET['echostr']);
}
}
/**
* 获取access_token
* @return mixed
*/
private function _getAccessToken()
{
$appId = WnoticeHandle::APP_ID;
$appKey = WnoticeHandle::APP_KEY;
//获取access_token
if (isset($_COOKIE['access_token']) && $_COOKIE['access_token']) {
$accessToken = $_COOKIE['access_token'];
} else {
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appId . '&secret=' . $appKey;
$data = $this->post_json_data($url);
$data = json_decode($data['result'], true);
$accessToken = $data['access_token'];
setcookie('access_token', $accessToken, 7200);
}
return $accessToken;
}
/**
* 发送模板消息
*/
public function sendNotice()
{
$accessToken = $this->_getAccessToken();
//模板消息
$json_template = $this->json_tempalte();
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $accessToken;
$res = $this->post_json_data($url, $json_template);
if ($res['code'] == 0) {
return $res['result'];
} else {
return $res['result'];
}
}
/**
* 将模板消息json格式化
*/
public function json_tempalte()
{
//模板消息
$template = array(
'touser' => 'obxsR6Noeygf9SAEI3-oiyj6ZpQ', //用户openid
'template_id' => "quyIvwP8blAEl7I8IgS48d5SczosAmNelvwzsIk-hc", //在公众号下配置的模板id
'url' => "", //点击模板消息会跳转的链接
/*"miniprogram" => array( //跳小程序,小程序需与公众号绑定
"appid" => "xiaochengxuappid12345",
"pagepath" => "index?foo=bar"
),*/
'topcolor' => "#FF0000",
'data' => array()
);
return json_encode($template);
}
/*
* post 发送JSON 格式数据
* @param $url string URL
* @param $data_string string 请求的具体内容
* @return array
* code 状态码
* result 返回结果
*/
public function post_json_data($url='', $data_string='')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
ob_start();
curl_exec($ch);
$return_content = ob_get_contents();
ob_end_clean();
$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return array('code'=>$return_code, 'result'=>$return_content);
}
}
微信服务号模板消息发送简单示例
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 实现微信小程序向特定微信服务号用户发送模板消息 所需微信公众号资源 已认证的微信公众号、同主体的微信服务号(不同主...
- 作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。 发送模板消息也叫业务通知,听起来虽然有点陌生,但是在生...