Проблемы с проверкой данных PayPal с помощью PHP - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь проверить данные, которые PayPal отправляет на мой notify_url после оплаты транзакции (в данном случае с помощью песочницы).

Я попробовал пример кода из PayPal с помощью fsockopen, но просто не смог заставить его работать должным образом. Я также пытался с помощью cURL вручную выдать сертификат, но он тоже не удался.

Однако после некоторых изменений мне удалось найти решение:

<?php
$_POST = array('mc_gross' => '9.90',
'protection_eligibility' => 'Eligible',
'address_status' => 'confirmed',
'payer_id' => '5PK5H93BE5RAQ',
'tax' => '0.00',
'address_street' => '1 Main St',
'payment_date' => '12:13:29 Jan 12, 2012 PST',
'payment_status' => 'Pending',
'charset' => 'windows-1252',
'address_zip' => '95131',
'first_name' => 'Test',
'address_country_code' => 'US',
'address_name' => 'Test User',
'notify_version' => '3.4',
'custom' => '523368657',
'payer_status' => 'verified',
'business' => 'seller_1326059109_biz@yahoo.fr',
'address_country' => 'United States',
'address_city' => 'San Jose',
'quantity' => '1',
'verify_sign' => 'AGilT0jx3itxd3XAujXRvUPipg93ATqSM88ML-PAwAoa7xGkRSWXhVR8',
'payer_email' => 'buyer_1326398444_per@yahoo.fr',
'txn_id' => '1C254380JG793833D',
'payment_type' => 'instant',
'last_name' => 'User',
'address_state' => 'CA',
'receiver_email' => 'seller_1326059109_biz@yahoo.fr',
'receiver_id' => 'FKBDH7FDLECEQ',
'pending_reason' => 'multi_currency',
'txn_type' => 'web_accept',
'item_name' => 'Compte premium winker',
'mc_currency' => 'EUR',
'item_number' => '',
'residence_country' => 'US',
'test_ipn' => '1',
'handling_amount' => '0.00',
'transaction_subject' => '523368657',
'payment_gross' => '',
'shipping' => '0.00',
'ipn_track_id' => '1v3OWX6MBMqE6Oe6-BSmCA');
$req = '?cmd=_notify-validate';
foreach ($_POST as $key => $value) {
  $value = urlencode(stripslashes($value));
  $req .= "&amp;$key=$value";
}

$url = 'https://sandbox.paypal.com/cgi-bin/webscr'.$req;
echo '<p><a href="'.$url.'" target="_blank">browse link</a></p>';

$content = file_get_contents($url);
var_dump($content);

Я получаю результат, но он «НЕВЕРНЫЙ», тогда как, если я открою ссылку в своем браузере (с точно такой же информацией), он «ПРОВЕРЕН»!

Есть идеи?

Заранее спасибо за ваши ответы

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