Maison >développement back-end >tutoriel php >Astuce rapide: solution à PayPal IPN renvoyant toujours 'non valide'
Lors du développement avec le simulateur IPN de PayPal, vous pouvez courir dans la situation où il continue de retourner «invalide» lors de la vérification du message, quel que soit le codage que vous définissez ou toutes les conditions correspondant et étant valides.
L'équipe PayPal Developers est connu pour ignorer toutes les demandes, et les documents sont difficiles à lire, donc la débogage de ces problèmes est incroyablement difficile et peut vous coûter des heures aux heures facturables. Je suis même allé jusqu'à la configuration d'un serveur en direct pour tester le simulateur IPN, par peur que Ngrok était en faute lors des tests localement, et même ajouté un certificat au point final pour faire fonctionner HTTPS - pas de dés. En fin de compte, la solution était - comme c'est généralement le cas - simple mais obscur.
Le symptôme (l'échec) est causé par le champ de date, s'il contient un identifiant de fuseau horaire. Tout cela, cependant, est causé par le fait que PHP a deux fonctions de codage / décodage d'URL différentes: brut et non-rAW.
Voici un exemple.
dire que nous avons une date dans le simulateur IPN comme ceci:
Fri Aug 19 2016 09:25:00 GMT+0100 (GMT Daylight Time)
Cela arrive à la fin de l'auditeur (dans votre code PHP) comme ceci:
Fri%20Aug%2019%202016%2009%3A25%3A00%20GMT+0100%20%28GMT%20Daylight%20Time%29
La sous-chaîne GMT 0100 est problématique, car la fonction PHP URLDECODE interprète l'espace en As, il est donc décodé en:
Fri Aug 19 2016 09:25:00 GMT 0100 (GMT Daylight Time)
Remarquez le perdu, transformé en un caractère spatial.
Lorsque cela est réencodé pour renvoyer à PayPal pour la vérification, la vérification échoue car elle n'est plus la même valeur sur le terrain - la manquait. C'est un détail très, très minuscule, et incroyablement difficile à repérer lors de l'inspect à la main les valeurs du champ, mais c'est là. Cela suffit, selon les documents PayPal, pour rendre la vérification «invalide».
Il y a deux solutions à ce problème:
J'espère que ce petit indice a sauvé quelqu'un de beaucoup de googling frustrant!
L'état «non valide» d'un message IPN indique que le message n'est pas originaire de PayPal. Cela pourrait être dû à un certain nombre de raisons telles que le format de données incorrect, le codage incorrect ou un décalage dans les détails de la transaction. Il est crucial de vérifier l'authenticité du message IPN pour prévenir les transactions frauduleuses.
Commencez par vérifier le format de données et le codage de votre message IPN. Assurez-vous qu'il correspond aux spécifications fournies par PayPal. Croisez également les détails de la transaction avec votre compte PayPal. Si le problème persiste, envisagez d'utiliser l'outil de simulateur IPN fourni par PayPal à des fins de test.
Le simulateur IPN est un outil fourni par PayPal qui vous permet d'envoyer de faux messages IPN à votre URL de l'écoute à des fins de test. Il vous aide à identifier tout problème avec votre auditeur et à les rectifier avant de passer en direct.
Pour utiliser le simulateur IPN, vous devez vous connecter à votre compte PayPal Developer et accédez à la page du simulateur IPN. Entrez votre URL de l'écoute et sélectionnez le type de message IPN que vous souhaitez tester. Cliquez sur «Envoyer IPN» pour envoyer un faux message IPN à votre écouteur.
Si votre auditeur ne reçoit pas de messages IPN, Vérifiez votre URL de l'auditeur pour toute erreur. Assurez-vous également que votre serveur ne bloque pas les connexions entrantes de PayPal. Si le problème persiste, envisagez de demander l'aide du support technique de PayPal.
Pour garantir la sécurité de vos transactions IPN, vérifiez toujours l'authenticité de les messages IPN. En outre, utilisez une connexion sécurisée (HTTPS) pour votre URL de l'écoute et conservez votre compte PayPal Confidential.
La commande «cmd = _notify-validate» est utilisée pour valider le message IPN. Lorsque vous renvoyez le message IPN à PayPal avec cette commande, PayPal répond avec «vérifié» si le message est authentique ou «non valide» si ce n'est pas le cas.
PayPal peut envoyer plusieurs messages IPN pour la même transaction en cas de mises à jour ou de tentatives de paiement. Vous devez concevoir votre auditeur pour gérer ces messages en double et empêcher toute double transformation des transactions.
Si vous recevez une réponse «non valide» même après avoir validé le message IPN, cela indique un écart dans les données de transaction. Croisez les détails de la transaction avec votre compte PayPal et vérifiez toutes les erreurs dans le message IPN.
Pour gérer les messages IPN dans le nœud. JS, vous pouvez utiliser le module «PayPal-IPN». Ce module fournit des méthodes pour vérifier et analyser les messages IPN. Vous pouvez l'installer à l'aide de NPM et l'exiger dans votre application Node.js.
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!