Re: Paypal IPN and HTTP 1.1 [message #182232 is a reply to message #182228] |
Mon, 22 July 2013 20:33 |
Mitch Bujard
Messages: 19 Registered: July 2013
Karma:
|
Junior Member |
|
|
On 2013-07-22 14:33:32 +0000, j said:
> On 7/20/2013 6:25 AM, Mitch Bujard wrote:
>> On 2013-07-17 13:36:58 +0000, Mitch Bujard said:
>>
>>> Today I got a message from Paypal entitled 'Action required before
>>> October 7, 2013'. It says that at that date, IPN listener scripts will
>>> have to be conformant to HTTP: 1.1 or they will stop working.
>
> This looks like a server issue. HTTP 1.1 has been around for quite a
> while, why are you at 1.0?
>
> I'm not sure what you can do in PHP other than send some headers with
> the host info. Otherwise I see that there are a number of changes in
> 1.1 that can't be spoofed with a header.
I finally got it to work. The code at paypal support page was helpful.
I followed scrupulously what they advise, and it works !
Thank you for your support.
Now, I can concentrate on creating nice Xojo web apps, but it's not php ;^}
Mitch
http://FontMenu.com
---
Here is the code :
PN: HTTP1.0 to HTTP1.1 - php coding tips
Published 01/25/2013 10:23 AM | Updated 02/07/2013 02:05 AM
Developers need to include the "Host" and "Connection" headers in the
IPN postback script:
PHP
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Connection: close\r\n\r\n";
PLEASE NOTE:
1) For further compatibility your php script should also trim the
IPN validation response.
Please modify your script:
From:
if (strcmp ($res, "VERIFIED") == 0) {
...
else if (strcmp ($res, "INVALID") == 0) {
To:
if (strcmp (trim($res), "VERIFIED") == 0) {
...
else if (strcmp (trim($res), "INVALID") == 0) {
2) In php make sure the last line of your header includes double
end-of-line markers: \r\n\r\n as in the example above: $header
..="Connection: close\r\n\r\n";
3) In php make sure to open the socket connection to the same host
declared in the header. As your header is declaring the host as
$header .="Host: www.paypal.com\r\n";
You should open the connection to the same host:
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
|
|
|