QQ小程序发送模板消息
QQ小程序群里有伙伴要发送模板消息的代码,所以今天给大家分享QQ小程序模板消息发布,绝对一步一步带着大家走,每个细节都讲到。
今天先用php简单写一下,有空了再写java的。
首先创建一个空项目:
因为QQ小程序没有编译器,先用微信小程序创建。
然后新建一个页面,直接上html代码:
<form bindsubmit="form_submit" report-submit="true">
<button formType="submit">这是模板发送按钮</button>
</form>
然后写js逻辑:
然后上js代码
form_submit(e) {console.log(e.detail.formId)var that = thiswx.showToast({title: '正在发送模板消息请求',duration: 5000,icon: 'loading',mask: true})//推送消息wx.login({success: function (res) {console.log("获得的code");console.log(res)var code = res.code;//发送给服务器的codeconsole.log("获得用户信息成功");if (code) {wx.request({url: 'https://xxxx/tokentest.php',//服务器的地址,现在微信小程序只支持https请求,所以调试的时候请勾选不校监安全域名data: {code: code,formID: e.detail.formId,},header: {'content-type': 'application/json'},success: function (res) {console.log(res.data);wx.setStorageSync('useropenid', res.data)wx.showToast({title: '发送模板消息成功!',})}})}else {console.log("获取用户登录态失败!");}},fail: function (error) {console.log('login failed ' + error);}})},
这里简单说一下原理:
微信小程序、QQ小程序想要发送模板消息给用户,必须要用户在小程序前端有提交表单的动作出现,所以我们在html中写了个form标签来完成这一要求,然后在js端接受该表单返回的formid,这个表单id是有七天时效的,也就是说在7天之内可以向用户发送模板消息。综上,发送模板消息需要两个东西:一是用户的openid(发给谁),二是用户的formid(有表单提交动作)。
我们在js中拿到了用户的formid但是没有拿到openid,所以需要请求后台去拿用户的openid。
拿openid需要用用户提交上去的code,和小程序的appid及appsercet三把钥匙去请求微信服务器,返回用户的openid.
申请一个模板templateid:
然后是后台程序php:
tokentest.php
<?php
//require_once('getAccessToken.php');
$appid="166666666";//你的小程序id
$appsecret="xxxxxxx";//你的小程序密钥
function curl_get_https($url){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查$tmpInfo = curl_exec($curl); curl_close($curl);return $tmpInfo; //返回json对象}
function getAccessToken ($appid, $appsecret) { $url='https://api.q.qq.com/api/getToken?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;//$url='https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code';/*$arrContextOptions=array("ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false,),);
$response = file_get_contents($url, false, stream_context_create($arrContextOptions));
*/$info = curl_get_https($url);$json = json_decode($info);//对json数据解码$arr = get_object_vars($json);$access_token = $arr['access_token'];return $access_token;
}//获得openid$code = $_GET['code'];//小程序传来的code值//$nick = $_GET['nick'];//小程序传来的用户昵称//$imgUrl = $_GET['avaurl'];//小程序传来的用户头像地址//$sex = $_GET['sex'];//小程序传来的用户性别// $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$appsecret.'&js_code=' . $code . '&grant_type=authorization_code';$url='https://api.q.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$appsecret.'&js_code=' . $code . '&grant_type=authorization_code';//yourAppid为开发者appid.appSecret为开发者的appsecret,都可以从微信公众平台获取;//$info = file_get_contents($url);//发送HTTPs请求并获取返回的数据,推荐使用curl$info = curl_get_https($url);$json = json_decode($info);//对json数据解码$arr = get_object_vars($json);$openid = $arr['openid'];echo "openid:";echo $openid;$session_key = $arr['session_key'];$formid = $_GET['formID'];//小程序传来的用户
echo "formid:";
echo $formid;
// 根据你的模板对应的关键字建立数组
// color 属性是可选项目,用来改变对应字段的颜色
date_default_timezone_set("Asia/Shanghai");
$nowtime=date("Y.m.d");
$color="black";$data_arr = array('keyword1' => array( "value" => "哈哈哈", "color" => $color ) ,'keyword2' => array( "value" => $nowtime, "color" => $color ) ,'keyword3' => array( "value" => "这是测试", "color" => $color ) ,
);
$templateid="xxxx";//这里填自己的模板id$post_data = array (// 用户的 openID,可用过 wx.getUserInfo 获取"touser" => $openid,// 小程序后台申请到的模板编号"template_id" => $templateid,// 点击模板消息后跳转到的页面,可以传递参数"page" => "/pages/person/person",// 第一步里获取到的 formID"form_id" => $formid,// 数据"data" => $data_arr,// 需要强调的关键字,会加大居中显示// "emphasis_keyword" => "keyword2.DATA");// 发送 POST 请求的函数
// 你也可以用 cUrl 或者其他网络库,简单的请求这个函数就够用了
function send_post( $url, $post_data ) {$options = array('http' => array('method' => 'POST',// header 需要设置为 JSON'header' => 'Content-type:application/json','content' => $post_data,// 超时时间'timeout' => 60),"ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false,));$context = stream_context_create( $options );$result = file_get_contents( $url, false, $context );return $result;
}// 这里替换为你的 appID 和 appSecret
$url = "https://api.q.qq.com/api/json/template/send?access_token=".getAccessToken ($appid, $appsecret);
// 将数组编码为 JSON
$data = json_encode($post_data, true); // 这里的返回值是一个 JSON,可通过 json_decode() 解码成数组
$return = send_post( $url, $data);
var_dump($return);?>
appid和appsercet在小程序后台弄:
最后看一下效果吧:
有任何报错或者问题请留言,原创不易,谢谢大家
QQ小程序发送模板消息相关推荐
- 《微信小程序——发送模板消息》详细步骤
第一步:获取access_token 第一步详情:因为access_token在微信公众号还是小程序,在一个月之内都有获取次数的限制,并且一个access_token只有2小时的有效期:所以每当我们获 ...
- 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”
大家好!我是我玩亚索我会C,在写小程序时,我们会有向用户发送消息的需求,比如发送提醒通知,或者是一些重要通知来形成一个服务的闭环.这就要用到微信的发送消息功能了,下面我使用Java语言来详细演示下如何 ...
- php+实现群发微信模板消息_使用php实现微信小程序发送模板消息(附代码)
本篇文章给大家带来的内容是关于使用php实现微信小程序发送模板消息(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 本章将会简单说一下微信小程序的模板消息发送,相对来说比较简 ...
- 小程序发送模板消息小结
小程序发送模板消息 package com.litte.util;import com.litte.entity.templateMessage.TemplateMessage; import com ...
- 小程序发送模板消息form_id的获取
关于小程序发送模板消息form_id获取的问题 第一种可以设置一个隐藏的表单 在form表单里加入report-submit 当用户点击时 会生成相对应的form_id 模板消息一般是跟用户交互时返回 ...
- 微信小程序发送模板消息踩的坑
在微信的微信小程序中,微信提供了和微信服务号相同的模板消息功能. 但是,虽然都是发送模板消息,小程序和服务号的模板消息的使用还是有差别的. 对于微信服务号的模板消息只要通过查看文档就能够知道我们使用模 ...
- 微信小程序发送模板消息,php发送模板消息
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. formId 在安卓系统是纯数字,在IOS系统是一串加密字符,如图: 发送模板消息(服务通知)效果图: 前端 ...
- java 微信小程序-发送模板消息
开发前准备工作 登录微信公众平台-小程序后台,在模板消息里面设置需要发送的模板,拿到模板id. 地址: https://mp.weixin.qq.com 找到微信官方文档-小程序开发-下发小程序和公众 ...
- java发送小程序模板消息,记录_小程序发送模板消息
package com.mj.frame.entity.resp; import java.io.Serializable; import java.util.List; import java.ut ...
最新文章
- ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架
- kaggle使用笔记
- tomcat勾连mysql_tomcat9.0启动脚本startup.bat的分析
- java post返回xml数据类型_Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据...
- 关于discuz 不能全文搜索的问题
- EasyUI基础入门之Droppable(可投掷)
- 避坑!用大数据告诉你,那些被淘汰的公司,都有哪些特征?
- Hive与数据库的异同
- J2EE视频实战教程网址
- hp 126NW驱动安装
- k8s部署rabbitMQ集群
- 【Python】《三国演义》人物出场统计
- 使用android sqlite读取数据库的简单方法
- DDD基础 (实体 值对象)
- 互联网金融概念股龙头有哪些
- XTU 1278 Arithmetic Sequence
- Fedora 19安装Fcitx输入法并安装搜狗输入法资源包
- 1. 有1,2,3,4个数字, 能组成多少个互不相同且无重复数字的三位数? 都是多少?
- vmware14 安装xp系统
- 19 个接私活平台,有技术就有钱