Как заставить PayPal и cURL работать вместе? - PullRequest
1 голос
/ 18 августа 2010

ФОНОВЫЕ ДЕТАЛИ:

У меня есть собственная корзина покупок, в которой для обработки платежей используется PayPal. У меня есть промежуточная страница между корзиной и PayPal, которая добавляет заказ в базу данных и отправляет электронные письма с подтверждением.

До сих пор у меня была страница посредника, настроенная для включения всех необходимых данных в качестве скрытых полей формы и отправки формы в PayPal onload.

Теперь я экспериментирую с использованием cURL в PHP для отправки данных POST в PayPal.

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');
//curl_setopt($ch, CURLOPT_URL, 'http://localhost/postecho.php');

   // ^ this one is a simple page that echoes all POST data using print_r

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $poststring);

// Some options that didn't seem to help
//curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);

// User agent spoofing which also didn't seem to help
//$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
//curl_setopt($ch, CURLOPT_USERAGENT, $agent);

$result=curl_exec($ch);
curl_close($ch);

$poststring содержит все данные POST, которые я ранее передавал в формате param1=value&param2=value. Выполнение этого через тестовую страницу postecho.php показывает, что с данными POST все в порядке.

ПРОБЛЕМА:

«Извините - ваше последнее действие не может быть выполнено»

Это то, что PayPal сообщает мне, когда я пытаюсь сделать что-то в стиле CURL. Это действительно не дает мне никакой полезной информации относительно решения этой проблемы. Я полагаю, что в заголовках должно быть что-то или что-то, что ему не нравится. Как заставить PayPal и cURL работать вместе?

Ответы [ 2 ]

1 голос
/ 18 августа 2010

скорее всего, вам не хватает файлов cookie / данных сеанса.на вашем месте я бы перехватил необработанное http-сообщение, которое отправляется из вашего браузера на paypal.com.часть его информации не понадобится для того, чтобы запрос работал, но, по крайней мере, он будет содержать всю необходимую информацию.затем попытайтесь эмулировать его с помощью curl.

длинный короткий ответ: сначала перехватите необработанное http-сообщение, затем эмулируйте его с помощью curl.

0 голосов
/ 18 августа 2010

Вы проверили документы API для PHP?

https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/library_code

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...