微信公众平台开发费用其实并不高 及微信公众平台开发简单教程

今天我一朋友问我一个技术上的问题,通过PHP cURL来请求外部接口,接口返回的是一个JSON的字符串,但如果把字符串copy下来然后赋值 给一个变量再将它json_decode是OK的不会有错,可以正常的得到对应的数组。但如果直接返cURL返回的字符串json_decode返回的居 然是NULL,他试了N多办法最终没有搞定,如是就问我要怎么处理。我当时也想了很多办法,后来发现是编码的问题,改成UTF-8的编码就OK了。

   这中间不可避免的谈到了他们的应用场景和需求,发现原来是在做一个微信公众平台的开发,我说你怎么不早找我啊,免得你纠结这么久,好歹我也是在腾讯做架 构师啊,尽管不是在微信部门(我是在上海漕河泾的腾讯,这里没有微信的部门),他说原先他们是找了一家公司做的,后来完成后,想新增一个功能,但那家公司 就狮子大开口增一个功能要4W......我去试了下他们的所谓开发,其实也没什么功能就是做个了用HTML5做的手机站,然后把手机站跟微信公众平台对 接下,然后定制了几个功能,他们就花了8W,我跟我朋友说你们真有钱!你给我做,功能完全一样,我只要一半就够了...微信公众平台开发其实最主要的费用 无非就是服务器费用,域名费用,程序开发,页面设计费用等除了这些费用外,我真想不出其它的费用了,因为申请微信服务号是免费的,只要有一丁点技术基础就 能对接上,所以基本上不会产生其它的费用,总体来说微信公众平台开发的成本其实并不高。

   其实我是想说微信公众平台开发,其实成本真的不高,如果你有一些好的想法,想结合微信公众平台开发出来,你又没技术基础,所以千万不要去找那些所谓的专业微信公众平台开发的公司,90%都是大萝卜坑,不是漫天要价就是夸大微信公众平台开发的难度。

为了让大家对微信公众平台开发进一步的了解,我写个教程,废话不多说了,请往下看:
微信公众平台开发的消息流程如下图
微信公众平台消息处理流程
(注:用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成)

看了以后是不是觉得很简单啊?那接着往下看

第一步,去微信公众平台上申请公众账号,地址是:https://mp.weixin.qq.com/
微信公众平台开发
按上面的要求填写好然后注册
微信公众平台开发
去你填写的那个邮箱里验证一下,完全邮箱验证过程,成功后然后下一步
微信公众平台开发
这里注意下,这里要选组织,在为个人的只能申请订阅号,只有组织的才能申请服务号,订阅号是不能拿到用户发的消息的。你可会有很多疑问,比如为什么要拿到用户的消息啊...后面我们会讲到,所以这里你只要按这个选就好了。

之后就是按要求一一填写,然后等待微信平台审核了。

审核通过后,登录进去你就能看到下面这样的界面
微信公众平台开发当然这个审核过程可能会要花些时间,所以请稍安勿燥,耐心等候(我是通过内部工牌申请的,所以比较快)。

其它的你先不要管,都比较简单,点点就都能明白了,最主要的就是高级功能这个选项,点进去后
信息公众平台开发
选开发模式,这上面有解释两种模式的差别,所以就不多啰嗦了。进入开发模式后
微信公众平台开发
首先,你要确认开发模式已开启,就是上面图片右上角的开关
其次,你要保证你的接口配置信息的里的URL必须是外网地址,也就是说外网是可以正常访问的。好了,上面的信息都OK后,那你的微信公众平台开发的任务就完成了一大半了。

接着就是对用户发的消息进行解释与回应了,这里你首先要认真的仔细的看下微信公众平台里的消息接口,详见http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5...。这里面有你需要的POST到你接口的消息数据格式,以及你回应的数据格式。

同样是在“高级功能”菜单中配置,需要配置两项参数:
URL: 开发者应用访问地址,目前仅支持80端口
TOKEN: 随意填写,用于生成签名,以“xxxx”为例。
填写完把下面代码保存为你上面填写的URL对应的程序文件中,最后点击“提交”完成验证。(我这里用PHP做例子,实际情况请遵行你自己的程序)
<?php
define("TOKEN", "xxxx"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
    public function valid() {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            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;
        }
    }
}
?>
这就是微信公众平台校验URL是否正确接入,研究代码没有实质性意义,验证完即可删除文件,就不详细说明了
微信公众平台与开发者之间的数据交互是通过XML完成的,既然用到XML,当然得遵循规范,所以在着手开发之前先看看官方接口文档提供的XML规范,以文本消息为例:
 
当用户向微信公众账号发送消息时,微信服务器会POST给开发者一些数据:
<xml>
<!--开发者微信号-->
<ToUserName><![CDATA[toUser]]></ToUserName>
<!--发送方帐号(OpenID)-->
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<!--消息创建时间 (整型)-->
<CreateTime>12345678</CreateTime>
<!--消息类别 (text文本消息)-->
<MsgType><![CDATA[text]]></MsgType>
<!--消息内容-->
<Content><![CDATA[content]]></Content>
<!--消息ID (64位整型)-->
<MsgId>1234567890123456</MsgId>
</xml>
开发者在处理完消息后需要返回数据给微信服务器:
<xml>
<!--接收方帐号(OpenID)-->
<ToUserName><![CDATA[toUser]]></ToUserName>
<!--开发者微信号-->
<FromUserName><![CDATA[fromUser]]></FromUserName>
<!--消息创建时间 (整型)-->
<CreateTime>12345678</CreateTime>
<!--消息类别 (text文本消息)-->
<MsgType><![CDATA[text]]></MsgType>
<!--回复消息内容-->
<Content><![CDATA[content]]></Content>
<!--星标操作(位0x0001被标志时 星标刚收到的消息)-->
<FuncFlag>0</FuncFlag>
</xml>
除文本消息外,微信公众平台还支持用户发送图片消息、地理位置消息、链接消息、事件推送,而开发者还可以向微信公众平台回复音乐消息和图文消息,各类消息XML规范也可以参见官方文档。
来看看官方提供的一个PHP示例,我做了一些精简:
<?php
$wechatObj = new wechat();
$wechatObj->responseMsg();
class wechat {
    public function responseMsg() {

        //---------- 接 收 数 据 ---------- //

        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据

        //用SimpleXML解析POST过来的XML数据
        $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

        $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
        $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>";

        $msgType = "text"; //消息类型
        $contentStr = 'hello world~ http://blog.shanglema.com'; //返回消息内容

        //格式化消息模板
        $resultStr = sprintf($textTpl,$fromUsername,$toUsername,
        $time,$msgType,$contentStr);
        echo $resultStr; //输出结果
    }
}
把上面的代码上传到接口配置信息的URL对应的程序文件上,一个微信公众平台自动回复消息的功能就完成了。是不是觉得特没技术含量,是不是觉得特简单?事实就是这样,只要你了解了一切就是这么水到渠成。
好了,微信公众平台开发的简单教程就写到这里吧,我这里有一个PHP的收发消息的类,如果有需要的朋友可以邮件我,我可以发你参考下。地址是:peng.zhan##qq.com (## -> @),当然有任何问题,你也可以不耻下问,我很乐意跟大家一起分享。
本文原创,如想转载请注明出处。

本文链接地址为:http://blog.shanglema.com/open-weixin-platform-development

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值