Thinkphp3.2.3 siempre no puede acceder a la cuenta oficial de WeChat para responder a la autenticación del token enviada por WeChat.
<? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)
¿Espacio de nombres? Inicio\Controlador;
¿Usar? Think\Controller;
¿Clase? ¿Controlador de índice? ¿extender? ¿Controlador de WeChat? {
Sr. ¿Función? índice(){
$v? =?$ _ GET[" echostr "];
If (!Isset($v)){// Determine si se ha verificado antes en función de la cadena aleatoria para evitar verificaciones repetidas.
$ this->recibir();
}else{
$ this->verificar firma();
}
}
//No verificado Realizar verificación
¿Público? ¿Función? checkSignature(){
$Firma? =?I("firma"); //Firma cifrada
$Marca de tiempo? =?I("Marca de tiempo"); //Marca de tiempo
$nonce? =?I(" nonce ");//Número aleatorio
$token? =?TOKEN//Token
$tmpArr? =?array($token,$timestamp,?$nonce); //Formar una nueva matriz
sort($tmpArr, SORT_STRING); //Reordenar
$tmpStr? =?implode($TM parr);//convertir a cadena
$tmpStr? =?sha 1($tmp str); // Luego cifra la cadena.
Si (?$tmpStr?==?$firma?)
{
¿Echo? $_GET[" echostr "];
Salir;
//¿Regresar? verdadero;
}de lo contrario{
¿Devolver? False;
}
}
//Verificado y ejecutado aquí.
¿Público? ¿Función? Recibir(){
$postStr? =?$ GLOBALS[" HTTP _ RAW _ POST _ DATA "] //Obtener el mensaje en formato xml enviado por el usuario.
//$postStr? =?file_get_contents("PHP://entrada");
libxml_disable_entity_loader(true);
$postObj? =?simplexml_load_string($postStr,?"SimpleXMLElement",LIBXML_NOCDATA);
$ this->logger($postStr);
//Y responda la información al usuario.
if(!empty($postObj)){
cambiar($post obj->MsgType){
caso? "Texto":
$Resultado? =?$ this-& gt;receive text($ post obj);
//Evita reportar información falsa.
if(vacío($resultado)){
$xml? =?"<xml>
<ToUserName><![CDATA[% s]]></nombre de usuario>
<fromusername& gt& lt! [CDATA[% s]]& gt;& lt /from nombre de usuario & gt;
& ltCreateTime & gt% s & lt/create time & gt;
& ltMsgType & gt& lt [CDATA[% s]]& gt; & lt/tipo de mensaje & gt;
& ltContenido& gt& lt! [CDATA[% s]]& gt;& lt/ Contenido>
</XML>"; p>
$resultado? =?sprintf($xml, $post obj->FromUserName, $post obj->ToUserName, time(), $postObj->MsgType, "No obtener información de múltiples imágenes");
}
¿Eco? $ resultado
Rotura;
¿Caso? 【Imagen】:
$Resultado? =?$ esto-& gt;recibir imagen($ post obj);
if(empty($resultado)){
$xml? = " & ltxml & gt
& ltToUserName & gt& lt![CDATA[% s]]& gt;& lt/nombre de usuario & gt;
& ltfromusername& gt& lt! [ CDATA[% s]]& gt;& lt/from nombre de usuario & gt;
& ltCreateTime & gt% s & lt/create time & gt;
& ltMsgType & gt& lt ! [CDATA[% s]]& gt;& lt/tipo de mensaje & gt;
& ltArticleCount & gt1 & lt;/recuento de artículos & gt;
& ltArticle> p>
<item>
<Título><![CDATA[% s]]></Título>
& ltDescripción>& lt![CDATA[% s]]></Descripción>
& ltPicUrl>& lt! & lt/pic URL & gt;
& ltUrl & gt& lt! p>
& lt/item & gt;
& lt/Artículos & gt;
& lt/XML & gt;";
$ ¿Resultados? =?sprintf($xml, $ post obj-& gt; FromUserName, $ post obj-& gt; ToUserName, time(), "Noticias" "Hagamos el desarrollo de WeChat con Lao Li" "El desarrollo de WeChat es la plataforma pública de WeChat Desarrollado Para mostrar información, servicios, actividades y otros contenidos corporativos a través de las páginas web de WeChat, los usuarios pueden generar sitios web WeChat 3G a través de configuraciones simples. Mostrar marcas corporativas a los usuarios de WeChat a través de las plataformas públicas de WeChat, reducir los costos de publicidad y establecer relaciones entre empresas, consumidores y clientes. La interacción y la comunicación uno a uno conectan a los consumidores con el sistema CRM de la empresa para promoción, promoción, publicidad y posventa, formando un método de marketing interactivo WeChat en línea y fuera de línea convencional.
","/-po 3d sag _ xi4khgkpowk 1hf 6 hy/baike/w % 3d 268% 3Bg % 3d 0/signo = a 1070 f 7517 DFA 9 ecfd 2 e 5115aeb 903 e/b 03533 fa 828 ba 61 efb 07 a 5464738
}
¿Eco? $ resultado
Rotura;
¿Caso? "Evento":
$Resultado? =?$ esto-& gt;recibir evento($ post obj);
if(empty($resultado)){
$xml? =?"<xml>
<ToUserName><![CDATA[% s]]></nombre de usuario>
<fromusername& gt& lt! [CDATA[% s]]& gt;& lt /from nombre de usuario & gt;
& ltCreateTime & gt% s & lt/create time & gt;
& ltMsgType & gt& lt [CDATA[% s]]& gt; & lt/tipo de mensaje & gt;
& ltContenido& gt& lt! [CDATA[% s]]& gt;& lt/ Contenido>
</XML>"; p>
$resultado? =?sprintf($xml, $ post obj->FromUserName, $post obj->ToUserName, time(), "text", "Gracias por prestar atención a la cuenta del servicio de prueba de la interfaz WeChat, ¡soy el profesor Li! ") ;
}
¿Eco? $ resultado
Rotura;
¿Rotura? :
$Resultado? =?"El tipo de datos que envió no se procesará temporalmente:?"? . ? $ post obj->MsgType
¿Echo? $ resultado
Pausa;
}
}
}
//Registro
¿Privado? ¿Función? Registrador($content){
$ logSize = 100000;
$log? =?"./log . txt ";
if(file_exists($log)?& amp& amp?Tamaño de archivo (log)?& gt?$logSize){
desvincular ($log);
}
File_upload_content($log,? date("Y-m-d?H:i:s")."?".$content.