Maison >cadre php >PensezPHP >Protection contre la foudre ! Les pièges de l'intégration d'un compte d'entreprise par thinkphp

Protection contre la foudre ! Les pièges de l'intégration d'un compte d'entreprise par thinkphp

藏色散人
藏色散人avant
2020-07-28 14:03:011912parcourir

La colonne tutorielle suivante du framework thinkphp partagera avec vous les pièges de l'intégration des comptes d'entreprise par thinkphp. J'espère qu'elle sera utile aux amis qui en ont besoin !

Protection contre la foudre ! Les pièges de l'intégration d'un compte d'entreprise par thinkphp

Les pièges de ThinkPHP dans l'utilisation des rappels de compte d'entreprise WeChat

J'ai récemment travaillé sur une interface pour les rappels de compte d'entreprise. J'ai déjà créé plusieurs applications de compte d'entreprise. . Lors de ma première connexion à Thinkphp, diverses erreurs ont été signalées. Je n'ai pas eu de chance car j'ai dû faire face à tous les pièges qu'il fallait éviter.

J'ai failli abandonner après être tombé dans un piège cette fois. Quiconque a développé un compte Entreprise sait que le rappel du compte Entreprise passera par un algorithme crypté, qui oblige le développeur à le déchiffrer pour activer le rappel. C'est ce rappel. Le message d'erreur de WeChat est extrêmement envahissant. Quelle que soit votre erreur, il dit simplement "la vérification echostr a échoué. Veuillez vérifier si elle est correctement déchiffrée et si elle affiche le texte en clair echostr". À tout le moins, le développeur doit être informé de la longueur de la réponse reçue par WeChat, ou elle peut être vérifiée avec sa propre sortie si la longueur est incohérente, sans parler du contenu.

Si vous utilisez le framework tp comme moi, alors vous devriez faire attention. Cet article prend Thinkphp3.2.3 php version 5.3 comme exemple

Pit 1

  • Téléchargez l'exemple d'interface de traitement officiel et placez-le dans le répertoire Thinkphp>Bibliothèque>Wechat (auto-construit)

  • Modifiez WXBizMsgCrypt.php en WXBizMsgCrypt.class.php

  • Déclarez l'espace de noms Wechat dans WXBizMsgCrypt;

  • Introduisez la classe utiliser Wechat WXBizMsgCrypt;

dans le contrôleur dont vous avez besoin

Après cela, utilisez simplement l'exemple de copie officiel pour saisir votre projet et modifiez-le simplement pour terminer l'intégration. Le processus est assez simple, mais ! La méthode d'écriture du constructeur avant PHP5.3 a changé par rapport à celle après PHP5.3. Le constructeur ne peut plus être nommé avec le nom de la classe comme nom de fonction. Vous devez utiliser __construct pour déclarer un constructeur, ce qui signifie utiliser des exemples officiels pour l'intégrer. Bien entendu, une erreur sera certainement signalée, à condition que vous utilisiez également une version ultérieure à PHP5.3.

Vous devez donc toujours

  • modifier le nom de la fonction WXBizMsgCrypt dans le fichier WXBizMsgCrypt pour __construct

  • modifier le pkcs7Encoder dans le fichier pkcs7Encoder Changez le nom de la fonction en __construct

Vous avez terminé Cela peut ne pas être applicable aux versions inférieures de Thinkphp ou de php5.3 ou inférieures. 🎜>

puits 2

Lorsque vous remplissez les informations de rappel du numéro d'entreprise et que le clic sur Enregistrer échoue, cliquer encore quelques fois fera vraiment des merveilles !

Ce n'est pas une blague~~ Parce que la signature aléatoire envoyée par le compte d'entreprise au développeur est susceptible de contenir un signe + Lorsque vous obtenez l'URL, PHP filtrera automatiquement le signe + dans un espace, provoquant l'envoi de la signature. être différent de Si la signature de l'adresse réelle est incohérente, la vérification de la signature échouera et 40001 : Une erreur de vérification de la signature sera signalée.
Bien sûr, vous pouvez également remplacer les espaces par des signes + pour vous assurer qu'ils sont cohérents avec l'adresse de signature envoyée. (Je pense que c'est un petit bug dans le rappel WeChat, la signature ne doit pas contenir de symboles avec des significations aussi particulières)

Pit 3

Tous ont réussi la vérification, et le texte clair demandé par WeChat a été retourné Réussi ou échoué, quoi ? Imprimez-le localement et jetez un œil. Ce n'est pas faux. J'ai cherché partout dans Baidu. J'ai tout essayé pour supprimer l'en-tête de nomenclature du fichier et modifier l'en-tête. Je l'ai vraiment déchiffré et j'ai renvoyé le résultat déchiffré. J'ai essayé WeChat. ça ne marche toujours pas, WTF. .

Le texte en clair a-t-il vraiment été renvoyé ? Pensez-vous que l'impression en local est correcte ? Faux. Il existe quelque chose appelé un tampon

Les éléments du tampon ne seront pas imprimés localement Lorsque WeChat accède à votre site Web, la première chose qu'il obtient est le contenu du tampon au lieu du texte clair que vous affichez. Par conséquent, le tampon doit d'abord être vidé en utilisant ob_clean() avant echo. On estime que les autres frameworks sont identiques.

Ces trois pièges sont relativement importants, et il y a très peu d'informations sur Internet, j'espère que cela pourra aider tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer