Colección de citas famosas - Consulta de diccionarios - Cómo llamar a WeChat jssdk sin php

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?latitude?=?res.latitude;?//?Latitud, número de coma flotante, el rango es 90?~ ?-90

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");

$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?

*/?

función?curl_https($url,?$data=array(),?$header=array(),?$timeout=30){?

$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);?

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()??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

}

}?>