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 = ;//ES6 import;//or import the original ES6 module from 'lib/client', // in which case you may need to include this into your webpack babel-loader process ;const wechatObj = config // or if you do not have a bundle process, just add the script tag, and access "WechatJSSDK" from window, e.g:const wechatObj = 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 {} //invoked if sign failed, in v3.0.10+, jssdk instance will be pass to the func, (err, wxObj) => {} {} //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 manuallyconst wechatObj = config;//in the up coming v4, use "initialize" as Promise:const wechatObj2 = config;wechatObj2 ;
after signature signed successfully, you can customize the share information:
//customize share on chat info//sugar method for `wechatObj.callWechatApi('onMenuShareAppMessage', {...})`wechatObj;//customize share on timeline info//sugar methodwechatObj;
You can also access the original wechat object wx
from wechatObj.getOriginalWx()
.
Call other wechat apis: wechatObj.callWechatApi(apiName, config)
:
wechatObj;
or with the original one:
wechatObj.getOriginalWx().onMenuShareAppMessage(config)