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
    }
  }
  • [ ] 添加测试

/wecom-api/

    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