PHP: yanıt kodu kontrol etmek için nasıl?

1 Cevap php

Ben bir PayPal IPN dinleyici uygulama göreli bir PHP acemi değilim ve tüm ı Yüklü dışında gerçekten bir yanıt kodu kontrol etmek için biliyorum, iyi çalışıyor gibi görünüyor.

Ben cURL ile çirkin bir şey denedim ama (ben cURL anlama değilim) hiç çalışmıyor.

Ben net bir yerden yakaladı bu kod parçası denedim:

$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$response_headers = get_headers($fp);
$response_code = (int)substr($response_headers[0], 9, 3);

... Ama işe yaramıyor (döner $ RESPONSE_CODE = 0).

Yani şimdi, ben bir Tepki 200 için kontrol etmeden benim IPN kod hata ayıklama ediyorum.

Daha deneyimli herkes bu kontrol etmek için basit / doğru yolu nedir bana tavsiyelerde bulunabilir?

Teşekkürler

1 Cevap

Bu get_headers ($url), değil get_headers ($ fp) bulunuyor. Ben bunu tamamen yanlış (ve ben hiç görmedim diğer bazı modu var) okuyorum sürece, bunu sizden okuyorsanız URL değil, bir yuva tanıtıcısı geçmesi gerekir. Aslında, görünüşe göre kendi GET yapar, bu nedenle mevcut görev için yararsız olurdu.

fsockopen (...) daha düşük bir seviyede (TCP / IP) fonksiyonudur. Bu bir soket tanıtıcı, bir CURL sap döner. Hangi bunu curl_getinfo (...) kullanamazsınız budur. Böyle bir şey istiyorum ...

$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($fp);

$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);

Ben hatırlıyorum hariç, sen sonrası alanlara 'cmd = _notify-validate' eklemeniz gerekir.

(...) Fsockopen kullanmayın. Evet, biliyorum, o Paypal örnek kod böyle yapar. Ama her yerde çalıştırmak için pinti ve CURL yüklü güvenemez. Sen bu yüzden bunu kullanabilirsiniz.