wx-jsdk
v0.4.0
Published
Next-Generation WeChat JS-SDK integration with NodeJS
Downloads
1
Maintainers
Readme
Usage
npm install wx-jsdk --save
or
const Wechat = require('wx-jsdk'); const wx = new Wechat(wechatConfig);
## Wechat Config
`wechatConfig` info:
{
//set your oauth redirect url, defaults to localhost
"wechatRedirectUrl": "http://yourdomain.com/wechat/oauth-callback",
//"wechatToken": "wechat_token", //not necessary required
"appId": "appid",
"appSecret": "app_secret",
card: true, //enable cards
payment: true, //enable payment support
merchantId: '', //
paymentSandBox: true, //dev env
paymentKey: '', //API key to gen payment sign
paymentCertificatePfx: fs.readFileSync(path.join(process.cwd(), 'cert/apiclient_cert.p12')),
//default payment notify url
paymentNotifyUrl: http://your.domain.com/api/wechat/payment/
,
}
### Setup your Wechat ENV
1.Set your own URL in [Wechat Website](https://mp.weixin.qq.com)
Usually wechat will provide you a `MP_verify_XHZon7GAGRdcAFxx.txt` like file to ask you to put that on your website root,
which will be accessed by wechat on `http://yourdomain.com/MP_verify_XHZon7GAGRdcAFxx.txt` to verify that you own the domain.
2.You should also provide a api for your browser to get token for the current url, see [demo](#demo)
```javascript
//express app for example:
router.get('/get-signature', async (req, res) => {
wx.jssdk.getSignature(req.query.url).then(signatureData => {
res.json(signatureData);
});
//use async/await
//const signatureData = await wx.jssdk.getSignature(req.query.url);
//res.json(signatureData);
});
3.Now you can get to the next step in your browser to pass the verification.
Browser Side Usage
const WechatJSSDK = require('wx-jsdk/dist/client');
//ES6 import
import WechatJSSDK from 'wx-jsdk/dist/client';
//or import the original ES6 module from 'lib/client',
// in which case you may need to include this into your webpack babel-loader process
import WechatJSSDK from 'wx-jsdk/lib/client';
const wechatObj = new WechatJSSDK(config)
// or if you do not have a bundle process, just add the script tag, and access "WechatJSSDK" from window, e.g:
const wechatObj = new window.WechatJSSDK(config)
where config will be:
const config = {
//below are mandatory options to finish the wechat signature verification
//the 4 options below should be received like api '/get-signature' above
'appId': 'app_id',
'nonceStr': 'your_nonceStr',
'signature': 'url_signature',
'timestamp': 'your_timestamp',
//below are optional
//invoked if wechat signature sign succeeds,
//'this' will be the jssdk instance if it's a normal function,
// in v3.0.10+, jssdk instance will be passed to the callback, (wxObj) => {}
// in the up coming v4, "success"/"error" init callback will be replace by #initialize() which will return Promise, see below
'success': jssdkInstance => {},
//invoked if sign failed, in v3.0.10+, jssdk instance will be pass to the func, (err, wxObj) => {}
'error': (err, jssdkInstance) => {},
//enable debug mode, same as debug
'debug': true,
'jsApiList': [], //optional, pass all the jsapi you want, the default will be ['onMenuShareTimeline', 'onMenuShareAppMessage']
'customUrl': '' //set custom weixin js script url, usually you don't need to add this js manually
}
const wechatObj = new WechatJSSDK(config);
//in the up coming v4, use "initialize" as Promise:
const wechatObj2 = new WechatJSSDK(config);
wechatObj2.initialize()
.then(w => {
//set up your share info just like in "success" function in config above
})
.catch(err => {
console.error(err);
});
after signature signed successfully, you can customize the share information:
//customize share on chat info
//sugar method for `wechatObj.callWechatApi('onMenuShareAppMessage', {...})`
wechatObj.shareOnChat({
type: 'link',
title: 'title',
link: location.href,
imgUrl: '/logo.png',
desc: 'description',
success: function (){},
cancel: function (){}
});
//customize share on timeline info
//sugar method
wechatObj.shareOnMoment({
type: 'link',
title: 'title',
link: location.href,
imgUrl: '/logo.png'
});
You can also access the original wechat object wx
from wechatObj.getOriginalWx()
.
Call other wechat apis: wechatObj.callWechatApi(apiName, config)
:
wechatObj.callWechatApi('onMenuShareAppMessage', {
type: 'link',
title: 'title',
link: location.href,
imgUrl: '/logo.png',
desc: 'description',
success: function (){},
cancel: function (){}
});
or with the original one:wechatObj.getOriginalWx().onMenuShareAppMessage(config)