Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Paypal IPN, Помогите с заключительной фазой 
:(
    Опции темы
ТРЕТЬ
  Дата 13.7.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 8.1.2006
Где: mind's gloomy corner

Репутация: нет
Всего: 1



Есть вот такой вот скриптик IPN
Код

<?php
require("./hidden/mysql_connect_admin.php");

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) 
{
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}

// 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);

// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$payer_id = $_POST['payer_id'];

if (!$fp) 
{
    // HTTP ERROR
} 
else
{
    fputs ($fp, $header . $req);
    while (!feof($fp)) 
    {
        $res = fgets ($fp, 1024);
        if (strcmp ($res, "VERIFIED") == 0) 
        {
            // check the payment_status is Completed
            if ($payment_status != 'Completed') exit(1);
            // check that txn_id has not been previously processed
            // check that receiver_email is your Primary PayPal email
            if ($receiver_email != '[email protected]') exit(1);
            // check that payment_amount/payment_currency are correct
            if ($payment_amount != '200.00') exit(1);
            if ($payment_currency != 'USD') exit(1);
            // process payment
            $query = "INSERT INTO `transactions` ( `txn_id` , `payer_id` , `payer_email` , `payment_amount` , `payment_currency` , `item_name` ) 
                        VALUES ('$txn_id', '$payer_id', '$payer_email', '$payment_amount', '$payment_currency', '$item_name');";
            $result = mysql_query($query);
        }
        else if (strcmp ($res, "INVALID") == 0) 
        {
            // log for manual investigation
        }
    }
fclose ($fp);
}
?>

Подключаемый модуль - подключение к базе данных... С базами можете не обращать внимание. меня интересует исключительно IPN...

Было бы очень здорово, если бы вы посмотрели нет ли в скрипте логических ошибок...

И самое главное! Прочитал я, что серваку пэйпэла нужно в конце отправить "200 OK message" чтобы он в дальнейшем не перепосылал подтверждение... И что-то я ну совсем не понимаю, как это записать... Помогите, пожалуйста! 
PM MAIL WWW ICQ   Вверх
GiV
Дата 13.7.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(ТРЕТЬ @  13.7.2006,  15:05 Найти цитируемый пост)
И самое главное! Прочитал я, что серваку пэйпэла нужно в конце отправить "200 OK message" чтобы он в дальнейшем не перепосылал подтверждение... И что-то я ну совсем не понимаю, как это записать... Помогите, пожалуйста!  

В конце того как скрипт отработал т.е. перед ?>
Код

        if ( strstr( php_sapi_name(), 'cgi' ) )
        {
            @header('Status: 200 OK');
        }
        else
        {
            @header('HTTP/1.1 200 OK');
        }


В остальном логика правильная. 
PM MAIL WWW ICQ   Вверх
ТРЕТЬ
Дата 13.7.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 8.1.2006
Где: mind's gloomy corner

Репутация: нет
Всего: 1



Спасибо большое!

Кстати, там случем нет какой лазейки для злоумышленника? Всмысле безопасность на достаточном уровне для реального проекта, или следует что-то добавить? 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.