首页 > 代码库 > [转]微信JSAPI 微信内置JSAPI 2015年1月官方正式API接口,分享完整实例

[转]微信JSAPI 微信内置JSAPI 2015年1月官方正式API接口,分享完整实例

FROM : http://www.oschina.net/code/snippet_2276613_45290

HTML通过微信,分享朋友圈出发此JSAPI

<?phprequire_once "jssdk.php";$jssdk = new JSSDK("yourAppID", "yourAppSecret");$signPackage = $jssdk->GetSignPackage();?><!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title></title></head><body>   </body><script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script><script>  // 注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。   // 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。  // 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html  wx.config({    appId: <?php echo $signPackage["appId"];?>,    timestamp: <?php echo $signPackage["timestamp"];?>,    nonceStr: <?php echo $signPackage["nonceStr"];?>,    signature: <?php echo $signPackage["signature"];?>,    jsApiList: [      // 所有要调用的 API 都要加到这个列表中    ]  });  wx.ready(function () {    // 在这里调用 API     wx.onMenuShareTimeline({        title: ‘‘, // 分享标题        link: ‘‘, // 分享链接        imgUrl: ‘‘, // 分享图标        success: function () {             // 用户确认分享后执行的回调函数        },        cancel: function () {             // 用户取消分享后执行的回调函数        }    });         wx.onMenuShareAppMessage({        title: ‘‘, // 分享标题        desc: ‘‘, // 分享描述        link: ‘‘, // 分享链接        imgUrl: ‘‘, // 分享图标        type: ‘‘, // 分享类型,music、video或link,不填默认为link        dataUrl: ‘‘, // 如果type是music或video,则要提供数据链接,默认为空        success: function () {             // 用户确认分享后执行的回调函数        },        cancel: function () {             // 用户取消分享后执行的回调函数        }    });         wx.onMenuShareQQ({        title: ‘‘, // 分享标题        desc: ‘‘, // 分享描述        link: ‘‘, // 分享链接        imgUrl: ‘‘ // 分享图标        success: function () {            // 用户确认分享后执行的回调函数        },        cancel: function () {            // 用户取消分享后执行的回调函数        }    });     wx.onMenuShareWeibo({        title: ‘‘, // 分享标题        desc: ‘‘, // 分享描述        link: ‘‘, // 分享链接        imgUrl: ‘‘ // 分享图标        success: function () {            // 用户确认分享后执行的回调函数        },        cancel: function () {             // 用户取消分享后执行的回调函数        }    });   });</script></html>

微信后台加密与算法

<?phpclass JSSDK {  private $appId;  private $appSecret;   public function __construct($appId, $appSecret) {    $this->appId = $appId;    $this->appSecret = $appSecret;  }   public function getSignPackage() {    $jsapiTicket = $this->getJsApiTicket();    $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";    $timestamp = time();    $nonceStr = $this->createNonceStr();     // 这里参数的顺序要按照 key 值 ASCII 码升序排序    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";     $signature = sha1($string);     $signPackage = array(      "appId"     => $this->appId,      "nonceStr"  => $nonceStr,      "timestamp" => $timestamp,      "url"       => $url,      "signature" => $signature,      "rawString" => $string    );    return $signPackage;   }   private function createNonceStr($length = 16) {    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";    $str = "";    for ($i = 0; $i < $length; $i++) {      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);    }    return $str;  }   private function getJsApiTicket() {    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例    $data = json_decode(file_get_contents("jsapi_ticket.json"));    if ($data->expire_time < time()) {      $accessToken = $this->getAccessToken();      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";      $res = json_decode($this->httpGet($url));      $ticket = $res->ticket;      if ($ticket) {        $data->expire_time = time() + 7000;        $data->jsapi_ticket = $ticket;        $fp = fopen("jsapi_ticket.json", "w");        fwrite($fp, json_encode($data));        fclose($fp);      }    } else {      $ticket = $data->jsapi_ticket;    }     return $ticket;  }   private function getAccessToken() {    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例    $data = json_decode(file_get_contents("access_token.json"));    if ($data->expire_time < time()) {      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";      $res = json_decode($this->httpGet($url));      $access_token = $res->access_token;      if ($access_token) {        $data->expire_time = time() + 7000;        $data->access_token = $access_token;        $fp = fopen("access_token.json", "w");        fwrite($fp, json_encode($data));        fclose($fp);      }    } else {      $access_token = $data->access_token;    }    return $access_token;  }   private function httpGet($url) {    $curl = curl_init();    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);    curl_setopt($curl, CURLOPT_TIMEOUT, 500);    curl_setopt($curl, CURLOPT_URL, $url);     $res = curl_exec($curl);    curl_close($curl);     return $res;  }}
 微信JS-SDK说明文档
http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 

朋友圈管理常见问题
http://kf.qq.com/faq/131117ne2MV7141117JzI32q.html 

[转]微信JSAPI 微信内置JSAPI 2015年1月官方正式API接口,分享完整实例