Bonjour à tous,

J'ai un petit problème avec le code du tuto Paypal.

En effet l'IPN me revoie "Invalid Host header". J'ai pourtant fait un copier/coller du code et j'ai juste changé l'adresse mail de test du vendeur et en gardant "ssl://www.sandbox.paypal.com".

Quelqu'un peut il m'aider ??

Merci à tous et merci pour ce tuto.

Orsam

5 réponses


Grafikart
Réponse acceptée

Paypal a fait un changement dans son API Il faut rajouter un header HOST

...
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
...
Orsam
Auteur
Réponse acceptée

Merci beaucoup..

Olivier

Salut Orsam et Grafikart,
C'est exactement ce que je recherche. J'ai essayer ta solution Grafikart mais ça ne semble pas marcher. J'ai dû faire quelque chose qu'il ne fallait pas dans le header. Voici mon code :

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: Close\r\n\r\n";

Qu'en pensez-vous?

Orsam
Auteur

Salut Kal-eL,

Tout ça me semble très bien.

Pour ma pars, mon code fonctionne, mais apparemment, il existe au version de paypal en WebService, et je pense travailler dessus.

A plus

Olivier

Après beaucoup trop de recherches, voici le code à modifier.

Le HEADER :

$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n"; // www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: close\r\n\r\n";

Puis à la place de

if (strcmp ($res, "VERIFIED") == 0)

il faut mettre

if (stripos($res, "VERIFIED") !== false)

Encore merci à Grafikart pour toutes les connaissances que tu nous apporte !