老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Java微信公眾平臺開發(13)微信JSSDK中Config配置

前端開發工程師和關注前端開發的開發者們在2015年中肯定被騰訊的JSSDk引爆過,搞APP的、搞前端的甚至是是搞后端的都跑過來湊熱鬧,一時之間也把微信JSSDK捧得特別牛逼,但是在我們的技術眼里它的實現原理和根本是不能夠被改變的,這篇文章就不對其js的實現做任何評價和解說了(因為我也不是很懂,哈哈),這里要說的是它的config配置實現,參考文檔:http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html  !

成都創新互聯長期為數千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為瑪沁企業提供專業的成都做網站、網站建設,瑪沁網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發。

微信JS-SDK是微信公眾平臺面向網頁開發者提供的基于微信內的網頁開發工具包,通過使用微信JS-SDK,網頁開發者可借助微信高效地使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力,為微信用戶提供更優質的網頁體驗;本篇將面向網頁開發者介紹微信JS-SDK如何使用及相關注意事項!JSSDK使用步驟:

步驟一:在微信公眾平臺綁定安全域名
步驟二:后端接口實現JS-SDK配置需要的參數
步驟三:頁面實現JS-SDk中config的注入配置,并實現對成功和失敗的處理

(一)在微信公眾平臺綁定安全域名

先登錄微信公眾平臺進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”(如下圖),如果需要使用支付類接口,需要確保支付目錄在支付的安全域名下,否則將無法完成支付!(注:登錄后可在“開發者中心”查看對應的接口權限)

Java微信公眾平臺開發(13) 微信JSSDK中Config配置

(二)后端接口實現JS-SDK配置需要的參數

wx.config({
  debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
  appId: '', // 必填,公眾號的唯一標識
  timestamp: , // 必填,生成簽名的時間戳
  nonceStr: '', // 必填,生成簽名的隨機串
  signature: '',// 必填,簽名,見附錄1
  jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});

我們查看js-sdk的配置文檔和以上的代碼可以發現config的配置需要4個必不可少的參數appId、timestamp、nonceStr、signature,這里的signature就是我們生成的簽名!

生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號用于調用微信JS接口的臨時票據。正常情況下,jsapi_ticket的有效期為7200秒,通過access_token來獲取。由于獲取jsapi_ticket的api調用次數非常有限,頻繁刷新jsapi_ticket會導致api調用受限,影響自身業務,開發者必須在自己的服務全局緩存jsapi_ticket ,所以這里我們將jsapi_ticket的獲取放到定時任務中,因為它和token的生命周期是一致的,所以在這里我們將他們放到一起,將原有的定時任務中獲取token的代碼做如下修改:

package com.cuiyongzhi.wechat.common;
 
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
import net.sf.json.JSONObject;
 
import com.cuiyongzhi.web.util.GlobalConstants;
import com.cuiyongzhi.wechat.util.HttpUtils;
 
/**
 * ClassName: WeChatTask
 * @Description: 微信兩小時定時任務體
 * @author dapengniao
 * @date 2016年3月10日 下午1:42:29
 */
public class WeChatTask {
  /**
   * @Description: 任務執行體
   * @param @throws Exception
   * @author dapengniao
   * @date 2016年3月10日 下午2:04:37
   */
  public void getToken_getTicket() throws Exception {
    Map params = new HashMap();
    //獲取token執行體
    params.put("grant_type", "client_credential");
    params.put("appid", GlobalConstants.getInterfaceUrl("appid"));
    params.put("secret", GlobalConstants.getInterfaceUrl("AppSecret"));
    String jstoken = HttpUtils.sendGet(
        GlobalConstants.getInterfaceUrl("tokenUrl"), params);
    String access_token = JSONObject.fromObject(jstoken).getString(
        "access_token"); // 獲取到token并賦值保存
    GlobalConstants.interfaceUrlProperties.put("access_token", access_token);
     
    //獲取jsticket的執行體
    params.clear();
    params.put("access_token", access_token);
    params.put("type", "jsapi");
    String jsticket = HttpUtils.sendGet(
        GlobalConstants.getInterfaceUrl("ticketUrl"), params);
    String jsapi_ticket = JSONObject.fromObject(jsticket).getString(
        "ticket"); 
    GlobalConstants.interfaceUrlProperties
    .put("jsapi_ticket", jsapi_ticket); // 獲取到js-SDK的ticket并賦值保存
     
    System.out.println("jsapi_ticket================================================" + jsapi_ticket);
    System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"token為=============================="+access_token);
 
  }
 
}

然后我們根據【JS-SDK使用權限簽名算法】對參數進行簽名得到signature,這里的url必須采用前端傳遞到后端,因為每次的url會有所變化,如下:

package com.cuiyongzhi.wechat.common;
 
import java.security.MessageDigest;
import java.util.Formatter;
import java.util.HashMap;
import java.util.UUID;
import com.cuiyongzhi.web.util.GlobalConstants;
 
 
/**
 * ClassName: JSSDK_Config
 * @Description: 用戶微信前端頁面的jssdk配置使用
 * @author dapengniao
 * @date 2016年3月19日 下午3:53:23
 */
public class JSSDK_Config {
 
  /**
   * @Description: 前端jssdk頁面配置需要用到的配置參數
   * @param @return hashmap {appid,timestamp,nonceStr,signature}
   * @param @throws Exception  
   * @author dapengniao
   * @date 2016年3月19日 下午3:53:23
   */
  public static HashMap jsSDK_Sign(String url) throws Exception {
    String nonce_str = create_nonce_str();
    String timestamp=GlobalConstants.getInterfaceUrl("timestamp");
    String jsapi_ticket=GlobalConstants.getInterfaceUrl("jsapi_ticket");
    // 注意這里參數名必須全部小寫,且必須有序
    String string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str
        + "×tamp=" + timestamp + "&url=" + url;
    MessageDigest crypt = MessageDigest.getInstance("SHA-1");
    crypt.reset();
    crypt.update(string1.getBytes("UTF-8"));
    String signature = byteToHex(crypt.digest());
    HashMap jssdk=new HashMap();
    jssdk.put("appId", GlobalConstants.getInterfaceUrl("appid"));
    jssdk.put("timestamp", timestamp);
    jssdk.put("nonceStr", nonce_str);
    jssdk.put("signature", signature);
    return jssdk;
 
  }
   
  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;
  }
   
  private static String create_nonce_str() {
    return UUID.randomUUID().toString();
  }
 
}

然后我們將后端簽名的方法集成到Controller層,形成代碼如下:

package com.cuiyongzhi.wechat.controller;
 
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.cuiyongzhi.Message;
import com.cuiyongzhi.wechat.common.JSSDK_Config;
 
/**
 * ClassName: WeChatController
 * @Description: 前端用戶微信配置獲取
 * @author dapengniao
 * @date 2016年3月19日 下午5:57:36
 */
@Controller
@RequestMapping("/wechatconfig")
public class WeChatController {
 
  /**
   * @Description: 前端獲取微信JSSDK的配置參數
   * @param @param response
   * @param @param request
   * @param @param url
   * @param @throws Exception
   * @author dapengniao
   * @date 2016年3月19日 下午5:57:52
   */
  @RequestMapping("jssdk")
  public Message JSSDK_config(
      @RequestParam(value = "url", required = true) String url) {
    try {
      System.out.println(url);
      Map configMap = JSSDK_Config.jsSDK_Sign(url);
      return Message.success(configMap);
    } catch (Exception e) {
      return Message.error();
    }
 
  }
 
}

到這里我們后端對jssdk的簽名參數的封裝就基本完成了,下一步就只需要我們前端調用就可以了!

(三)頁面實現JS-SDk中config的注入配置,并實現對成功和失敗的處理

在第二步中我們將后端接口代碼完成了,這里新建jssdkconfig.jsp,在jsp頁面用ajax方式獲取并進行配置,并開啟debug模式,打開之后就可以看到配置是否成功的提示,簡單代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>





JSSDk配置







最后我們運行代碼,查看運行結果:

Java微信公眾平臺開發(13) 微信JSSDK中Config配置

如果提示是這樣,那么標識我們的配置是成功的,那么到這里微信jssdk的配置就基本完成了,下一篇講述【微信web開發者工具】的使用,歡迎你的翻閱,如有疑問可以留言討論!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。


當前文章:Java微信公眾平臺開發(13)微信JSSDK中Config配置
網站地址:http://www.xueling.net.cn/article/gchdoh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 全黄激性性视频 | 在线观看成年人免费视频 | 免费黄篇| 人与人性恔配视频免费 | 日韩中文娱乐网 | 野花在线观看免费视频 | 人人性人人性碰国产 | 国产精品久久免费视频在线 | 日韩亚洲一区在线 | 先锋影音最新色资源站 | 日本日韩中文字幕 | 最新国产精品毛片在线 | h人成在线看免费视频 | 亚洲精品成 | 中文字幕第8页在线资源 | 免费国产内射 | 大地资源在线视频资源 | 久久精精 | 国产视频精品一区二区三区 | 在线中文字幕一区 | 欧美成人免费一区二区三区 | 日本五区在线不卡精品 | 风韵老女人性按摩推油 | 国产美女裸体无遮挡免费视频 | 国产成人?合一区二区三区 国产人成一区二区三区影院 | 国产高清中文手机在线观看 | 国产吃瓜黑料一区二区 | 国产区在线观看成人精品 | 三级久久久久久久久高潮 | 欧美黑人又粗又大XXXX | 偷拍自拍第二页 | 爱做久久久久久 | 国产一级淫片a免费播放鬼片 | 国内在线一区 | 一区小视频 | 成人黄色一级视频 | 99re国产在线播放 | 成人无码做爰www免费软件小说 | 亚洲AV网一区二区三区 | 精品免费国产一区二区三区四区介绍 | 久久久久免费 |