订阅号与服务号的区别:
1、申请主体
2.主要用途
服务号:为企业和组织提供更强大的业务服务与用户管理能力,主要偏向服务类交互;
订阅号:为媒体和个人提供一种新的信息传播方式,主要功能是在微信侧给用户传达资讯;
3.消息展示服务号的推送消息直接显示在好友对话列表中;订阅号的推送消息则是显示在“订阅号消息”文件夹中;
4.群发次数
服务号:1个月(按自然月)内可发送4条群发消息。
订阅号:(认证用户、非认证用户)1天内可群发1条消息。
公众平台的两种模式:
1、编辑模式:直接使用微信公众平台所提供的后台操作进行用户交互。编辑模式可以使用在如下的场景:不具备开发能力的运营者,主要是进行品牌宣传、新闻媒体、自助客服的公众账号,运营初期,不需要特别多的功能,开发模式系统升级,故障等特殊情况
2、开发者模式:直接使用接口代码实现用户的交流
认识一下编辑模式:
消息群发:
自定义菜单
这里如果启用了开发者模式中的服务器配置就会强制关闭自定义菜
自动回复
开发者模式
注意:在开启开发者模式之后编辑模式中部分功能不能正常使用。即开发者模式跟编辑模式存在冲突。
为了线上服务器可以正确响应微信发送的token验证,线上代码为
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$flag = '';
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
$flag= true;
}else{
$flag =false;
}
if($flag){
echo $_GET['echostr']
}
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
测试回复消息功能
$postStr = file_get_contents('php://input');
if (!empty($postStr)){
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
//发送的消息
$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(!empty( $keyword ))
{
$msgType = "text";
//回复的消息
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}