tp6微信公众号开发者模式自定义菜单
1,参考上篇博客,获取access_token
https://www.cnblogs.com/xiaoyantongxue/p/15803334.html
2:控制器写以下代码
/*
* 获取普通access_token
* */
public function getToken()
{
$accessToken = WechatService::getToken();
echo $accessToken;
}
/**
* @return string
* 菜单
*/
public function menu()
{
// 获取accessToken
$accessToken = WechatService::getToken();
//组装请求的url地址
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $accessToken;
// $url=sprintf(config('wechat.menu_url'),$accessToken);
$data = array(
// button下的每一个元素
"button" => array(
//第一个一级菜单
array('type' => 'click', "name" => "个人简介", "key" => "info"),
array(
"name" => "语言排行",
"sub_button" => array(
array("name" => 'HTML', "type" => "view",
'url' => "http://119.45.22.188/cms/"),
array('name' => 'js', 'type' => 'pic_sysphoto', 'key' => 'sysptoto'),
array('name' => 'php', 'type' => 'pic_weixin', 'key' => 'pic_weixin')
)
),
array('type' => 'click', 'name' => '日记纪要', 'key' => 'content')
)
);
// 将数据转换为json格式
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
// 发送post请求
$result = curlPost($url, $data);
dump($result);
}
3:再tp6 common 公共函数中进行封装一份post请求

function curlPost($url, $data = '')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// POST数据
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output,true);
}
4:网页路由进行访问

5:打开微信公众号,进行查看效果

模板消息的使用:
模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
官方文档:
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#3
控制器:
1:测试页面进行模板页面的设置
网址:
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

2:控制器调用
/**
*模板消息
*/
public function sendTemplateMsg(){
// 获取access_token
$accessToken = WechatService::getToken();
// 请求接口
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$accessToken";
$data = [
//touser就是测试号的微信号
"touser"=>"oCsrJ6UIuOq8PEd2b7YDgpt2WaX0",
//模板id
"template_id"=>"mhOLKr6gU5-ZZkRdkz4ikj9iockb2H5PfGwya36IXqY",
"data"=>[
"result"=>[
"value"=>"某某某",
// 颜色
"color"=>"red"
],
"withdrawMoney"=>[
"value"=>"998"
],
"withdrawTime"=>[
"value"=>date("Y-m-d H:i:s",time())
],
"cardInfo"=>[
"value"=>"工商银行(尾号2345)"
],
"arrivedTime"=>[
"value"=>date("Y-m-d H:i:s",time())
],
"remark"=>[
"value"=>"欢迎参与活动",
"color"=>"red"
],
]
];
$res = curlPost($url,json_encode($data));
print_r($res);die; }
3:走路由

4:微信看效果

tp6微信公众号开发者模式自定义菜单的更多相关文章
- 微信公众号开发者模式自定义菜单 node
纯属分享 var config = require('./admin/wx/config/config'); var API = require('wechat-api'); var api = ne ...
- tp6微信公众号开发者模式token认证
微信公众号开发完整教程(一) PHP7.0版本,TP5.0框架 技术标签: 微信公众号开发 因为工作的需要,这一两年对微信公众号和小程序,项目制作的比较多.所以我才打算写一篇全面的 ...
- tp6微信公众号开发者模式基础消息
官方文档 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages ...
- tp6微信公众号开发者模式获取access_token
1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...
- php 开启微信公众号开发者模式
php 开启微信公众号开发者模式<pre><?php/** * wechat php test */header('Content-type:text');//define your ...
- .NET开发微信公众号之创建自定义菜单
一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...
- node微信公众号开发--设置自定义菜单
var request = require("request"); const querystring = require("querystring"); re ...
- 微信公众号开发——创建自定义菜单(PHP版)
<?php include "TokenUtil.php"; //TokenUtil::build_access_token(); $access_token = Token ...
- Java微信公众平台开发_04_自定义菜单
一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 2.数据传输格式—JSON 自定义菜单中请求包的数据是Json字符串格式的,请参见: Java_数据 ...
随机推荐
- JDK目录介绍
bin目录:存放Java的编译器.解释器等工具(可执行文件). db目录:JDK7附带的一个轻量级的数据库,名字叫做Derby. include目录:存放的调用系统资源的接口文件. jre目录:存放J ...
- json解析出现:java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXX
感谢大佬:https://blog.csdn.net/one_ink/article/details/99817676 一.出错原因 当我们利用json解析中的toBean方法时,如果它的属性里面包含 ...
- node 解决存储xss风险报告
1. 安装 xss模块 npm install xss 2.在 Node.js 中使用 const xss = require("xss"); // 在项目的接口里面添加 let ...
- Pytorch技法:继承Subset类完成自定义数据拆分
我们在<torch.utils.data.DataLoader与迭代器转换>中介绍了如何使用Pytorch内置的数据集进行论文实现,如torchvision.datasets.下面是加载内 ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第13章 - 部署metrics-server插件
文章目录 1.13.0.创建metrics-server证书和私钥 1.13.1.生成metrics-server证书和私钥 1.13.2.开启kube-apiserver聚合配置 1.13.3.分发 ...
- 记录一次elasticsearch-5.6.4宕机排查经历
犯罪现场~~ es: 三节点,配置相同 内存: 248G CPU: 没注意看 磁盘: 2T data: 380G左右 indices: 近9800条 在下才疏学浅,目前跟着大佬学习,这个问题还没解决, ...
- 继承及super关键字
继承 继承的本质是对某一批类的抽象,从而实现对世界更好的建模 extend的意思是"扩展",子类是父类的扩展. Java中类只有单继承,没有多继承:儿子只能有一个亲生爸爸,一个爸爸 ...
- vue如何获取thymeleaf渲染的input值?
写项目时前端用了vue+模板引擎用了thymeleaf,然后有一个输入框取值问题让我很纠结,问题如下: <input class="count-num" type=" ...
- k8s搭建链路监控:skywalking
skywalking架构及简介 官网:https://github.com/apache/skywalking 简介 Java, .NET Core, NodeJS, PHP, and Python ...
- windows清理用户痕迹
1.日志管理器的基本使用 在这里创建自定义视图是非常重要的 在设置自定义视图不必设置的事件日志选项太多,可以按日志也可以按源进行设置,根据自己的情况来做决定 在cmd下可以使用wevtutil cl ...