[RESOLU] PayPal IPN: test IPN: VERIFIED ,logs: INVALID!

Avatar du membre
Mammouth du PHP | 1564 Messages

04 juil. 2020, 15:07

Bonjour,

PayPal m'épuise, ça fonctionne jamais correctement et il faut faire des pieds et des mains pour y arriver correctement (heureusement que parfois ça fonctionne!)

Ici en l’occurrence j'ai un problème avec la validation IPN:

Quand je lance un test IPN sur le site de paypal (via https://developer.paypal.com/developer/ipnSimulator/) j'ai le résultat:
IPN was sent and the handshake was verified.
Mais mes logs côté serveur sont pas d'accord:
INVALID
Comment peut on savoir qu'est ce qui ne va pas ? J'ai toutes les variables $_POST enregistrées dans un fichier logs donc je suis en mesure de voir ce qui va ou ne va pas mais je ne sais pas quoi regarder (ni même si c'est en rapport avec une variable manquante...)

PS: c'est la base d'un script que j'avais partagé sur mon site, mais depuis le temps (février 2018) on dirait que ça ne fonctionne plus...

Avatar du membre
Mammouth du PHP | 1609 Messages

04 juil. 2020, 17:09

Salut two3d, tu as une page avec 2 exemples de codes et une classe PaypalIPN toute prête ici : https://github.com/paypal/ipn-code-samp ... master/php
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1564 Messages

05 juil. 2020, 09:13

Merci, c'est celle que j'utilise ;)

Je vais tenter de l'utiliser telle quelle car j'ai apporté des modifs...

Avatar du membre
Mammouth du PHP | 1564 Messages

05 juil. 2020, 09:35

ça fonctionne, je vais débuguer pas à pas pour savoir quel est la cause, je te remercie

Avatar du membre
Mammouth du PHP | 1564 Messages

05 juil. 2020, 10:06

ny connaissant rien en classe PHP j'ai voulu faire une fonction __construct dans la classe PayPalIPN et ça ne fonctionnait pas, merci pour la piste ;)

Avatar du membre
Mammouth du PHP | 1609 Messages

05 juil. 2020, 10:10

Pourtant rien ne t'empêche d'en faire un, du moment que tu fais ça comme il faut. ;)
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1564 Messages

05 juil. 2020, 12:05

J'avais fait ceci:
	public function __construct($paypal_test){
		if($paypal_test)
			$use_sandbox=true;
		else
			$use_sandbox=false;
	}
et du coup j'appelais directement la class comme ceci:
$ipn = new PayPalIPN($ma_var_true_ou_false);

Avatar du membre
Mammouth du PHP | 1609 Messages

05 juil. 2020, 20:31

Bah ma foi je ne vois pas de problème si ce n'est que tu devrais faire un $this->useSandbox() car il y a cette méthode exprès.

Ça donnerait ça.
public function __construct($useSandbox = false){
  if ($useSandbox)
    $this->useSandbox();
}

Si tu veux modifier directement la propriété de l'objet à l'intérieur de la classe il faut utiliser $this->use_sandbox et non pas $use_sandbox. ;)
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1564 Messages

05 juil. 2020, 22:45

Si tu veux modifier directement la propriété de l'objet à l'intérieur de la classe il faut utiliser $this->use_sandbox et non pas $use_sandbox. ;)
Aah, yes! sans doute là l'erreur, tant pis j'ai utilisé la fonction useSandbox() après l'appel de la class "$ipn->useSandbox()" au lieu de mon construct

J'apprends sur le tas les classes PHP, je suis novice avec ce mode de codage

Merci en tout cas!