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_数据 ...
随机推荐
- 编译安装nginx,实现多域名 https
一.编译安装nginx 1.1 获取源码包 [root@cetnos7 ~]#wget -O /usr/local/src/nginx-1.18.0.tar.gz http://nginx.org/d ...
- 1day漏洞反推技巧实战(3)
代码审计必备技能,github代码对比,写一笔: 搜索某开源组建漏洞,搜索出来某个版本rce: 通过消息得出:存在漏洞版本:1.10.10 ,修复漏洞版本1.10.11 去github寻找apache ...
- 帆软报表(finereport)JS实现cpt中详细单元格刷新
1.刷新固定单元格 setInterval(function(){ //获取第二行第 5 列 E2 单元格对象 var _changeCell = $("tr[tridx=1]" ...
- 38、python并发编程之IO模型
目录: 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchron ...
- kali linux 静态地址和动态地址的设置
在文件系统里找到/etc/network下的interfaces文件,打开后可以看到eth0为dhcp,将其修改为# This file describes the network interface ...
- 网络损伤测试,助力5G新基建
- Smartbi实践:制作可视化分析报表的感悟
估计看到这篇文章的朋友,都是有使用过Smartbi制作数据可视化图表的.但是不是制作过程跟制作效果并没有让自己那么满意.使用过程也经常遇到一些问题解决不了?那是因为你使用的方法不对.你是否在使用Sm ...
- 报表工具和BI商业智能的区别,你真的弄清楚了吗?
许多人在投身大数据行业的时候,肯定会听到的两个词就是"报表工具"和"BI商业智能".但是大部分人并不太清楚这两者之间的概念和区别,认为报表就是BI,BI就是报表 ...
- C语言memcpy()函数和memmove()函数
C语言memcpy()函数和memmove()函数 关于 memcpy() 函数,请先看链接. memcpy() 函数和 memmove() 函数的函数原型如下: void* memcpy(void ...
- 【windows 访问控制】十一、C# 实操 对象 System.Security.AccessControl 命名空间
AccessControl 命名空间 结构图 解说: DirectorySecurity=目录ACLFileSecurity=文件ACLFileSystemAuditRule=目录和文件中SACL中的 ...