ウィーチャット開発---ウィーチャットスイープコードインターフェースの呼び出し
7317 ワード
ウィーチャットスイープコードインターフェースを起動します.
ステップ1:ドメインを結合する
WeChat公衆番号バインドドメイン名
ステップ二:JSファイルの導入
JSインターフェースを呼び出すページでは、以下のJSファイルを紹介します.http://res.wx.qq.com/open/js/jweixin-1.0.0.js
注意してください.もしあなたのページがhttpsを有効にしたら、必ず紹介してください.https://res.wx.qq.com/open/js/jweixin-1.0.0.js iOS 9.0以上のシステムでJSSDKを成功裏に使用できなくなります.
ステップ3:configインターフェースを通して権限を注入して構成を検証する
これはWeChatを呼び出すための重要な証拠です.WeChatを使うインターフェースをなくしたいなら、まず署名を通過しなければなりません.この方法は直接javascriptに入れます.
js
jsp
神様よ、アーメン!
ステップ1:ドメインを結合する
WeChat公衆番号バインドドメイン名
ステップ二:JSファイルの導入
JSインターフェースを呼び出すページでは、以下のJSファイルを紹介します.http://res.wx.qq.com/open/js/jweixin-1.0.0.js
注意してください.もしあなたのページがhttpsを有効にしたら、必ず紹介してください.https://res.wx.qq.com/open/js/jweixin-1.0.0.js iOS 9.0以上のシステムでJSSDKを成功裏に使用できなくなります.
ステップ3:configインターフェースを通して権限を注入して構成を検証する
これはWeChatを呼び出すための重要な証拠です.WeChatを使うインターフェースをなくしたいなら、まず署名を通過しなければなりません.この方法は直接javascriptに入れます.
wx.config({
debug: true, // , api alert , , pc , log , pc 。
appId: '', // ,
timestamp: , // ,
nonceStr: '', // ,
signature: '',// , , 1
jsApiList: [] // , JS , JS 2
});
ステップ4:errorインターフェースによる処理に失敗した検証wx.error(function(res){
// config error , , config debug , res , SPA 。
});
ステップ5:readyインターフェース処理によって成功的に検証された.wx.ready(function(){
// config ready , config ,config , , ready 。 , , ready 。
});
基本インターフェースは、現在のクライアントバージョンがJSインターフェース指定をサポートしているかどうかを判断します.wx.checkJsApi({
jsApiList: ['chooseImage'], // JS , JS 2,
success: function(res) {
// , api true, false
// :{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});
WeChatはさっとWeChatをスキャンしてインターフェースを掃きます.wx.scanQRCode({
needResult: 0, // 0, ,1 ,
scanType: ["qrCode","barCode"], // ,
success: function (res) {
var result = res.resultStr; // needResult 1 ,
}
});
上はWeChatを呼んでインターフェースを掃除する必要条件です.下は干物を置く必要があります.js
$.ajax({
type : "post",
url : "weixinList/sys.do",
data : {
"url" : location.href.split('#')[0]
},
dataType : "json",
success : function(data) {
wx.config({
debug: false, //
appId:data.data.appId,
timestamp:data.data.timestamp,
nonceStr:data.data.nonceStr,
signature:data.data.signature,
jsApiList: [
'checkJsApi',
'scanQRCode'//
] // , JS , JS 2
});
//wx.config
wx.error(function(res) {
alert(" :" + res.errMsg);// wx.config , , 。
});
//wx.config
wx.ready(function() {
wx.checkJsApi({
jsApiList : ['scanQRCode'],
success : function(res) {
}
});
});
//
$("#scanQRCode").click(function(){
wx.scanQRCode({
needResult : 0, // 0, ,1 ,
scanType : [ "qrCode", "barCode"], // ,
success : function(res) {
var result = res.resultStr; // needResult 1 ,
},
});
});
}
});
ページ読み込み時にajaxメソッドを実行してwx.com figに必要なパラメータを取得します.jsp
utilspackage xxx.utils;
/**
* js
* @author Administrator
*
*/
//url
public class JsSignUtil {
public static Map sign(String url) throws IOException {
// AccessToken ticket AccessToken
JSONObject jsapiTicketObject = AuthUtil.doGetJson("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + WeiXinUtils.getAccessToken() + "&type=jsapi");
String jsapiTicket = (String) jsapiTicketObject.get("ticket");
//
System.out.println(" jsapiTicketObject"+jsapiTicketObject);
Map ret = new HashMap();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature = "";
// ,
string1 = "jsapi_ticket=" + jsapiTicket +
"&noncestr=" + nonce_str +
"×tamp=" + timestamp +
"&url=" + url;
System.out.println("string1="+string1);
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put("url", url);
ret.put("jsapi_ticket", jsapiTicket);
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);
ret.put("appId", "wxca42d473ba246dd9");
System.out.println("url="+ret.get("url"));
System.out.println("jsapi_ticket="+ret.get("jsapi_ticket"));
System.out.println("nonceStr="+ret.get("nonceStr"));
System.out.println("signature="+ret.get("signature"));
System.out.println("timestamp="+ret.get("timestamp"));
return ret;
}
/**
*
* @param hash
* @return
*/
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
/**
* --
* @return
*/
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
/**
*
* @return
*/
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
}
コントローラ@ResponseBody
@RequestMapping(value="sys")
public JsonBean sys(String url) throws IOException {
Map ret = JsSignUtil.sign(url);
return new JsonBean(0,ret,"");
}
今まで運がよければ、ボタンを押せばいいですが、invalid signature invalid url domainなどのような問題があります.https://mp.weixin.qq.com/wiki?t=resource/res_メーン&id=mp 14211415は結局私も三泊二日間探しました.神様よ、アーメン!