js:
在index.html 引入
在typings.d.ts定义:
declare var wx:any;
ts:装东东 cnpm install weixin-js-sdk --save cnpm install @types/node --save-dev
代码加入:
declare var require: any;
var wx = require(‘weixin-js-sdk’);
注意:代码的位置
代码:
Scan(modal: HTMLElement) {
this.ele=modal;
let obj=this;
let urlCurrentPage = encodeURIComponent(encodeURIComponent(location.href.split(’#’)[0]));
let url = ‘borrowing/Scan’ + ‘/’ + urlCurrentPage;
console.log(url);
this.http.get(url).toPromise().then(
res => {
var wx = require(‘weixin-js-sdk’);
if (res != null && res.json().code == “0000”) {
let data = res.json().data;
let signature = data.signature;
let timestamp = data.timestamp;
let nonceStr = data.nonceStr;
//调用微信接口基本设置
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: ‘wx2b9d806c89ac57dc’, // 必填,公众号的唯一标识
timestamp: timestamp, // 必填,生成签名的时间戳
nonceStr: nonceStr, // 必填,生成签名的随机串
signature: signature,// 必填,签名
jsApiList: [‘scanQRCode’] // 必填,需要使用的JS接口列表
});
//调用扫一扫接口
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: [“qrCode”, “barCode”], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
obj.isbn = result.substring(result.indexOf(",") + 1, result.length); //截取扫描结果,截取逗号后面的isbn
}
});
}
});
//在这里采用一个定时器,调用微信的时候会自动采用子线程,这时采用子线程的值,跑一个主线程,不然会页面出错
let timetemp= setInterval(()=>{
if(obj.isbn!="" && obj.isbn!=undefined){
this.borrowRecord();
clearInterval(timetemp);
}
else{
}
},200)
setTimeout(() => {
clearInterval(timetemp);
},20000);
};