Хранение и выдача электронных товаров после их оплаты

Тема в разделе "Как сделать...", создана пользователем sonya2003, 7 май 2014.

  1. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    22
    Симпатии:
    2
    Понадобилось написать модуль для продажи электронных товаров (архивы текстовых файлов). Возникли проблемы с организацией хранения таких товаров и мгновенной продажей после оплаты. Как хранить ценные файлы на сервере, как происходит пометка заказа что он оплачен и т.д.? Для оплаты наверное надо использовать секретный ключ, иначе можно было бы попросту подделать переход с сайта системы оплаты и получить товар. Подскажите пожалуйста где можно найти материал на эту тему, или готовый скрипт но открытый, что бы там можно было подсмотреть организацию хранения и оплаты цифровых товаров. Да и вообще подскажите все что будет полезно в этом плане, уверен где то же есть статьи или примеры модулей.
     
  2. ev-goo

    ev-goo Создатель

    Регистр.:
    28 май 2012
    Сообщения:
    10
    Симпатии:
    9
    Здесь подробная информация с примерами о оплате, почитай на досуге.
     
    sonya2003 нравится это.
  3. ishkval

    ishkval Постоялец

    Регистр.:
    2 окт 2013
    Сообщения:
    102
    Симпатии:
    35
    Схема работы того же плати ру - оплатили и получили на почту, файлы хранятся у вас на сервере и путь никому не известен, так же для доп защиты кладёте в папку с файлами .htaccess файл и запрещаете доступ к ней, создаете скрипт оплаты и проверки оплаты, если оплачено посылаете файлик на указаный майл
     
    sonya2003 нравится это.
  4. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    22
    Симпатии:
    2
    Почитала на досуге )) Вопрос был немного в другом, по взаимодействию с платежными системами информации много, а вот по безопасному хранению файлов и их передаче покупателям после оплаты информации не нашла (( в приведенном вами примере покупателям направляется текстовая информация из базы данных, меня интересует передача файлов.
     
  5. sonya2003

    sonya2003 Создатель

    Регистр.:
    6 окт 2007
    Сообщения:
    22
    Симпатии:
    2
    А в случае если у покупателя нет майла, как сделать временные ссылки на файлы после оплаты
     
  6. ishkval

    ishkval Постоялец

    Регистр.:
    2 окт 2013
    Сообщения:
    102
    Симпатии:
    35
    Как он тогда в платёжных системах зарегистрировался?)
    Генерировать ссылку через htaccess/php, сверять ip, сессию/кукисы, браузер итд
     
  7. ev-goo

    ev-goo Создатель

    Регистр.:
    28 май 2012
    Сообщения:
    10
    Симпатии:
    9
    Ну а кто вам мешает вместо выдачи текстовой информации выдавать ссылку на скачивания?

    Вот небольшой пример как можно организовать выдачу файла. Переделать под любой случай без проблем будет.

    Генерируем ссылку на скачивание
    PHP:
    $filedata rawurlencode (base64_encode ($member_id['login'] . "||" $member_id['email'] . "||" $license['product_name'] . "||" $license['product_version'] . "||" md5 (md5 ($member_id['login'] . $member_id['email'] . DB_HOST DB_NAME DB_PASS))));
    $filelink "/index.php?module=download&id=" $filedata;

    PHP:
    if (isset ($_REQUEST['id'])) {
        
    $id trim (strip_tags ($_REQUEST['id']));
        
    $data_arr explode ("||"base64_decode (@rawurldecode ($id)));

        
    $member_login $data_arr[0];
        
    $member_email $data_arr[1];
        
    $product_name $data_arr[2];
        
    $product_version $data_arr[3];

        if (
    md5 (md5 ($member_id['login'] . $member_id['email'] . DB_HOST DB_NAME DB_PASS)) != $data_arr[4]) die ('ID not valid!');

        
    $sql "SELECT user_id FROM clients_users WHERE login = '$member_login' AND email = '$member_email'";
        
    $result $db->query ($sql) or die ($db->error);
        
    $row $result->fetch_assoc();

        if (
    $row['user_id']) {

            
    $filefolder ROOT_DIR "/files/" $product_name "/";
            
    $filename $product_name "_v" $product_version ".zip";
            
    $file $filefolder $filename;

            if (
    file_exists ($file)) {

                
    header ("Content-Disposition: attachment; filename=" basename ($file) . ";");
                echo 
    file_get_contents ($file);

            }  else {

                
    $infomessage .= msgbox ("Ошибка<br>""Запрошеный файл не найден! <a href=\"/panel.html\">Вернуться назад</a>"1);

            }

        } else {

            die (
    'USER not valid!');

        }

    } else {

        
    header ('Location: /panel.html');
        exit;

    }
     
    Последнее редактирование: 11 май 2014
    ishkval нравится это.