网站改版
|
WAP网站制作
|
域名注册
|
虚拟主机
|
服务器
|
海微商
|
海微信
|
海微通
|
无障碍
| 24小时服务电话:13807590485
海南网站建设
海南网站制作
海口网站建设
三亚网站建设
儋州网站建设
五指山网站建设
文昌网站建设
琼海网站建设
万宁网站建设
东方网站建设
定安网站建设
网站首页
网站首页
网站建设
网站建设
微信开发
微信开发
网站推广
网站推广
琼海世纪华联
网站超市
网站超市
客户案例
客户案例
网站模板
网站模板
关于我们
关于我们
无障碍
微信开发
微信系统开发
微信开发功能
公众号基础教程
开发技术资讯
公众号推广营销
客户案例
联系我们
QQ服务群:
28519571
工作时间:
86-0898-31568080
传真号码:
86-0898-31568085
24小时服务:
0138-07590485
您现在的位置: 首页 >> 微信开发 >> 开发技术资讯
开发技术资讯
微信公众平台NodeJs开发之路--消息处理
世纪华联 | 2018-01-26 23:52:49 | 阅读:12269
关于微信开放平台的申请过程,请查看官方地址:
http://mp.weixin.qq.com/cgi-bin/ ... -doc&lang=zh_CN
现在贴出来如何处理消息的,XML的解析使用了node-xml这个模块 ,使用命令:npm install node-xml 安装.
001var crypto=require("crypto");
002var xml=require("./node-xml/lib/node-xml.js");
003var messageSender=require("./messageSender.js");
004function isLegel(signature,timestamp,nonce,token){
005var array=new Array();
006array[0]=timestamp;
007array[1]=nonce;
008array[2]=token;
009array.sort();
010var hasher=crypto.createHash("sha1");
011var msg=array[0]+array[1]+array[2];
012hasher.update(msg);
013var msg=hasher.digest('hex');
014if(msg==signature){
015return true;
016}else{
017return false;
018}
019}
020
021function processMessage(data,response){
022var ToUserName="";
023var FromUserName="";
024var CreateTime="";
025var MsgType="";
026var Content="";
027var Location_X="";
028var Location_Y="";
029var Scale=1;
030var Label="";
031var PicUrl="";
032var FuncFlag="";
033
034var tempName="";
035var parse=new xml.SaxParser(function(cb){
036cb.onStartElementNS(function(elem,attra,prefix,uri,namespaces){
037tempName=elem;
038});
039
040cb.onCharacters(function(chars){
041chars=chars.replace(/(^s*)|(s*$)/g, "");
042if(tempName=="CreateTime"){
043CreateTime=chars;
044}else if(tempName=="Location_X"){
045Location_X=cdata;
046}else if(tempName=="Location_Y"){
047Location_Y=cdata;
048}else if(tempName=="Scale"){
049Scale=cdata;
050}
051
052
053});
054
055cb.onCdata(function(cdata){
056
057if(tempName=="ToUserName"){
058ToUserName=cdata;
059}else if(tempName=="FromUserName"){
060FromUserName=cdata;
061}else if(tempName=="MsgType"){
062MsgType=cdata;
063}else if(tempName=="Content"){
064Content=cdata;
065}else if(tempName=="PicUrl"){
066PicUrl=cdata;
067}else if(tempName=="Label"){
068Label=cdata;
069}
070console.log("cdata:"+cdata);
071});
072
073cb.onEndElementNS(function(elem,prefix,uri){
074tempName="";
075});
076
077cb.onEndDocument(function(){
078console.log("onEndDocument");
079tempName="";
080var date=new Date();
081var yy=date.getYear();
082var MM=date.getMonth() + 1;
083var dd=date.getDay();
084var hh=date.getHours();
085var mm=date.getMinutes();
086var ss=date.getSeconds();
087var sss=date.getMilliseconds();
088var result=Date.UTC(yy,MM,dd,hh,mm,ss,sss);
089var msg="";
090if(MsgType=="text"){
091msg="谢谢关注,你说的是:"+Content;
092}else if (MsgType="location"){
093msg="你所在的位置: 经度:"+Location_X+"纬度:"+Location_Y;
094}else if (MsgType="image"){
095msg="你发的图片是:"+PicUrl;
096}
097messageSender.sendTextMessage(FromUserName,ToUserName,CreateTime,msg,FuncFlag,response);
098
099});
100});
101parse.parseString(data);
102}
103module.exports.isLegel=isLegel;
104module.exports.processMessage=processMessage;
调用过程:
view source print?
01var app=require("express").createServer();
02var wx=require('./lib/wx');
03var fs=require("fs");
04app.get('/',function(req,response){
05
06fs.readFile("./qrCode.jpg","binary",function(err,file){
07if(err){
08response.writeHead(500,{"Content-Type":"text/plain"});
09response.write(err+"n");
10}else{
11response.writeHead(200,{"Content-Type":"image/jpg"});
12response.write(file,"binary");
13}
14response.end();
15});
16});
17
18
19app.get('/wx',function(req,res){
20var signature=req.query.signature;
21var timestamp=req.query.timestamp;
22var nonce=req.query.nonce;
23var echostr=req.query.echostr;
24var check=false;
25check=wx.isLegel(signature,timestamp,nonce,token);//替换成你的token
26if(check){
27res.write(echostr);
28}else{
29res.write("error data");
30}
31res.end();
32});
33app.post('/wx',function(req,res){
34var response=res;
35var formData="";
36req.on("data",function(data){
37formData+=data;
38});
39req.on("end",function(){
40wx.processMessage(formData,response);
41});
42});
43app.listen(3000);
44
45<DIV>
46
47
48</DIV>
海南网站建设
|
海南网站制作
|
海口网站建设
|
三亚网站建设
|
儋州网站建设
|
五指山网站建设
|
文昌网站建设
|
琼海网站建设
|
万宁网站建设
|
东方网站建设
|
定安网站建设
|
屯昌网站建设
|
澄迈网站建设
|
临高网站建设
|
白沙网站建设
|
昌江网站建设
|
乐东网站建设
|
陵水网站建设
|
保亭网站建设
|
琼中网站建设
|
海口精英网
|
三亚精英网
|
文昌精英网
|
琼海精英网
|
陵水精英网
|
儋州精英网
|
万宁精英网
|
澄迈精英网
|
海微通
合作伙伴
企业发展
企业文化
联系我们
在线订购
网站地图
返回首页
手机版
海口世纪华联科技有限公司2024版权所有 24小时服务热线:13807590485 欢迎来电咨询
地址:海南省.海口市.海甸二东路环惠大厦6楼(南宝路明都大厦107#) 公司电话:0898-31568080 31568060 QQ:85398489
全国合作联盟分布:海南海口 四川成都 湖北武汉 湖南长沙 安徽合肥 广东深圳 山西太原 西藏拉萨
技术服务: E_mail:server@hnzlweb.com 服务订购:E_mail:server@hnzlweb.com 在线客服邀请
琼ICP备10201086号-15
推广关键字:
琼海网站建设
,
琼海网站制作
,
琼海网站开发
,
琼海微信开发
,
琼海微信公众号开发
,
琼海微信公众号代运营
,
琼海模板网站制作
,
琼海网页设计
,
琼海网络公司