New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

koa2wechat

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa2wechat - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

lib/wechat/Exception.js

7

config.example.js
let config = {
wechat:{
weconfig:{
local_token_path:__dirname + '/src/token.txt',
appid:"your app id",
secret:"your secret"
secret:"your secret",
token:"your token for encrypt"
}
}
export const {wechat} = config
export const {weconfig} = config
export default config

@@ -24,3 +24,3 @@ 'use strict';

var replyBuilder = new _index.ReplyBuilder();
var weReply = new _index.WeReply();

@@ -36,3 +36,3 @@ // 生成回复将会使用到的meta信息,包括 本机`from`, 目标`to`, 时间戳`ts`(时间戳非必选项)

// 传入回复选项,生成相应的xml字符串
var rpl = replyBuilder.genXML(textRpl);
var rpl = weReply.genXML(textRpl);
// 把Promise 返回回去

@@ -39,0 +39,0 @@ return Promise.resolve(rpl);

'use strict';
require('babel-polyfill');
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReplyBuilder = exports.wLoader = exports.Wechat = undefined;
exports.k2w = exports.WeReply = exports.WeHandler = exports.WeConnector = exports.Wechat = undefined;
var _Loader = require('./wechat/Loader');
require('babel-polyfill');
var _Loader2 = _interopRequireDefault(_Loader);
var _WeConnector = require('./wechat/WeConnector');
var _WeConnector2 = _interopRequireDefault(_WeConnector);
var _Wechat = require('./wechat/Wechat');

@@ -16,15 +18,21 @@

var _Reply = require('./wechat/Reply');
var _WeReply = require('./wechat/WeReply');
var _Reply2 = _interopRequireDefault(_Reply);
var _WeReply2 = _interopRequireDefault(_WeReply);
var _WeHandler = require('./wechat/WeHandler');
var _WeHandler2 = _interopRequireDefault(_WeHandler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.Wechat = _Wechat2.default;
exports.wLoader = _Loader2.default;
exports.ReplyBuilder = _Reply2.default;
exports.default = {
exports.WeConnector = _WeConnector2.default;
exports.WeHandler = _WeHandler2.default;
exports.WeReply = _WeReply2.default;
var k2w = exports.k2w = {
Wechat: _Wechat2.default,
wLoader: _Loader2.default,
ReplyBuilder: _Reply2.default
WeConnector: _WeConnector2.default,
WeHandler: _WeHandler2.default,
WeReply: _WeReply2.default
};
{
"name": "koa2wechat",
"version": "1.0.2",
"version": "1.0.3",
"description": "simple wechat backend based on koa2",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -20,10 +20,13 @@ #koa2wechat

```
2.引入模块(默认导出{Wechat,wLoader,ReplyBuilder},下文详细介绍)
2.引入模块(模块导出{Wechat,WeConnector,WeHandler,WeReply},下文详细介绍)
```javascript
import {wLoader} from 'koa2wechat'
import Koa from 'koa2'
// 这两个是koa2中间件
import {WeConnector,WeHandler} from './src/index'
```
3.引入配置文件
```javascript
import config from './config'
import {weconfig} from './config'
// 或者 import config from './config'
// let weconfig = config.weconfig
```

@@ -33,10 +36,11 @@ 配置文件示例:config.example.js

let config = {
wechat:{
local_token_path:__dirname + '/src/token.txt',
appid:"your app id",
secret:"your secret"
}
weconfig:{
local_token_path:__dirname + '/src/token.txt',
appid:"your app id",
secret:"your secret",
token:"your token for encrypt"
}
}
export const {wechat} = config
export const {weconfig} = config
export default config

@@ -47,14 +51,19 @@ ```

const app = new Koa()
app.use(wLoader(config.wechat,null))
app
// WeConnector可以使用 用户自定义的token 接入微信平台
.use(WeConnector(weconfig.token))
// 接入后,WeHandler 处理用户请求 这里的参数是根据业务逻辑编写的代码,具体看下面的介绍
.use(WeHandler(null))
app.listen(3000)
```
此时公众号会默认自动回复文本消息,若要自定义规则需要将上面的null替换为根据业务逻辑写出的handler
至此,之用到了4个模块中的2个模块,实际{WeConnector,WeHandler}这两个模块是koa2中间件
剩下的{Wechat,WeReply}则是用于操作微信后台的工具类
5.根据业务逻辑自定义handler
5.根据业务逻辑自定义handler,要特别注意的是,handler一定要返回一个Promise或者它是一个Promise
例如:/src/handler/defaultHandler.js
例如:/src/handler/defaultHandler.js
```javascript
import {ReplyBuilder} from 'koa2wechat'
// ReplyBuilder是一个类,用于创建各类返回信息,生成对应的xml字符串
import {WeReply} from '../index'
// WeReply 是一个类,用于创建各类返回信息,生成对应的xml字符串
const welcomeMsg = 'hello from koa2wechat'

@@ -64,27 +73,29 @@

let defaultHandler = (xml)=>{
// 获取来源FromUserName,在回复信息中将其设置为目的地 `to`
// 获取我们公众号的标识ToUserName,在回复信息中将其设置为发送地 `from`
let {FromUserName,ToUserName} = xml
// 获取来源FromUserName,在回复信息中将其设置为目的地 `to`
// 获取我们公众号的标识ToUserName,在回复信息中将其设置为发送地 `from`
let {FromUserName,ToUserName} = xml
// 这里可以插入需要执行的业务逻辑代码,比如判断消息来源是谁,他回复了什么类型的数据之类的
// 这里可以插入需要执行的业务逻辑代码,比如判断消息来源是谁,他回复了什么类型的数据之类的
// 实例化builder
let replyBuilder = new ReplyBuilder()
// 实例化weReply
let weReply = new WeReply()
// 生成回复将会使用到的meta信息,包括 本机`from`, 目标`to`, 时间戳`ts`(时间戳非必选项)
let meta = {from:ToUserName,to:FromUserName,ts:new Date().getTime()}
// 回复文本类型的数据,要构造选项`type` 和 回复内容`content` 以及上面获取的 meta 信息
let textRpl = {
meta:meta,
type:"text",
content:welcomeMsg
}
// 传入回复选项,生成相应的xml字符串
let rpl = replyBuilder.genXML(textRpl)
// 把Promise 返回回去
return Promise.resolve(rpl)
// 生成回复将会使用到的meta信息,包括 本机`from`, 目标`to`, 时间戳`ts`(时间戳非必选项)
let meta = {from:ToUserName,to:FromUserName,ts:new Date().getTime()}
// 回复文本类型的数据,要构造选项`type` 和 回复内容`content` 以及上面获取的 meta 信息
// 更多类型的数据在下面会提供
let textRpl = {
meta:meta,
type:"text",
content:welcomeMsg
}
// 传入回复选项,生成相应的xml字符串
let rpl = weReply.genXML(textRpl)
// 把Promise 返回回去
return Promise.resolve(rpl)
}
export default defaultHandler
```

@@ -125,6 +136,8 @@ 推荐方式

if(!MsgType) return
// more about MsgType: http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
switch(MsgType){
// 下面定义了客户端可能的几种请求(应该是全部包含了的)
// 订阅的时候会触发'event'
case 'event':
// 客户端发送文字/图片/语音/视频/小视频/地址/链接时,MsgType的相应值,可以参考
// http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
case 'text':

@@ -146,2 +159,9 @@ case 'image':

然后再将handler引入,将第4步中的null替换为handler即可
其实,到这里为止,我们一直没有用到Wechat对象,是因为,微信公众号有不同的类型
参考:[官方文档](http://mp.weixin.qq.com/wiki/7/2d301d4b757dedc333b9a9854b457b47.html)
(未认证订阅号 微信认证订阅号 未认证服务号 微信认证服务号)
不同类型的号,有不同的权限,譬如对素材的管理,用户的管理,等等。
所有的操作都涉及到access_token,而Wechat类的核心就是要维护access_token,
现在的Wechat类,只简单实现了对access_token的维护,
因此有需要的开发者可以自行实现在这个基础之上,自己需要的功能,譬如素材上传,对象分组等等。

@@ -202,2 +222,2 @@ 6.示例程序在这里:

└── templates.js(template测试/未完成)
```
```
import Koa from 'koa'
import config from './config'
import {wLoader} from './src/index'
// middle ware
import {WeConnector,WeHandler} from './src/index'
// util class
import {Wechat,WeReply} from './src/index'
import {weconfig} from './config'
const app = new Koa()
const wechat = new Wechat(weconfig)
app.use(wLoader(config.wechat,null))
app
// connect and reply
.use(WeConnector(weconfig.token))
// handle and gen response xml string
.use(WeHandler(null))
app.listen(3000)
app.listen(3000,()=>{
console.log('Listening on port 3000')
})

@@ -1,2 +0,2 @@

import {ReplyBuilder} from '../index'
import {WeReply} from '../index'
// ReplyBuilder是一个类,用于创建各类返回信息,生成对应的xml字符串

@@ -15,3 +15,3 @@ const welcomeMsg = 'hello from koa2wechat'

// 实例化builder
let replyBuilder = new ReplyBuilder()
let weReply = new WeReply()

@@ -27,3 +27,3 @@ // 生成回复将会使用到的meta信息,包括 本机`from`, 目标`to`, 时间戳`ts`(时间戳非必选项)

// 传入回复选项,生成相应的xml字符串
let rpl = replyBuilder.genXML(textRpl)
let rpl = weReply.genXML(textRpl)
// 把Promise 返回回去

@@ -30,0 +30,0 @@ return Promise.resolve(rpl)

@@ -1,11 +0,14 @@

import wLoader from './wechat/Loader'
import 'babel-polyfill'
import WeConnector from './wechat/WeConnector'
import Wechat from './wechat/Wechat'
import ReplyBuilder from './wechat/Reply'
import WeReply from './wechat/WeReply'
import WeHandler from './wechat/WeHandler'
export {Wechat,wLoader,ReplyBuilder}
export {Wechat,WeConnector,WeHandler,WeReply}
export default {
export let k2w = {
Wechat:Wechat,
wLoader:wLoader,
ReplyBuilder:ReplyBuilder
WeConnector:WeConnector,
WeHandler:WeHandler,
WeReply:WeReply
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc