1、申请测试账号:
先申请公众号后,点击进入公从号的管理页面;找到“开发者工具”,找到“公众平台测试账号”,点击“进入”。
2、接口配置信息设置
必须要外网哦,也就是微信服务器要能访问到你填写到url。
Url到内容有讲究,这里已tp5为例,页面填写的Token要跟控制器的Token一致。
接口提交之前的配置项一定要有echostr
设置失败的一个重要原因:url的请求相应没有返回echostr这个参数。
接口提交之后在微信里看效果一定要删除echostr
<?php
namespace app\index\controller;
define("TOKEN", "mytest");//声明token class Jssdkceshi
{
public function valid()
{
//接口配置信息修改的时候需要 正式上线不需要
//$echoStr = $_GET["echostr"];
if($this->checkSignature()){
//echo $echoStr;
exit;
}
}
public function index(){
$this->valid();
$this->responseMsg();
$this->createCaidan();
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$ev = $postObj->Event;//获取事件类型
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if($ev == "subscribe"){
//用户第一次关注时,自动回复消息设置
$msgType = "text";
$contentStr = "欢迎关注我是微信!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$erer=$keyword;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $erer);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo '';
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function gettoken(){
$appid='wxa0cb62458ce0a153';
$secret='21fffd4676ee9abf9fcb0b6f6539fab0';
$getTokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
$accessTokenJson=file_get_contents($getTokenUrl);
$accessTokenArr=json_decode($accessTokenJson,true);
$accessToken=$accessTokenArr['access_token'];
return $accessToken;
}
public function createCaidan(){
$access_token=$this->gettoken();
$url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
$caidan= ' {
"button":[
{
"type":"click",
"name":"乐曲欣赏",//一级菜单
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手简介",//一级菜单
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜单列表",
"sub_button":[
{
"type":"view",
"name":"搜索",//二级菜单
"url":"http://www.soso.com/"
},
{
"type":"view",
"name":"视频",
"url":"http://v.qq.com/"
},
{
"type":"view",
"name":"友情链接",
"url":"http://www.baidu.com/"
}]
}]
}';
$result = $this->https_request($url,$caidan);
print_r($result);
}
//封装一个函数,使用curl实现post方式的请求
function https_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
} }
?>
弄好后,在页面填写url跟token点击“提交”会有提示配置成功。
3、JS接口安全域名
在公众号管理页面,点击“公众号设置”,点击“功能设置”tab页,找到“JS接口安全域名”,点击“设置”
在设置页面中,注意查看设置要求,需要下载MP_verify_EZhQkscUv44pvLNO.txt文件到Web服务器到根目录下。
设置完毕点击保存,这样就JS接口安全域名就设置完毕啦。
4、获取accesstoken
Accesstoken有有效时间限制的,如果过期啦要重新获取,而且请求获取accesstoken的接口调用次数也有限制。所以我们必须要把每次accesstoken的结果保存起来,定时去获取,官方的说法有效期是两个小时。
5、创建菜单
在微信开发者文档中:https://mp.weixin.qq.com/wiki/home/index.html
找到“自定义菜单”下的“自定义菜单创建接口”:
https://mp.weixin.qq.com/wiki/10/0234e39a2025342c17a7d23595c6b40a.html
注意:
创建前请查看微信的菜单创建定义,只能创建三个一级菜单,二级菜单只能有5个。
具体参数看文档就知道啦。我们这里直接使用页面最下方的工具——“使用网页调试工具调试该接口”:
access_token:...
Body:{
"button": [
{
"name": "旅游导览",
"sub_button": [
{
"type": "view",
"name": "扫一扫",
"url": "http://camp.yfscms.com/wechat/order/parkingPage.wx"
},
{
"type": "view",
"name": "位置服务",
"url": "http://camp.yfscms.com/wechat/location/page.wx"
},
{
"type": "view",
"name": "投诉建议",
"url": "http://camp.yfscms.com/wechat/order/suggestPage.wx"
},
{
"type": "view",
"name": "民意调查",
"url": "http://camp.yfscms.com/wechat/qaList/page.htm"
}
]
},
{
"name": "旅游服务",
"sub_button": [
{
"type": "view",
"name": "导游预约",
"url": "http://camp.yfscms.com/wechat/guide/list.wx"
},
{
"type": "view",
"name": "车位预定",
"url": "http://camp.yfscms.com/wechat/order/parkingPage.wx"
},
{
"type": "view",
"name": "团队预定",
"url": "http://camp.yfscms.com/wechat/order/teamPage.wx"
},
{
"type": "view",
"name": "活动申报",
"url": "http://camp.yfscms.com/wechat/order/activityPage.wx"
}
]
},
{
"name": "*",
"sub_button": [
{
"type": "view",
"name": "*介绍",
"url": "http://camp.yfscms.com/wechat/camp/campInfo.wx"
},
{
"type": "view",
"name": "英烈介绍",
"url": "http://camp.yfscms.com/wechat/camp/heroList.wx"
},
{
"type": "view",
"name": "联系我们",
"url": "http://camp.yfscms.com/wechat/camp/contact.wx"
}
]
}
]
}
点击“检查问题”,如果没有问题的话,提示:Request successful
如果返回接口中的errcode不等于0,可以查看“全局返回码说明”——
https://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html
至此菜单创建完毕,可以扫一扫你的测试号,看看菜单是否完成,注意菜单的个数限制问题,微信菜单个数是有限制的!具体看官方的文档!
微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单的更多相关文章
-
《C#微信开发系列(3)-获取接口调用凭据》
3.0获取接口调用凭据 ①接口说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留 ...
-
《微信开发日志》之OAuth2验证接口
OAuth2接口说明: 企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取员工的身份信息. 通过此接口获取用户身份会有一定的时间开销.对于频繁获取用户身份 ...
-
C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
成为开发者 string[] ArrTmp = { "token", Request["timestamp"], Request["nonce&quo ...
-
(转)C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
原文地址:http://www.cnblogs.com/qidian10/p/3492751.html 成为开发者 string[] ArrTmp = { "token", Req ...
-
微信配置JS接口安全域名问题-Nginx配置
1.将下载的txt文件放入/usr/local/nginx/html/目录下面. 2.修改nginx.cong配置文件中的location标签 location / { root html; inde ...
-
微信开发使用webstorm&;phpstrom 配置
材料: 下载链接:https://pan.baidu.com/s/1pLn6jFl 密码:fgo5 -----(将其中的wecharCode.jar 下载下来,然后在webStorm 的 File ...
-
js实现鼠标右键自定义菜单(弹出层),并与树形菜单(TreeView)、iframe合用(兼容IE、Firefox、Chrome)
<table class="oa-el-panel-tree"> <tr> <td style="vertical-align: top; ...
-
微信公众帐号开发教程第4篇-----开发模式启用及接口配置Java
欢迎加入群:347245650 345531810 进行讨论相互交流 我的微信号:572839485 我的微信公众账号 我的微社区欢迎关注 索取源码←请点击 图床:没有服务器 拖拽图片 外网即 ...
-
微信JS-API封装接口——node.js版
github:https://github.com/xjnotxj/wechat_interaction_jsapi Wechat JS-API接口 功能: 用于管理和获取微信 JSSDK 生产的ac ...
随机推荐
-
Winserver下的Hyper-v “未在远程桌面会话中捕获到鼠标”
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
-
C++拷贝构造函数详解(转载)
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员 ...
-
[转]Ubuntu下GitHub的使用
转自Pythoner 本文将对Ubuntu下Git的安装,以及如何连接GitHub进行讲解. 1.环境 OS: Ubuntu13.04 64bitsGit: 1.8.1.2 2.Git安装 执行如下命 ...
-
Hadoop源码解析之: HBase Security
文不打算对这部分代码进行全面的解读,而是先对几个主要类的职能进行概述,然后再罗列一些有价值的重要细节. 第一部分:HBase Security 概述 HBase Security主要是基于User和U ...
-
poj 3259(bellman最短路径)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30169 Accepted: 10914 Descr ...
-
解决Virtual Box 安装Mac OS X当出现“hfs: summary table not allowed on FS with block size of 2048”问题
解决Virtual Box 安装Mac OS X当出现"hfs: summary table not allowed on FS with block size of 2048"问 ...
-
浅谈h5移动端页面的适配问题
一.前言 昨天唠叨了哈没用的,今天说点有用的把.先说一下响应式布局吧,我一直认为响应式布局的分项目,一下布局简单得项目做响应式还是可以可以得.例如博客.后台管理系统等.但是有些会认为响应式很牛逼,尤其 ...
-
【.net】未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
#错误描述: 在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错: “未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序” # ...
-
firewall 和 iptables 常用命令
[参考文章]:Centos7 关闭防火墙 [参考文章]:Centos7 firewall防火墙常用配置 CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 ...
-
[leetcode tree]95. Unique Binary Search Trees II
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...