Cómo llamar a WeChat jssdk sin php
Usar gesto ^ajax(Common.ServerUrl?+?"GetWX.php",?{
datos:?{
Tipo:?"config" ,
url:?location.href.split('#')[0]
},
tipo de datos:?'json',
tipo:?'get',
tiempo de espera:?5000,
éxito:?función(datos)?{
wx.config( {
debug:?true,?//?Habilite el modo de depuración. Los valores de retorno de todas las API llamadas serán alertados en el lado del cliente. Si desea ver los parámetros entrantes, usted. puede abrirlos en el lado de la PC Parámetros La información se imprimirá a través del registro y solo se imprimirá en el lado de la PC
appId:?'...',?//?Requerido. el identificador único de la cuenta oficial
timestamp. :?data.timestamp,?//?Requerido, generar la marca de tiempo de la firma
nonceStr:?data.nonceStr,?/ /?Requerido, generar la cadena aleatoria de la firma
signature:?data.signature,?//?Requerido, firma, ver Apéndice 1
jsApiList:?["getLocation" ]?//?Obligatorio, lista de interfaces JS que deben usarse, todas Consulte el Apéndice 2 para obtener la lista de interfaces JS
});
}
})
wx.ready(function()?{
wx.getLocation({
tipo:?'wgs84',?//? El valor predeterminado son las coordenadas gps de wgs84. Si desea devolver las coordenadas de Marte directamente para openLocation, puede pasar 'gcj02'
success:?function(res)?{
var?longitude?=?res.longitude;?//? Longitud, número de coma flotante, el rango es 180?~?-180.
plus2.storage.setItem("latitud",?latitud);
plus2.storage.setItem("longitude",?longitude);
}
});
});
GetWX.PHP del lado del servidor
incluye?"lib/Cache. php ";
definir($APPID,?"...");
definir($SECRETO,?"...")
si ($_GET ['Tipo']?==?"access_token"){//?echo?getAccess_token();
}
else?if($_GET['Tipo'] ']? ==?"jsapi_ticket"){//?echo?getJsapi_ticket();
}
else?if($_GET['Tipo']?==? "config" ){
$jsapi_ticket?=?getJsapi_ticket();
$nonceStr?=?"x".rand(10000,100000)."x";// Cadena aleatoria
$timestamp?=?time();//Timestamp
$url?=?$_GET['url'];
$signature ? =?getSignature($jsapi_ticket,$nonceStr,?$timestamp,?$url);
$resultado?=?array("jsapi_ticket"=>$jsapi_ticket,?"nonceStr"=>$nonceStr , "marca de tiempo"=>$marca de tiempo,"url"=>$url,"signature"=>$firma);
echo?json_encode($resultado);
}
}
p>función?getSignature($jsapi_ticket,$noncestr,?$timestamp,?$url){
$string1?=?"jsapi_ticket= ".$jsapi_ticket."&noncestr=".$ noncestr."×tamp=".$timestamp."&url=".$url;
$sha1?=?sha1($string1);
retorno?$sha1;
p>}
función?getJsapi_ticket(){
$cache?=?new?Cache();
$cache?=?new ?Cache(7000,?'cache/');//Necesita crear una carpeta de caché para almacenar archivos de caché.
//Leer los datos del valor clave?$key? del caché
$jsapi_ticket?=?$cache?->?get("jsapi_ticket"); p >
$access_token?=?getAccess_token();
//Si no hay datos almacenados en caché
if?($jsapi_ticket?==?false)?{
$access_token?=?getAccess_token();
$url?=?'/cgi-bin/ticket/getticket';?
$datos?= ?array( 'type'=>'jsapi','access_token'=>$access_token);?
$header?=?array();?
$respuesta?= ?json_decode( curl_/cgi-bin/token';?
$data?=?array('grant_type'=>'client_credential','appid'=>$APPID,'secret'=>$ SECRETO); ?
$encabezado?=?array();?
$respuesta?=?json_decode(curl_https($url,?$datos,?$encabezado,?5 )); ?
$access_token?=?$response->access_token;
//Escribe los datos del valor clave ?$key?
$cache ?-> ?put("access_token",?$access_token);
}
return?$access_token;
}
/** ?curl?Get?https?request?
*?@param?String?$url?¿La URL solicitada?
*?@param?Array?$data? ¿Datos a enviar?
*?@param?Array?$header?¿Encabezado enviado durante la solicitud?
*?@param?int?$timeout?Tiempo de espera, ¿30 segundos predeterminados? p>
*/?
función?curl_https($url,?$data=array(),?$header=array(),?$timeout=30){? p>
$ch?=?curl_init();?
curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?false);?//?¿Omitir verificación de certificado?
curl_setopt ( $ch,?CURLOPT_URL,?$url);?
curl_setopt($ch,?CURLOPT_HTTPHEADER,?$header);?
curl_setopt($ch,?CURLOPT_POST,? verdadero );?
curl_setopt($ch,?CURLOPT_POSTFIELDS,?http_build_query($data));?
curl_setopt($ch,?CURLOPT_RETURNTRANSFER,?verdadero);? p >
curl_setopt($ch,?CURLOPT_TIMEOUT,?$timeout);?
$respuesta?=?curl_exec($ch);?
>
if($error=curl_error($ch)){?
die($error);?
}?
curl_close($ ch);?
retorno?$respuesta;?
}?
Caché.php
privado?$cache_path;
//ruta?para?el?caché
privado?$cache_expire;
//segundos?que?el?caché ?expires
//cache?constructor,?opcional?expiring?time?y?cache?path
función?pública?Cache($exp_time?=?3600,?$path ?=?"cache/")?{
$this?->?cache_expire?=?$exp_time;
$this?->?cache_path?=?$path;
}
//devuelve?el?nombre de archivo?para?la?caché
función?privada?nombre de archivo($clave)?{
return?$this?->?cache_path?.?md5($key);
}
//crea?nuevos?archivos?caché?con?el? datos dados,?$clave==?nombre?de?la?caché,?datos?la?info/valores?a?almacenar
función?pública?put($clave,?$datos) ?{
$valores?=?serialize($datos);
$nombre de archivo?=?$este?->?nombre de archivo($clave);
$file?=?fopen($filename,?'w');
si?($file)?{//capaz?de?crear?el?archivo
fwrite($archivo,?$valores);
fclose($archivo);
}?else
return?false;
}
//devuelve?caché?para?la?clave?dada
función?pública?get($clave)?{
$nombre de archivo? =?$this?->?fileName($key);
if?(!file_exists($filename)?||?!is_readable($filename))?{//no puedo?leer ?el?caché
return?false;
}
if?(time()?(filemtime($filename)?+?$this ?->?cache_expire))?{//caché?para?la?clave?no?expirada
$file?=?fopen($filename,?"r");
//?leer?datos?archivo
si?($archivo)?{//capaz?de?abrir?el?archivo
$d
ata?=?fread($archivo,?filesize($nombre de archivo));
fclose($archivo);
return?unserialize($datos);
//return?los?valores
}?else
return?false;
}?else
return?false ;
//¿estaba?vencido?¿necesitas?crear?nuevo
}
}?>