<?php
//微信jssdk接口
function weixinsdk(){
//公众号查看appid跟secret分别填入
$appid = 'your appid';
$secret = 'your secret';
$ticketData =json_decode(file_get_contents("jsapi_ticket.json"));
if($ticketData->expire_time < time() || !$ticketData->jsapi_ticket){
$token='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
$token = json_decode(http_get($token));
$jsapi_ticket = json_decode(http_get('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$token->access_token.'&type=jsapi'));
if ($jsapi_ticket) {
$ticketData->expire_time = time() + 7000;
$ticketData->jsapi_ticket = $jsapi_ticket->ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($ticketData));
fclose($fp);
}
}
$jsapi_ticket = $ticketData->jsapi_ticket;
$timestamp = time();
$url = "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$nonceStr = "";
for ($i = 0; $i < 16; $i++){
$nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
$string = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
$signPackage = array(
'appId' => $appid,
'timestamp' => $timestamp,
'nonceStr' => $nonceStr,
'signature' => sha1($string),
);
return $signPackage;
}
/**
* GET 请求
* @param string $url
*/
function http_get($url){
$oCurl = curl_init();
if(stripos($url,"https://")!==FALSE){
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if(intval($aStatus["http_code"])==200){
return $sContent;
}else{
return false;
}
}
//微信jssdk接口
function weixinsdk(){
//公众号查看appid跟secret分别填入
$appid = 'your appid';
$secret = 'your secret';
$ticketData =json_decode(file_get_contents("jsapi_ticket.json"));
if($ticketData->expire_time < time() || !$ticketData->jsapi_ticket){
$token='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
$token = json_decode(http_get($token));
$jsapi_ticket = json_decode(http_get('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$token->access_token.'&type=jsapi'));
if ($jsapi_ticket) {
$ticketData->expire_time = time() + 7000;
$ticketData->jsapi_ticket = $jsapi_ticket->ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($ticketData));
fclose($fp);
}
}
$jsapi_ticket = $ticketData->jsapi_ticket;
$timestamp = time();
$url = "http://".$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$nonceStr = "";
for ($i = 0; $i < 16; $i++){
$nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
$string = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
$signPackage = array(
'appId' => $appid,
'timestamp' => $timestamp,
'nonceStr' => $nonceStr,
'signature' => sha1($string),
);
return $signPackage;
}
/**
* GET 请求
* @param string $url
*/
function http_get($url){
$oCurl = curl_init();
if(stripos($url,"https://")!==FALSE){
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if(intval($aStatus["http_code"])==200){
return $sContent;
}else{
return false;
}
}

本文介绍了一种使用PHP实现的微信JS-SDK配置方法,包括获取access_token、jsapi_ticket及生成签名的过程。通过此方法,开发者可以轻松为网页集成微信功能。
1327

被折叠的 条评论
为什么被折叠?



