Как я могу зайти в PayPal для подтверждения оплаты после экспресс-оплаты в интернет-магазине?PHP - PullRequest
1 голос
/ 18 апреля 2011

Когда вы нажимаете кнопку PayPal Express Checkout в любом интернет-магазине, он перенаправляет вас на специальную ссылку для входа в PayPal для оплаты заказа.

Я искал максимум 3 дня в поисках простого сценария PayPal php curl, который регистрирует вас с этого шага и подтверждает платеж, но не смог ничего найти. Я нашел только сценарии, которые регистрируют вас на главной странице PayPal, которые не будут работать, если вы нарушите поток PayPal.

Я обнаружил, что для этого невозможно использовать API, поэтому это должен сделать CURL.

Я прошу об этом, потому что я работаю на сайте прямой поставки и хотел бы автоматизировать определенные шаги, такие как размещение и оплата заказов. Рабочий код для этого поможет не только мне, но и всем, кто хочет автоматизировать покупки в той или иной форме.

Я вставлю созданный мной нерабочий скрипт, который выдает мне только сообщение «Извините - Ваше последнее действие не может быть выполнено» от PayPal, если это вообще может помочь.



$agent = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8";
$header[] = "text/html; charset UTF-8";
$url = $_GET[link];
// $url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&&token=EC-EXAMPLE7839244";
$email = urlencode("email");
$password = urlencode("password");
$cookies = "cookies.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($ch, CURLOPT_URL, $url);

// HIT LOGINPAGE
$login = curl_exec ($ch);
// PRINT LOGINPAGE
var_dump($login);

// GET LOGIN-LINK AND SET POSTFIELDS
preg_match("/merchantpaymentweb\?cmd\=\_flow(.*?)\"/", $login, $output);
$link = "https://www.paypal.com/c2/cgi-bin/merchantpaymentweb?cmd=_flow$output[1]";
// PRINT LOGIN-LINK
echo "LINK: $link<br>";
preg_match("/CONTEXT\" value=\"(.*?)\"/", $login, $output);
$CONTEXT = $output[1];
$postfields = "CONTEXT=$CONTEXT&close_external_flow=false&cmd=_flow&external_close_account_payment_flow=payment_flow&flow_name=xpt/Merchant/hostedpayments/Login&flow_name=xpt/Merchant/hostedpayments/Login&form_charset=UTF-8&id=&login.x=Log+In&login_email=".$email."&login_password=".$password."&myAllTextSubmitID=";
echo "<br>POSTFIELDS : \"$postfields\"<br>";

curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postfields);

// POST FORM, fails, gives "Sorry - Your last action could not be completed" message
$should_be_logged_in_now = curl_exec($ch);
var_dump($should_be_logged_in_now);

1 Ответ

0 голосов
/ 18 апреля 2011

Я не очень знаком с использованием PayPal.Я прекратил использовать его, как и 4 года назад, из-за возвратных платежей.

Возможно, вы захотите проверить API PayPal Pro , который является платной услугой.Это может быть то, что вы ищете вместо того, чтобы иметь дело с CURL & PayPal, так как вы упомянули об использовании API.

...