# koa3-wechat

> wechat api modified by windsome.feng

Latest version **1.1.9** (published 2019-03-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install koa3-wechat
pnpm add koa3-wechat
yarn add koa3-wechat
bun add koa3-wechat
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.9 |
| Published | 2019-03-28 |
| First published | 2017-03-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 153.6 KB |
| Known vulnerabilities | 0 (+3 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 10 |
| Author | windsome |
| Maintainers | windsome |
| Keywords | wechat, wexin |

## Links

- npm: https://www.npmjs.com/package/koa3-wechat
- Repository: https://github.com/windsome/koa3-wechat
- Homepage: https://github.com/windsome/koa3-wechat#readme
- Issues: https://github.com/windsome/koa3-wechat/issues
- npm.io page: https://npm.io/package/koa3-wechat

## Dependencies (7)

- [ejs](https://npm.io/package/ejs.md) ^2.5.6
- [lodash](https://npm.io/package/lodash.md) ^4.17.4
- [xml2js](https://npm.io/package/xml2js.md) 0.4.4
- [raw-body](https://npm.io/package/raw-body.md) ^2.2.0
- [formstream](https://npm.io/package/formstream.md) ^1.1.0
- [wechat-crypto](https://npm.io/package/wechat-crypto.md) 0.0.2
- [isomorphic-fetch](https://npm.io/package/isomorphic-fetch.md) ^2.2.1

## Recent versions

- 1.1.9 (latest) — 2019-03-28
- 1.1.8 — 2019-01-02
- 1.1.7 — 2018-12-16
- 1.1.5 — 2018-12-16
- 1.1.4 — 2018-12-16
- 1.1.3 — 2018-12-16
- 1.1.0 — 2018-12-05
- 1.0.4 — 2018-09-28
- 1.0.3 — 2018-09-21
- 1.0.2 — 2018-09-21
- 1.0.1 — 2018-01-10
- 1.0.0 — 2018-01-10
- 0.1.9 — 2017-10-30
- 0.1.8 — 2017-10-30
- 0.1.7 — 2017-10-24
- … 8 more at https://npm.io/package/koa3-wechat/versions

## README

koa3-wechat [![NPM version](https://badge.fury.io/js/koa3-wechat.png)](http://badge.fury.io/js/koa3-wechat) [![Build Status](https://travis-ci.org/windsome/koa3-wechat.png?branch=master)](https://travis-ci.org/windsome/koa3-wechat) [![Dependencies Status](https://david-dm.org/windsome/koa3-wechat.png)](https://david-dm.org/windsome/koa3-wechat) [![Coverage Status](https://coveralls.io/repos/windsome/koa3-wechat/badge.png)](https://coveralls.io/r/windsome/koa3-wechat)
======

微信公众平台消息接口服务中间件与API SDK

## 安装
```sh
npm install koa3-wechat
```

## 功能列表
+ 微信用户消息和事件推送处理功能（即接受URL转发的消息），开发者可在 开发->基本设置->修改配置->URL(服务器地址) 设置。
  - 对应于wechat.js
  - 自动回复（文本、图片、语音、视频、音乐、图文）
  - 会话支持（创新功能）
+ 微信支付API支持
  - 对应wepay.js
  - 普通商户
  - 境内服务商版本（包含特约商户）
+ 微信公众号API支持
  - oauth.js 支持oauth2网页认证
  - jssdk.js 支持jssdk开发
  - user.js 用户管理接口
  - qrcode.js 获取永久及临时二维码
  - template.js 模板消息支持
  - media.js 多媒体接口
  - menu.js 自定义菜单
+ 具体微信公众平台功能清单详见 [公众平台api完成进度](./doc/api_mp.md)
+ 具体微信支付功能清单详见 [微信支付api完成进度](./doc/api_payment.md)

## 与koa2配合使用
### 公众号消息自动回复，使用wechat.js.
详见 [wechat.js用法](./doc/usage_wechat.md)

### 使用方法
#### 微信支付使用方法
```
  // 服务商下特约商户的参数
  let config = {
    appId: 'wxc...................', //服务商APPID，邮件中
    mchId: '14........',
    notifyUrl: 'http://<你的域名>/apis/pay_notify', // 设置到微信支付后台
    partnerKey: '1234567890abcdefghijklmnopqrstuv', // 设置成你自己的key，在pay.weixin.qq.com设置
    subAppId: 'wxf...............',
    subMchId: '14........',
    pfx: fs.readFileSync(__dirname + '/apiclient_cert_14.........p12'),
    passphrase: '14........'
  }

  // 普通商户的参数
  let config = {
    appId: 'wx7...................', //服务商APPID，邮件中
    mchId: '14........',
    notifyUrl: 'http://<你的域名>/apis/pay_notify', // 设置到微信支付后台
    partnerKey: '1234567890abcdefghijklmnopqrstuv', // 设置成你自己的key，在pay.weixin.qq.com设置
    pfx: fs.readFileSync(__dirname + '/apiclient_cert_14.........p12'),
    passphrase: '14........'
  },

  // 初始化
  let wepay = new WechatPay(config);

  // 获取订单的预支付信息
  var trade = {
    body: '描述信息', //最长127字节
    attach: '附加信息', //最长127字节
    out_trade_no: '<订单ID，一般用订单表的唯一ID或UUID>', //
    total_fee: '<订单总价>', //以分为单位，货币的最小金额
    trade_type: 'JSAPI',
    spbill_create_ip: '<发起支付的IP>', //ctx.request.ip
  };
  if (config.subMchId) {
    // 特约商户, 传入sub_openid
    trade = { ...trade, sub_openid: openid };
  } else {
    // 普通商户，传入openid
    trade = { ...trade, openid };
  }
  var params = await wepay.getBrandWCPayRequestParams(trade);
  if (!params || !(params.package && params.paySign)) {
    console.log('error! getBrandWCPayRequestParams() return null!');
  }
  // 支付成功后会有notify
  // see <https://github.com/windsome/windpress/blob/1619f7ec01e2cb1e85857702d381304e79713e53/server/wechat/index.js#L269>

  // 退款
  var retobj = await wepay.refund({ out_trade_no });

```

## 实例
1. 艺术品挖宝 <http://mp.zdili.com> , 公众号演示，搜索 "帝利文化"
2. nbiot物联网+微信公众号+微信支付 ，公众号演示，搜索 "飞觉网络"

## 实例源码
1. windpress是一个简单的一元夺宝项目，其中有微信api使用方法
项目源码 <https://github.com/windsome/windpress>
2. 即将上线，一个nbiot的项目，用户通过微信扫码某个nbiot设备进入页面支付，支付完成启动设备。

## 微信官方文档，详细API
原始API文档请参见：[消息接口指南](http://mp.weixin.qq.com/wiki/index.php?title=消息接口指南)。

## 交流群
微信开发QQ群： 573207886

## 捐赠
<img src="./219668615.jpg" width="200" alt="捐赠" align=center />

## License
The MIT license.

## 修订表
1. 2018.9.19增加了backend支持,允许在微服务情况下配置后端缓存.目前允许`memory`和`redis`,默认为`memory`模式.
```
配置方法为参数中加入了
opts = {
  appId,
  appSecret,
  backend: {
    type, // memory, redis.
    url // redis url
  }
}
```

---
_Source: https://npm.io/package/koa3-wechat · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
