npm i anger-wechat
var AngerWechat = require('anger-wechat')
var weixinApi = new AngerWechat({
appId: '[your appId]', // appId 必传
appSecret: '[your appSecret]', // appSecret 必传
authUrl: 'http://www.test.cc/get-weixin-code.html'
})
如果需要支付的话
var AngerWechat = require('anger-wechat')
var weixinApi = new AngerWechat({
appId: '[your appId]', // appId 必传
appSecret: '[your appSecret]', // appSecret 必传
authUrl: 'http://www.test.cc/get-weixin-code.html', // 可选 微信auth2.0授权公共页面
payment: { // 可选 如果需要支付模块的话
mchId: '123456',
partnerKey: '456789',
pfx: path.join(__dirname, 'apiclient_cert.p12'), //【可选】证书路径,不传大多接口掉不了
notifyUrl: '' // 【可选】微信支付接受到结果'
}
})
- AngerWechat
建议access_token保存在数据库
获取 access_token 戳我查看官方文档 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
weixinApi.getGlobalAccessToken()
- 无参数
返回 access_token
{
"code": 200,
"msg": "请求成功",
"data": {
"access_token": "11_oTBrYVsT9wqa_-q3WDNEBOtfz1XKdM7YKIcNBEiu29Wfh5yTnlqaj5W0hMuxZ7C9FlY7CxD0RjR35V1ik1M3Nyi5QENcgFKhh0gYoBnAXEQ2oV93sVtO7IRqhh1kd9QLG8fwyA3vFRdifpJCOVLgAGAVCS",
"expires_in": 7200
}
}
let access_token = await weixinApi.getGlobalAccessToken()
判断是否是微信环境
weixinApi.isWechat([@userAgent: String]
)
- @userAgent : 浏览器useragent
返回 true | false
let ua = request.headers["user-agent"]
let isWeixin = weixinApi.isWechat(ua)
建议getJsTicket保存在数据库
获取 js api_ticket 戳我查看官方文档 api_ticket 是用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token 来获取。
weixinApi.Web.getJsTicket([@config: Object]
)
- @config :传入从上一步获取到的access_token 获取 js api_ticket
{ access_token: '11_oTBrYVsT9wqa_-q3W...' // 以上一步获取到的access_token 获取 js api_ticket }
返回 ticket
{
"code": 200,
"msg": "ok",
"data": {
"errcode": 0,
"errmsg": "ok",
"ticket": "HoagFKDcsGMVCIY2vOjf9oKOmI5MR...",
"expires_in": 7200
}
}
let jsTrickt = await weixinApi.Web.getJsTicket({
access_token: '11_oTBrYVsT9wqa_-V1LgAGAVCS...'
})
获取 Auth地址,重定向之后用来获取code
weixinApi.Web.getAuthUrl([@config: Object]
)
- @config : 配置
{ edirect_uri: 'http://www.baidu.com', scope: 'snsapi_userinfo' // snsapi_base:静默授权,snsapi_userinfo:提示授权(可以后续获取用户信息) }
返回解析后的重定向url
let authURl = weixinApi.Web.getAuthUrl({
redirect_uri: 'http://www.baidu.com',
scope: 'snsapi_userinfo' // snsapi_base:静默授权,snsapi_userinfo:提示授权(可以后续获取用户信息)
})
console.log(authURl)
// http://www.toolos.cc/get-weixin-code.html?appid=wxf638c1f64239e786&redirect_uri=http://www.baidu.com&scope=snsapi_userinfo&state=STATE
根据code获取 openid
weixinApi.Web.getAuthAccessTokenByCode([@config: Object]
)
- @config : 配置
{ code: '061729xv1BtSAa09g8yv1hr0xv1729xB' }
返回openid
{
"code": 200,
"msg": "请求成功",
"data": {
"access_token": "11_Vc7D8AoYURWoECzJgD6Q1ccUOOHypO...",
"expires_in": 7200,
"refresh_token": "11_ii3uONcMPA-04RjuLlckMMiwaDGF2MjW2SB5...",
"openid": "oI-Aa04T6FrpFFpTfyAaXR4SKacU",
"scope": "snsapi_userinfo"
}
}
let codeInfo = await weixinApi.Web.getAuthAccessTokenByCode({
code: '061729xv1BtSAa09g8yv1hr0xv1729xB'
})
根据 getAuthAccessTokenByCode
获取的 access_token
和 openid
获取用户信息,注意这里的获取回调url方法 getAuthUrl
的 scope
需要传 snsapi_userinfo
weixinApi.Web.getUserInfo([@config: Object]
)
- config: 配置
{ access_token: access_token, // 根据 `getAuthAccessTokenByCode` 获取的 `access_token` openid: openid // 根据 `getAuthAccessTokenByCode` 获取的 `openid` }
{
"code": 200,
"msg": "请求成功",
"data": {
"openid": "oI-Aa04T6FrpFFpTfyAaXR4SKacU",
"nickname": "吃鱼的帆",
"sex": 1,
"language": "zh_CN",
"city": "**",
"province": "**",
"country": "中国",
"headimgurl": "http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfT...",
"privilege": []
}
}
let userInfo = await weixinApi.Web.getUserInfo({
access_token: codeInfo.data.access_token,
openid: codeInfo.data.openid
})
获取js sdk config配置 微信 JS 接口签名校验工具
weixinApi.Web.getJsSdkConfig([config: Object]
)
- config: 配置
{ ticket: 'HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgKJJwCD...', // 从 getJsTicket 方法获取的ticket url: 'http://www.toolos.cc' // 调用js sdk 页面地址 }
{
"appId": "wxf638c1f64239e786",
"signature": "2c18eb8d6adaa5e02a9df517e776f5eef40ed402",
"noncestr": "04b21a6a-caea-4878-9fdb-8b2c1ff699b0",
"timestamp": 1530636997,
"jsapi_ticket": "HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgK...."
}
let jsTricktConfig = await weixinApi.Web.getJsSdkConfig({
ticket: 'HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgKJJwCDQ2Bnx34...',
url: 'http://www.toolos.cc'
})
根据小程序传来的code获取openid等信息 临时登录凭证code 获取 session_key 和 openid 等。
- config: 配置
{ code: 'xxxxxxxxxxxxxx' }
{
"openid" : "oynY34-0Err_YssQIFsK-Ht1eGs",
"session_key" : "sPxOFsssssCP54n6cCfshw=="
}
let info = await weixinApi.Mini.getOpenidByCode({
code: 'xxxxxxxxxxxxxx'
})