之前的模板音讯曾经废除,当初改为订阅音讯,订阅音讯公布前,须要用户确认后能力接管订阅音讯。
小程序端
index.wxml
<button bindtap="send">发送订阅音讯</button>
index.js
const app = getApp()Page({ data: { },send:function(){ wx.requestSubscribeMessage({ tmplIds: ['WZiCliW1zVtHXqX7dGnFNmFvxhW-wd9S_W4WfrwNvss'], success:(res)=> { wx.request({ url: 'https://www.xxx.com/send.php', data: { openid:'要推送的openid', template_id:'要应用的template_id', }, header: { 'content-type': 'application/json' }, success (res) { if(res.data.errcode == '43101'){ console.log("回绝订阅音讯") }else if(res.data.errcode == '0'){ console.log("发送订阅音讯") }else{ console.log("未知谬误") } } }) } }) })}
后端
<?php//设置 header header("Content-type:application/json");//接管参数$template_id = $_GET["template_id"];$openid = $_GET["openid"];//初始化 CURL$ch = curl_init();// 获取access_token// include '';require_once("access_token.php");//指标服务器地址 curl_setopt($ch, CURLOPT_URL, 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$access_token);//设置要POST的数据curl_setopt($ch, CURLOPT_POST, true);$data = '{ "touser": $openid, "template_id": $template_id, "page": "pages/index/index",// 要跳转的页面 "miniprogram_state":"developer", "lang":"zh_CN", "data": { "thing4": { "value": "欢送应用专插本最火线小程序" }, "thing5": { "value": "小程序由公众号:广东专插本最火线开发" } }}';curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");// 对认证证书起源的查看curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);// 从证书中查看SSL加密算法是否存在curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);//获取的信息以文件流的模式返回,而不是间接输入curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//发动申请$result = curl_exec($ch);echo $result;//敞开申请curl_close($ch);?>
access_token.php
<?php// 申明页面headerheader("Content-type:charset=utf-8");// APPID、APPSECRET$appid = "你的小程序APPID";$appsecret = "你的小程序APPSECRET";// 获取access_token和jsapi_ticketfunction getToken(){ $file = file_get_contents("access_token.json",true);//读取access_token.json外面的数据 $result = json_decode($file,true);//判断access_token是否在有效期内,如果在有效期则获取缓存的access_token//如果过期了则申请接口生成新的access_token并且缓存access_token.jsonif (time() > $result['expires']){ $data = array(); $data['access_token'] = getNewToken(); $data['expires'] = time()+7000; $jsonStr = json_encode($data); $fp = fopen("access_token.json", "w"); fwrite($fp, $jsonStr); fclose($fp); return $data['access_token']; }else{ return $result['access_token']; }} //获取新的access_tokenfunction getNewToken($appid,$appsecret){ global $appid; global $appsecret; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret.""; $access_token_Arr = file_get_contents($url); $token_jsonarr = json_decode($access_token_Arr, true); return $token_jsonarr["access_token"];}$access_token = getToken();?>
逻辑
1、通过button控件登程send函数
2、send函数调用wx.requestSubscribeMessage
API,微信容许接管订阅音讯
3、 wx.request
向send.php后端申请
4、后端获取access_token后,调用订阅音讯接口POST一段json数据即可发送订阅音讯
官网文档
1、https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html
2、https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html
Author:TANKING
Date:2020-08-24
Web:http://www.likeyun.cn/
WeChat:face6009