Я пытаюсь проверить информацию pdt paypal.
Я создал свою макетную форму и представил ее. ИТ работал и возвращал информацию.
Я попробовал то же самое, что сделал запрос на завивание. Но мой запрос на запрос возвращается мне пустым.
моя макетная форма:
<form method="post" action="https://sandbox.paypal.com/cgi-bin/webscr"> <input type="hidden" name="cmd" value="_notify-synch"/> <input type="hidden" name="at" value="-----"/> <input type="hidden" name="tx" value="-----"/> <input type="submit" value="Test"/> </form>
Мой код CURL REQ:
$arrData = array( 'tx' => '----', 'cmd' => '_notify-synch', 'at' => '-----' ); $ch = curl_init( 'https://sandbox.paypal.com/cgi-bin/webscr' ); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData); $strCurlResult = curl_exec($ch); curl_close( $ch ); return $strCurlResult;
РЕДАКТИРОВАТЬ:
ON ошибка отслеживания ловушки я нашел следующее сообщение:
SSL: имя субъекта сертификата «www.sandbox.paypal.com» не соответствует имени целевого узла «sandbox.paypal.com»
Изменить: $ ch = curl_init ('https://sandbox.paypal.com/cgi-bin/webscr');
To: $ ch = curl_init ('https://www.sandbox.paypal.com/cgi-bin/webscr');
Причина: сертификат для http://www.sandbox.paypal.com недействителен для sandbox.paypal.com.
Между прочим, сделайте то же самое и в «действии» вашей формы.
Фактически, вы можете просто отключить проверку HOST. В некоторых версиях PHP / cURL просто отключить PEER недостаточно:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
Из документов:
CURLOPT_SSL_VERIFYHOST: 1 проверить наличие общего имени в SSL-сертификате. 2, чтобы проверить наличие общего имени, а также убедиться, что он соответствует указанному имени хоста. В производственных средах значение этой опции должно быть равно 2 (значение по умолчанию).
Вы должны указать cURL не проверять сертификат SSL. Это можно сделать, установив опцию cURL:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
Дополнительная информация здесь:
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, 0);
хотя вышеупомянутые работы не рекомендуется.
как сказал роберт
Изменить:
$ ch = curl_init ('https://sandbox.paypal.com/cgi-bin/webscr');
Для того, чтобы:
$ ch = curl_init ('https://www.sandbox.paypal.com/cgi-bin/webscr');
Отправьте его как строку:
$arrData = array( 'tx' => '----', 'cmd' => '_notify-synch', 'at' => '-----' ); $fields_string = ""; foreach($arrData as $key=>$value) $fields_string .= $key.'='.$value.'&'; rtrim($fields_string,'&'); $ch = curl_init( 'https://sandbox.paypal.com/cgi-bin/webscr' ); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); $strCurlResult = curl_exec($ch); curl_close( $ch ); return $strCurlResult;