[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ответ с PayPal
RCuPeR
Всем привет !

Наверняка здесь есть люди которые когда-то работали с системой оплаты платежей PayPal.
Вот и я пытаюсь подружится. Ужасные муки дали свое. Передал данные на их сайт. Все отлично. Но хотелось бы знать, оплатил ли клиент свою покупку или нет. Нужно что бы PayPal отправил мне "payment_status". Но как это сделать ? Как его принять ?
Подскажите пожалуйста!



Спустя 10 минут, 19 секунд (31.05.2011 - 14:38) alex12060 написал(а):
По гету как бы, а если не трудно, можно и в документации у них посмотреть)

Спустя 7 минут, 14 секунд (31.05.2011 - 14:46) RCuPeR написал(а):
Да ничего не понял.
Там можно и Гетом и Постом. Но куда прописывать урл обработчика, как дать знать ПайПалу, куда отправить пост ?

Спустя 15 минут, 21 секунда (31.05.2011 - 15:01) linker написал(а):
Логично, чт оесли ты хочешь что-то узнать от PayPal, то видимо запрос нужно отправлять именно ему и скорее всего в мануалах у них написано как это делать.

Спустя 5 минут, 54 секунды (31.05.2011 - 15:07) RCuPeR написал(а):
Ребят, вы меня извините, но если я обратился сюда, то это может значит что уже все моменты сделаны, все доки прочитаны и просто ступор.

Кто реально работал с этой системой ?
Помогите пожалуйста.

Спустя 15 минут, 16 секунд (31.05.2011 - 15:22) XCross написал(а):
Вот сюда в первую очередь:

Website Payments Standard

Вот что на хабре есть.
Полностью

<?php
//данная функция юзается для получения данных о транакции от Paypal'a
//код самой функции взят с сайта Paypal'a там где-то есть примеры на различных языках

function get_paypal_data($tx_token, $auth_token){
$req = 'cmd=_notify-synch';
$req .= "&tx=$tx_token&at=$auth_token";

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

if (!$fp) {
// HTTP ERROR
return false;
} else {
fputs ($fp, $header . $req);
// read the body data
$res = '';
$headerdone = false;
while (!feof($fp)) {
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == ) {
// read the header
$headerdone = true;
}elseif ($headerdone){
// header has been read. now read the contents
$res .= $line;
}
}
}

return $res;
}

//из GET'a берем только id транакции, все остальное нас не интересует, эти данные мы получим от Paypal'a в ответе на наш запрос
$tx = @$_GET['tx'];
if (!$tx){
error_log('[paypal] ERROR: Tx are absent!!!');
return false;
}

//отправляем запрос Paypal'y для получения данных о транзакции
//PAYPAL_IDENTITY_TOKEN - константа с токеном, полученным при активации PDT

$res = get_paypal_data($tx, PAYPAL_IDENTITY_TOKEN);
$history .= ('[paypal] post request result for '.$tx."\n".$res);
if (!$res){
$history .= ('[paypal] http error for '.$tx);
exit();
}

//парсим ответ
$strs = explode("\n", $res);
if ($strs[] == 'FAIL'){
//если первая строка FAIl - значит какая-то трабла
//обрабатываем ошибку как вам требуется и выходим

exit();
} elseif ($strs[] == 'SUCCESS'){
//вроде все нормально - парсим остальные параметры
$res_vars = array();

//parse paypal answer to array where key it's varname
for($i=1; $i<count($strs);$i++){
$strs[$i] = trim($strs[$i]);
if (!$strs[$i]) continue;
$vars = explode('=', $strs[$i]);
if (!$vars || count($vars) != 2){
//какая-то трабла - переходим к следующему параметру
continue;
}
$res_vars[$vars[]] = $vars[1];
}
//в итоге в массиве res_vars у нас находятся все параметры транзакции

//в поле txn_type - содердится тип транзакции. нас интересует только web_accept

switch ($res_vars['txn_type']){
case 'web_accept':
//тут мы проверяем все остальные поля: bussiness, receiver_id...
// при необходимости парсим поле custom
// если все нормально, то проверяем состояние платежа

switch (@$res_vars['payment_status']){
case 'Completed':
//все нормально - отправляем юзеру товар, начисляем деньги на виртуальный счет и т.д.
break;
}
break;
}
}

?>



Посмотри мжеть что

Здесь

Спустя 15 минут (31.05.2011 - 15:37) RCuPeR написал(а):
Да, только как подключить PDT к своему акку ?

Спустя 1 минута, 7 секунд (31.05.2011 - 15:38) XCross написал(а):

Спустя 6 минут, 55 секунд (31.05.2011 - 15:45) RCuPeR написал(а):
То ли я дурак то ли я дурак!
Не вижу хоть убей где пояснение как вывести результат платежа на мой сайт %)

Спустя 18 минут, 5 секунд (31.05.2011 - 16:03) XCross написал(а):
Цитата
То ли я дурак то ли я дурак!
Цитата
Activating PDT

To use PDT, you must activate PDT and Auto Return in your PayPal account profile. You must also acquire a PDT identity token, which is used in all PDT communication you send to PayPal.

Follow these steps to configure your account for PDT:
Log in to your PayPal account.
Click the Profile subtab.
Click Website Payment Preferences in the Seller Preferences column.
Under Auto Return for Website Payments, click the On radio button.
For the Return URL, enter the URL on your site that will receive the transaction ID posted by PayPal after a customer payment.
Under Payment Data Transfer, click the On radio button.
Click Save.
Click Website Payment Preferences in the Seller Preferences column.
Scroll down to the Payment Data Transfer section of the page to view your PDT identity token.


Почитай, может это. Что-то тут про PDT написано. может поймешь.

Спустя 36 минут, 26 секунд (31.05.2011 - 16:40) RCuPeR написал(а):
Это какой-то ипец!!!

Спустя 56 минут, 15 секунд (31.05.2011 - 17:36) RCuPeR написал(а):
Не могу включить этот долбаный PDT. Где он находится?

Цитата


Click the Profile subtab.
Click Website Payment Preferences in the Seller Preferences column.


Ну нету там такого !!!

Спустя 3 минуты (31.05.2011 - 17:39) alex12060 написал(а):
А робокасса проще)

Спустя 42 секунды (31.05.2011 - 17:40) RCuPeR написал(а):
Не время письками платежек мерятся =(


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.