🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 前端DEMO - wxml ```php <view clas="index" style="background: white"> <button bindtap="clickss">触发一下</button> </view> ``` - wxjs ```javascript clickss:function (){ const templateId = 'RZM7nZoN5P2sA1m6aeiPMmZ-90U1_8PFmjrv_Nf5bhk'; // 订阅消息模版id wx.requestSubscribeMessage({ tmplIds: [templateId], success(res) { if (res[templateId] == 'accept') { //用户同意了订阅,允许订阅消息 wx.showToast({ title: '订阅成功' }) } else { //用户拒绝了订阅,禁用订阅消息 wx.showToast({ title: '订阅失败' }) } }, fail(res) { console.log('ooooooooooooooo', res) }, complete(res) { console.log(res) } }) }, ``` #### 后端推送代码 ```php namespace app\api\controller; use app\common\controller\Api; use fast\Http; use think\Cache; class SubtoMsg extends Api { protected $noNeedLogin = ['*']; protected $noNeedRight = ['*']; /** * @return mixed * 获取access_token * 时效3600秒 */ public function getaccess_tonken() { if (Cache::has('token')) { return Cache::get('token'); } else { $appid = ''; $appsecret = ''; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret; //api接口 $content = Http::get($url); if ($content) { $content = json_decode($content, true); } if (!empty($content['access_token'])) { session('access_token', $content['access_token']); Cache::set('token', $content['access_token'], 3600); return $content['access_token']; } } } /** * @param $openid 目标用户openid * @param $send 发送数据串 */ public function send($send) { /* $send格式demo $openid = 'o9vhc5BxMc1pTNCzD1IWVuy4JUP0';//目标用户的openid $templateId = 'laOhzjVJ5J9Tz97JOM4FNlMud2bkwV-g5DPuTYsWUyA'; $data = array( 'phrase1' => array('value' => '刘洋'), 'time2' => array('value' => date('Y-m-d H:i:s', time())), 'thing3' => array('value' => "老王很棒的哟", 'color' => '#333333'), ); $send = array( "touser" => $openid, "template_id" => $templateId, "data" => $data, );*/ $access_token = self::getaccess_tonken(); $url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $access_token; $ret = Http::post($url, urldecode(json_encode($send))); $this->success('', json_decode($ret)); /* * 发送成功 * { "code": 1, "msg": "", "time": "1619316449", "data": { "errcode": 0, "errmsg": "ok", "msgid": 1840866241775747074 } }*/ /* * 失败的情况 * { "code": 1, "msg": "", "time": "1619316019", "data": { "errcode": 43101, "errmsg": "user refuse to accept the msg rid: 6084cd33-3bd5fcdb-4ed3439f" } }*/ } //用于测试 public function send_text() { $openid = 'o9vhc5BxMc1pTNCzD1IWVuy4JUP0';//目标用户的openid // $templateId="";//订阅消息的模板id $templateId = 'laOhzjVJ5J9Tz97JOM4FNlMud2bkwV-g5DPuTYsWUyA'; // $templateId = get_addon_config('dymsg')['noticetemplateid']; $data = array( 'phrase1' => array('value' => '刘洋'), 'time2' => array('value' => date('Y-m-d H:i:s', time())), 'thing3' => array('value' => "老刘很棒的哟", 'color' => '#333333'), ); $access_token = self::getaccess_tonken(); $url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" . $access_token; $send = array( "touser" => $openid, "template_id" => $templateId, "data" => $data, ); $ret = Http::post($url, urldecode(json_encode($send))); $this->success('', json_decode($ret)); /* * 发送成功 * { "code": 1, "msg": "", "time": "1619316449", "data": { "errcode": 0, "errmsg": "ok", "msgid": 1840866241775747074 } }*/ /* * 失败的情况 * { "code": 1, "msg": "", "time": "1619316019", "data": { "errcode": 43101, "errmsg": "user refuse to accept the msg rid: 6084cd33-3bd5fcdb-4ed3439f" } }*/ } } ```