npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wego

v0.0.3

Published

weixin api.微信接口的api实现

Downloads

12

Readme

微信API的node实现

##Install

npm install wego

##Getting Started

假设你使用的是express框架

下面的代码是coffee写的。没有复杂的语法,直接脑补 括号就可以了

#app.coffee

express = require 'express'
app = express()
port = 8000
token = "your token" #你的微信token

_WeGo = require 'wego' #引入wego

#引入不同消息类型处理的处理函数 具体见下面的 accept.coffee
acceptHandle = require '.accept'

wego = new _WeGo(token, acceptHandle) #进行基本设置。配置消息的处理事件等。

app.get('/', (req, res)->
  #进行消息验证 是否来自于微信
  #如果来自于微信,则返回来自于微信的一个随机字符串 echostr,
  #否则echostr为false
  echostr = wego.veritySignature(req)

  if echostr then res.send(echostr) else res.send('error')
)

app.post('/', (req, res)->
  #获取post数据 交给wego处理既可以
  wego.parse(req, res)
)

app.listen port

# accept.coffee
_WeGo = require('wego')
wego = new _WeGo()
#一个object对象
Accept =
  #处理微信的文本消息
  parseText: (req, resp, data)->
    #用户发来的消息解析后,就在data参数里面。 当然,也绑定到了request的wego属性
    #即这里通过data 或者 req.wego.xml 都能获取到用户的数据
    console.log 'accept data:', data
    #返回消息的设定。这一部分可以写自己的业务逻辑。这里只是做个demo。返回的结果是"you say" + 用户发送过来的消息
    serverName = data.ToUserName
    clientName = data.FromUserName
    data.ToUserName = clientName
    data.FromUserName = serverName
    data.Content = "you say: #{data.Content}"

    #讲消息发送出去。
    #注意 data为微信消息xml数据格式 的json类型。 也就是把对应的标签换成相应的json属性即可。
    #注意 标签是大写 属性就大写,保持一致。
    wego.sendMsg(req, resp, data)

  #当来自于微信的xml数据无法解析时。会调用这个函数
  parseError: (req, resp)->
    console.log req.weixin.error
    console.log req.weixin.data
    resp.send ''

  #如果有消息类型没有设置自定义函数处理,则默认使用parseDefault这个函数进行处理
  parseDefault: (req, resp, data)->
    console.log "消息未处理"
    console.log data
    resp.send ''

module.exports = Accept

##API

构造函数 Wego

Wego =  require('wego')
wego = new Wego(token, options)

token

微信的token。一般是开发者在微信公众平台自己设置的。

options

Object. 里面包含了一些 函数,用于对 不同消息类型进行处理

处理用户消息主要应该包括以下这几个字段函数:

  parseText, parseImage, parseVoice, parseVideo, parseLocation, parseLink

分别处理用户发来的文本消息,图片消息, 语音消息, 视频消息, 位置消息,和 超链接消息。 也就是说当wego在request中提取到用户消息时,根据不同的消息类型会调用以上的函数进行处理。 这些函数接收三个参数request, response, data。

options = {
  parseText: function(request, response, data){

  },

  parseImage: function(){...}

  ...
}

request 即 http request. 解析后的数据会绑定在wego属性上:

console.log(request.wego)

response 即 http response

data. 解析后的数据除了会绑定到request上外 也会作为第三个参数data传过来,方便获取。

解析用户消息函数 parse

app.post('/', function(req, resp){
  wego.parse(req, resp)
})

接受两个参数 http request 和 http resposne 调用完成后就会结构初始化构造函数时的options里面的相关事件处理了。

发送消息 sendMsg

接收三个参数 http request 和 http resposne 还有响应消息的json数据 data data为可选参数。 如果data存在则使用data中的数据。如果data不存在,则使用request.wego.xml中的数据

    #讲消息发送出去。
    #注意 data为微信消息xml数据格式 的json类型。 也就是把对应的标签换成相应的json属性即可。
    #注意 标签是大写 属性就大写,保持一致。
    wego.sendMsg(req, resp, data)