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微信公众号开发者模式自定义菜单的更多相关文章

  1. 微信公众号开发者模式自定义菜单 node

    纯属分享 var config = require('./admin/wx/config/config'); var API = require('wechat-api'); var api = ne ...

  2. tp6微信公众号开发者模式token认证

      微信公众号开发完整教程(一) PHP7.0版本,TP5.0框架 技术标签: 微信公众号开发         因为工作的需要,这一两年对微信公众号和小程序,项目制作的比较多.所以我才打算写一篇全面的 ...

  3. tp6微信公众号开发者模式基础消息

    官方文档 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages ...

  4. tp6微信公众号开发者模式获取access_token

    1:config 文件下新建一个文件wechat.php,将个人id和秘钥写入配置文件 网址: https://developers.weixin.qq.com/doc/offiaccount/Bas ...

  5. php 开启微信公众号开发者模式

    php 开启微信公众号开发者模式<pre><?php/** * wechat php test */header('Content-type:text');//define your ...

  6. .NET开发微信公众号之创建自定义菜单

    一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...

  7. node微信公众号开发--设置自定义菜单

    var request = require("request"); const querystring = require("querystring"); re ...

  8. 微信公众号开发——创建自定义菜单(PHP版)

    <?php include "TokenUtil.php"; //TokenUtil::build_access_token(); $access_token = Token ...

  9. Java微信公众平台开发_04_自定义菜单

    一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 2.数据传输格式—JSON 自定义菜单中请求包的数据是Json字符串格式的,请参见:  Java_数据 ...

随机推荐

  1. Spring学习七:ComponentScan注解

    今天主要从以下几个方面来介绍一下@ComponentScan注解: @ComponentScan注解是什么 @ComponentScan注解的详细使用 1.ComponentScan注解是什么 其实很 ...

  2. jsp include html 乱码问题

    感谢大佬:https://blog.csdn.net/sessionsong/article/details/38778853 在使用<%@ include page=""% ...

  3. Info.plist常见的设置

    建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 在旧版本Xcode创 ...

  4. npm 查看一个包的版本信息

    有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要关注包的版本信息: 现在,假设我们需要 jquery ,但是jquery现在有很多版本,我们如何通过npm查看呢? ...

  5. iOS测试模板

    测试模板,每次写一个功能测试Demo时总是要新建一个工程,导入一些第三方库,比较麻烦,先提供一个测试模板,提供一些常用第三方库,自己就不用导了 使用Cocospod管理第三方库 常用(其他自行添加) ...

  6. 关于static

    static是静态的意思: static修饰的成员变量,在内存中存在于方法区中,只有一份,非静态的成员变量在堆中,每个对象中都有一份 public class Demo1 {    public st ...

  7. hgame-week3-web-wp

    hgame第三周(web ak) 1.SecurityCenter 先看看hint(**vendor是第三方库和插件放置的文件夹,一般来源于composer的安装) 找到了使用的twig模板,应该是t ...

  8. 二进制安装tomcat

    一.安装JDK 1.1 下载JDK 官网下载地址 1.2 安装JDK #cat install_jdk.sh #!/bin/bash DIR=`pwd` JDK_FILE="jdk-8u29 ...

  9. 02网络编程( socket套接字+TCP粘包 )

    目录 02 网络编程 一.socket套接字编程 二.简易代码模板 2.1 服务端 2.2 客户端 三.通信循环及代码优化 四.黏包现象 五.struct模块 六.简易版本报头 七.上传文件数据 * ...

  10. Dubbo扩展点应用之六服务动态降级

    服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务有策略的降低服务级别以释放服务器资源保证核心任务的政策运行. 为什么要使用服务降级呢?这是为了防止分布式服务发送雪崩效应,也就是蝴蝶 ...