php微信开发 -- 两种运营模式及服务器配置
微信的两种运营模式
编辑模式:使用微信公众平台提供的功能
开发者模式:通过腾讯的api接口调用相应程序进行二次开发
编辑模式
应用场景:
l 不具备开发能力的运营者
l 主要是进行品牌宣传、新闻媒体、自助客服的公众帐号
l 运营初期,不需要特别多的功能
l 开发模式系统升级、故障等特殊情况
功能演示:
1)自动回复
被添加自动回复:当我们订阅或关注微信公众平台时,系统自动发送的回复,我们称之为关注回复或订阅回复。
关键词自动回复:当用户输入的关键词与我们系统设置的关键词相匹配时,自动返回的回复。
消息自动回复:当用户输入的关键词与我们系统设置的关键词不匹配时,自动返回的回复。
2)自定义菜单(只有订阅号认证和服务号)

案例1:简易号码簿
项目需求:
用户关注后或输入?自动弹出自定义回复文本信息如下:
l 【1】特种服务号码
l 【2】通讯服务号码
l 【3】银行服务号码
l 【@】用户反馈
回复1
常用特种服务号码:
匪警:110
火警:119
急救中心:120
回复2
常用通讯服务号码:
中移动:10086
中电信:10000
中联通:10010
回复3
银行服务号码
建设银行:95533
工商银行:99588
农业银行:95599
回复4
尊敬的用户,为了更好的为您服务,请将系统的不足之处反馈给我们。
反馈格式:@+建议内容
例如:@希望增加***号码
回复:感谢您的宝贵建议,我们会努力为您提供更好的服务!
关注:
欢迎关注简易号码簿!
在这里,我们为您提供常用号码查询服务。您可以通过文本菜单交互或关键字搜索的方式查找号码。
快回复?开始体验吧!
未全匹配:当我们输入的关键词带?即可实现匹配
已全匹配:只有当我们输入关键词?才能实现匹配
案例2:仿2345网址导航
自定义菜单
一级菜单:最多3个
二级菜单:最多5个
项目需求:
便捷生活:
网址导航:http://m.2345.com/
天气冷暖:http://waptianqi.2345.com
快递查询:http://tools.2345.com/m/kuaidi.htm
轻松娱乐:
讲笑话:http://m.2345.com/index.php?c=happy
找小说:http://book.2345.com/m/
看视频:http://v.2345.com/m/
更多选择:
社交:http://m.2345.com/index.php?c=category&id=3
应用:http://m.2345.com/index.php?c=category&id=24
招聘:http://m.2345.com/index.php?c=category&id=31
开发者模式
默认情况微信只开启了编辑模式,两者无法共存,所以开启开发者时,必须关闭编辑模式
编辑模式原理图:

开发者模式原理图

准备:
自定义服务器:(BAE)
1)微信验证接口下载

找到php示例文件下载地址:单击下载
2)微信验证接口分析

这是php示例代码内容,必须保证你在公众平台中填写的token和这里定义的TOKEN常量的值保持一致
第一次做服务器配置(验证)的时候,运行valid()方法。
通过验证之后,就可以通过微信往这边发消息了,这时候就不需要再验证了,所以要将valid()方法注释掉,运行responseMsg()方法。如下:

3)微信响应接口
//响应信息
public function responseMsg()
{
//get post data, May be due to the different environments
//$GLOBALS["HTTP_RAW_POST_DATA"]功能与$_POST类似用于接收HTTP POST数据,两者不同在于GLOBALS可以接收xml数据
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
the best way is to check the validity of xml by yourself */
//解析xml时,不解析entity实体(防止产生文件泄露)
libxml_disable_entity_loader(true);
//simplexml_load_string载入xml到字符串
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//用户的微信端(手机端)
$fromUsername = $postObj->FromUserName;
//微信公众平台
$toUsername = $postObj->ToUserName;
//接收用户发送过来的数据,存储$keyword里
$keyword = trim($postObj->Content);
//时间戳
$time = time();
//定义文本消息xml模板
$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 ))
{
//定义返回消息类型(text文本)
$msgType = "text";
//返回响应回复
$contentStr = "欢迎光临传智播客,客官有什么能为您服务的么?";
//sprintf()函数,把字符串按照指定模式进行格式化%s
//有两个重要参数(格式化字符串,格式化变量)
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
php微信开发 -- 两种运营模式及服务器配置的更多相关文章
- 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置
摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...
- Spark on YARN两种运行模式介绍
本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发) 问题导读 1.Spark ...
- JAVA学习篇--JAVA两种编程模式控制
在Drp项目中,解说了两种编程模式Model 1和Model2.以下是对这两种模式的简单理解.以及因为Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对照学习一下. ...
- spark on mesos 两种运行模式
spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用. 细粒度模式 优点 spark默认运行的 ...
- Spark on YARN的两种运行模式
Spark on YARN有两种运行模式,如下 1.yarn-cluster:适合于生产环境. Spark的Driver运行在ApplicationMaster中,它负责向YARN Re ...
- thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。
thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...
- 【Spark篇】--Spark中Standalone的两种提交模式
一.前述 Spark中Standalone有两种提交模式,一个是Standalone-client模式,一个是Standalone-master模式. 二.具体 1.Standalon ...
- LR两种录制模式的区别
loadrunner的录制模式分为如下两种录制模式: HTML-based script,也称为高层录制: URL-based script,也称为底层录制. 两种录制模式的区别:1)脚本不同:高层录 ...
- tensorflow学习之(二)Seesion的两种打开模式
#Seesion的两种打开模式 import tensorflow as tf matrix1 = tf.constant([[3,3]])#一行两列的一个矩阵 matrix2 = tf.consta ...
随机推荐
- mysql 怎么给一个表一次增加多个字段, mysql 添加 多个 字段
sql 语句: ALTER TABLE oversea_liveauctioneers_detail_info_2018 ADD `result` LONGTEXT, ADD `buyer_premi ...
- kafka工作原理简介
消息队列 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行 ...
- ise和modelsim联合仿真的一些准备
首先要在modelsim中编译xilinx的三个库,分别是unisims库,simprims库,和corelib库,其中unisims库全称为(library of united component ...
- 2014年百度之星资格赛第四题Labyrinth
Problem Description 度度熊是一仅仅喜欢探险的熊.一次偶然落进了一个m*n矩阵的迷宫.该迷宫仅仅能从矩阵左上角第一个方格開始走.仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...
- 利用命令行引用外部jar包以使程序正常执行的4种方法
声明:本博客为原创博客.未经同意.不得转载!原文链接为http://blog.csdn.net/bettarwang/article/details/30976069 平时写一些小的Java Demo ...
- UnityTestTools測试工具
由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ...
- [转] 职业规划:一个老鸟眼中“IT民工”的发展方向
IT行业“挣钱太容易”,“IT不像政府管房产这么严,想干嘛就干嘛,另外都跑到境外去上市,没干两年市值翻好多倍,利润比地产高出几十倍几千倍,我们投入10块钱赚1块钱,IT行业投入10块钱赚1000块钱, ...
- 手机防盗之获取手机经纬度(Android)
获取手机经纬度有gps , network , 基站 三种方式,我们可以根据定位的条件,获取一个最好的定位方式.然后将获取到经纬度信息发送到指定的手机号码中. /* * 单态只允许存在一个实例. * ...
- 09、win32 转换为 store app
1.机制: 微软的 Project Centernial ( Project C) 项目的就是把传统的 windows桌面应用程序 转换为 windows10 store app (appx). 目的 ...
- mysql:索引原理与慢查询优化
一 索引的原理 1. 索引原理 索引的目的在于提高查询效率,与我们查阅图书所用的目录是一个道理:先定位到章,然后定位到该章下的一个小节,然后找到页数.相似的例子还有:查字典,查火车车次,飞机航班等 本 ...