Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скачивание после оплаты


Автор: Areostar 19.10.2011, 13:18
Заранее извените если тему не туда поместил!

Вопрос: Как замутить на сайте такую фишку - довать скачивать фаил только после оплаты(по веб мани на пример)?

Если это не дело PHP, то хоть направте куда следует!

Автор: CruorVult 19.10.2011, 13:25
Сделать скачивание файла с помощью скрипта
http://shaman.asiadata.ru/node/217

Делать проверку. Если пользователь заплатил - то выдать ему файл.

Добавлено через 1 минуту и 8 секунд
ну и запретить любое прямое скачивание

Добавлено через 3 минуты и 53 секунды
Код

if(/*Юзер заплатил*/)
{
    
    $filename = $_REQUEST['filename'];    
    
    $dir="upload/";            
    $type = mime_content_type($filename);

    if (!$type ) header("Content-Type: application/octet-stream");
        else header("Content-Type: ".$type); 
    header("content-disposition: attachment; filename=\"".$filename."\""); 
    header("Content-Transfer-Encoding: binary");
    header('Pragma: no-cache');
    header('Expires: 0');
    readfile($dir.$filename);
}

Автор: Areostar 19.10.2011, 19:51
Как я вижу это фаилик от дурпала! а если у меня сайт самописный!?

Скажите просто как мне(автоматом) проверять отслюнявил ли мне человек денежку на Вебмани скажим!??

Автор: Absinthe 19.10.2011, 20:27
Areostar, а что тебе мешает прочитать на сайте платежной системы, как это делать? Все равно никто понятнее не опишет это.

Автор: Sanchezzz 20.10.2011, 00:24
1 у каждой оплаты своя схема работы но принцеп действия один и тотже вернуть скрипту резалт ОК или 1 

Расмотрим вебмани!
у вас должен быть файл для обработки ответа от сервера....

например webmoney_web_result.php это резалт путь скрипта нужно прописывать в  merchant.webmoney.ru кабинете
Код


include_once $_SERVER['DOCUMENT_ROOT'] . "/config.php"; // конфиг 

$WM_PAYEE_PURSE = "R28438*******"; // НОМЕР КАШЕЛЬКА куда принемать деньги используется чтобы не подменили в форме.
$order_id = (!empty($_POST['order_id'])) ? intval($_POST['order_id']) : 0;
$CNST_SECRET_KEY ="1221"; // секретный код должен настраиваться в платежном кабинете...





if($_POST['LMI_PREREQUEST']==1 ) {
 
 $sql="SELECT * FROM `server_order` WHERE `id`={$order_id} LIMIT 1;"; // таблица заказов
 $res =  $db->query($sql);
  if($res->num_rows == 0) {
    echo "ERR: НЕТ ТАКОГО ТОВАРА";
    exit;
  }
  
  $row = $res->fetch_assoc();
  if(trim($row['price'])!=trim($_POST['LMI_PAYMENT_AMOUNT'])) {
    echo "ERR: НЕВЕРНАЯ СУММА ".$_POST['LMI_PAYMENT_AMOUNT'];
    exit;
  }

  if(trim($_POST['LMI_PAYEE_PURSE'])!=$WM_PAYEE_PURSE) {
    echo "ERR: НЕВЕРНЫЙ КОШЕЛЕК ПОЛУЧАТЕЛЯ ".$_POST['LMI_PAYEE_PURSE'];
    exit;
  }
 
  echo "YES";
}// Если нет LMI_PREREQUEST, следовательно это форма оповещения о платеже...
else{
    $msg = "Пусто";

// проверка кода.
    $strCheck = md5($_POST["LMI_PAYEE_PURSE"].$_POST["LMI_PAYMENT_AMOUNT"].$_POST["LMI_PAYMENT_NO"].$_POST["LMI_MODE"].$_POST["LMI_SYS_INVS_NO"].$_POST["LMI_SYS_TRANS_NO"].$_POST["LMI_SYS_TRANS_DATE"].$CNST_SECRET_KEY.$_POST["LMI_PAYER_PURSE"].$_POST["LMI_PAYER_WM"]);
        if ($bCorrectPayment && strtoupper($_POST["LMI_HASH"]) != strtoupper($strCheck))
            $bCorrectPayment = False;
// если код верный и оплата есть то дальше.
        if ($bCorrectPayment){
            $strPS_STATUS_DESCRIPTION = "";
            if ($_POST["LMI_MODE"] != 0)
                $strPS_STATUS_DESCRIPTION .= "тестовый режим, реально деньги не переводились; ";
            $strPS_STATUS_DESCRIPTION .= "кошелек продавца - ".$_POST["LMI_PAYEE_PURSE"]."; ";
            $strPS_STATUS_DESCRIPTION .= "номер счета - ".$_POST["LMI_SYS_INVS_NO"]."; ";
            $strPS_STATUS_DESCRIPTION .= "номер платежа - ".$_POST["LMI_SYS_TRANS_NO"]."; ";
            $strPS_STATUS_DESCRIPTION .= "дата платежа - ".$_POST["LMI_SYS_TRANS_DATE"]."";

            $strPS_STATUS_MESSAGE = "";
            $strPS_STATUS_MESSAGE .= "кошелек покупателя - ".$_POST["LMI_PAYER_PURSE"]."; ";
            $strPS_STATUS_MESSAGE .= "WMId покупателя - ".$_POST["LMI_PAYER_WM"]."; ";
            if (isset($_POST["LMI_PAYMER_NUMBER"]) && strlen($_POST["LMI_PAYMER_NUMBER"])>0)
                $strPS_STATUS_MESSAGE .= "номер ВМ-карты - ".$_POST["LMI_PAYMER_NUMBER"]."; ";
            if (isset($_POST["LMI_PAYMER_EMAIL"]) && strlen($_POST["LMI_PAYMER_EMAIL"])>0)
                $strPS_STATUS_MESSAGE .= "paymer.com e-mail покупателя - ".$_POST["LMI_PAYMER_EMAIL"]."; ";
            if (isset($_POST["LMI_TELEPAT_PHONENUMBER"]) && strlen($_POST["LMI_TELEPAT_PHONENUMBER"])>0)
                $strPS_STATUS_MESSAGE .= "телефон покупателя - ".$_POST["LMI_TELEPAT_PHONENUMBER"]."; ";
            if (isset($_POST["LMI_TELEPAT_ORDERID"]) && strlen($_POST["LMI_TELEPAT_ORDERID"])>0)
                $strPS_STATUS_MESSAGE .= "платеж в Телепате - ".$_POST["LMI_TELEPAT_ORDERID"]."";

                
            $msg =$strPS_STATUS_DESCRIPTION . " " . $strPS_STATUS_MESSAGE;    
// делаем  чтото с оплатой открываем доступ узеру например...
// у меня это выдача лицензионного ключа.

        }
        
        $to      = '[email protected]'; // себе отчет на мыло...
        $subject = 'WM PAY';
        $message = $msg;
        $headers = 'From: [email protected]' . "\r\n" .
            'Reply-To: [email protected]' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

        mail($to, $subject, $message, $headers);
            
}


Форма оплаты 
Код

<?
$price= 2000; //цена
$order_id = 1; // ID заказа можно передовать от болды клиенту...
 ?>
<form action="https://merchant.webmoney.ru/lmi/payment.asp"  method="POST">
            <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="<?=$price?>">
            <input type="hidden" name="LMI_PAYMENT_DESC" value="Лицензионный ключ к продукту **** CMS standart">
            <input type="hidden" name="LMI_PAYMENT_DESC_BASE64" value="<?=base64_encode('Лицензионный ключ к продукту **** CMS standart')?>">

            <input type="hidden" name="LMI_PAYMENT_NO" value="<?=$order_id?>">
            <input type="hidden" name="LMI_PAYEE_PURSE" value="НОМЕР КОШЕЛЬКА КУДА ОТПРАВИТЬ ДЕНЬГИ">
            <input type="hidden" name="LMI_SIM_MODE" value="0">
            <input type="hidden" name="order_id" value="<?=$order_id?>">
            <input type="submit" name="submit" value="Оплатить">
        </form>


Для полноценной работы увас должен быть атестат продавца иначе нечего не получется это стоит всего 20-40$ долоров WMZ

Вся нужная дока есть https://merchant.webmoney.ru/conf/guide_simple.asp






Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)