微信公衆番号のH 5ページは微信スキャンを呼び出す
3544 ワード
ウォーミングアップ
微信公式API WeChatパブリックプラットフォームにログインし、必要な環境を構成します.例えば、JSインタフェースセキュリティドメイン名 微信JSファイル を導入
フロントエンド実装
1>ローディング・ウィーチャット構成を初期化し、関連パラメータを取得
2>「スイープ」ボタンをクリックして微信スイープインタフェースを呼び出す
バックグラウンド実装
1.accessTokenを取得し、accessTokenでticketを取得する
/***jsapiを取得ticket */
2.noncesStr、timestamp、signatureなどの計算署名などの他のパラメータを取得する
public Map sign(String url) throws Exception { Map map = new HashMap<>(16);
注意事項署名用のnoncestrとtimestampはwxとしなければならない.configのnoncesStrはtimestampと同じです.
微信公式API
フロントエンド実装
1>ローディング・ウィーチャット構成を初期化し、関連パラメータを取得
$(function () {
$.ajax({
type: 'get',
url: baseUrl+'/getSign',
data: {
'tokenUrl': location.href
},
async: false,
dataType: 'JSON',
success: function (res) {
// 、
wx.config({
debug: false,
appId: res.appId,
timestamp: res.timestamp, //todo later
nonceStr: res.nonceStr,
signature: res.signature,
jsApiList: [
// API
'scanQRCode'
]
})
},
error: function () {
console.log('config fail')
}
})
}
2>「スイープ」ボタンをクリックして微信スイープインタフェースを呼び出す
// ,
$('.scanPic').click(function () {
wx.scanQRCode({
desc: 'scanQRCode desc',
needResult : 1, // 0, ,1 ,
scanType : [ "qrCode", "barCode" ], // ,
success : function(res) {
// console.log(" ",res.resultStr)
var result = res.resultStr;
var barCode = getBarCode(result);
},
error:function(res){
console.log(res)
}
});
})
バックグラウンド実装
1.accessTokenを取得し、accessTokenでticketを取得する
/***jsapiを取得ticket */
public static String getJsApiTicket(String token) {
String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket"
+ "?access_token=" + token
+ "&type=jsapi";
String response = HttpClientUtil.doGet(url);
if (StringUtils.isBlank(response)) {
return null;
}
JSONObject jsonObject = JSONObject.parseObject(response);
System.out.println(response);
String ticket = jsonObject.getString("ticket");
return ticket;
}
2.noncesStr、timestamp、signatureなどの計算署名などの他のパラメータを取得する
public Map sign(String url) throws Exception { Map map = new HashMap<>(16);
// jsapi_ticket。
String jsapiTicket = this.getJsApiTicket();
//nonceStr config nonceStr , ,
String nonceStr = createNonceStr();
String timestamp = createTimestamp();
String signature = "";
String urlPath = "jsapi_ticket=" + jsapiTicket +
"&noncestr=" + nonceStr +
"×tamp=" + timestamp +
"&url=" + url;
try {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(urlPath.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
map.put("url", url);
map.put("jsapi_ticket", jsapiTicket);
map.put("nonceStr", nonceStr);
map.put("timestamp", timestamp);
map.put("signature", signature);
map.put("appId", appID);
return map;
}
注意事項