wecom-api
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

根据个人需求不定时不定量更新。欢迎提 Issues。

目前 License 为 GPL,个人用途可闭源,若有需求或者商用请联系我,之后版本会修改 License。

参考官方 API 文档

实现例子:

wework.message

举例应用:

<> 括起来是用户自己补充的值,只需修改这三个参数(和 http 传值)即可使用。

weToken:在 API 接收消息页面填写的 Token

weEncodingAESKey:在 API 接收消息页面填写的 EncodingAESKey

weReceiveId:在“我的企业”页面最下面的“企业 ID”

  const { WXBizMsgCrypt } = require('wecom-api')

  verifyURL (ctx) {
    const { msg_signature, timestamp, nonce, echostr } = ctx.request.query
    try {
      const wXBizMsgCrypt = new WXBizMsgCrypt(<weToken>, <weEncodingAESKey>, <weReceiveId>)
      ctx.body = wXBizMsgCrypt.verifyURL(msg_signature, timestamp, nonce, echostr).message
    } catch (e) {
      ctx.body = e
    }
  }
  
  async receiveMsg (ctx) {
    const { msg_signature, timestamp, nonce } = ctx.request.query
    const postData = ctx.request.body // 注意程序可以接收 xml 格式数据

    try {
      const wXBizMsgCrypt = new WXBizMsgCrypt(<weToken>, <weEncodingAESKey>, <weReceiveId>)
      const receivedmsg = wXBizMsgCrypt.decryptMsg(msg_signature, timestamp, nonce, postData)
      const { ToUserName, FromUserName, CreateTime, MsgType, Content, MsgId, AgentID } = receivedmsg
      // 示例回复,之后补充 message 格式引用
      const xmlText = `<xml><ToUserName><![CDATA[${FromUserName}]]></ToUserName><FromUserName><![CDATA[${ToUserName}]]></FromUserName><CreateTime>${CreateTime}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[${new Date(Date.now())} ${Date.now().toString()}: ${Content}]]></Content></xml>`
      const msg = wXBizMsgCrypt.encryptMsg(xmlText)
      ctx.body = msg
    } catch (e) {
      ctx.body = e
    }
  }
  • [ ] 添加测试

Package Sidebar

Install

npm i wecom-api

Homepage

evgo2017.com

Weekly Downloads

2

Version

0.0.2

License

GPL-3.0

Unpacked Size

55.7 kB

Total Files

11

Last publish

Collaborators

  • evgo2017