Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- require '/assets/lib/vendor/autoload.php';
- require "ya_kassa.php";
- $m = new Memcached();
- $m->addServer('localhost', 11211);
- //print_r($m->getAllKeys());
- function cidr_match($ip, $range)
- {
- list ($subnet, $bits) = explode('/', $range);
- $ip = ip2long($ip);
- $subnet = ip2long($subnet);
- $mask = -1 << (32 - $bits);
- $subnet &= $mask;
- return ($ip & $mask) == $subnet;
- }
- if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
- $client = new IXR_Client('rpc.qipconnect.ru','/qcbackend.php', '80');
- if(!$user = $m->get($ip)) {
- if ($client->query('acp.whois', $ip)) {
- $user = $client->getResponse();
- $m->set($ip, $user, 600);
- } else {
- $user = false;
- }
- }
- $errors = false;
- $show_accept = false;
- if(isset($_POST['sentevent']))
- {
- if(!isset($_POST['contract'])) {
- $errors[] = "Не указан логин или номер договора";
- } else {
- if(!$form = $m->get($_POST['contract'])) {
- if ($client->query('billing.isvalidpayment', $_POST['contract'])) {
- $isValid = $client->getResponse();
- //print_r($isValid);
- if(!$isValid)
- $errors[] = "Введен не корректный логин или номер договора!";
- else {
- $form['login'] = $isValid['uname'];
- if(isset($isValid['v_addr'])) {
- $tmp = explode("-", $isValid['v_addr']);
- $form['addr'] = $tmp[0]."-***";
- }
- else
- $form['addr'] = '<Информация отсутствует>';
- }
- $m->set($_POST['contract'], $form, 600);
- } else {
- $errors[] = "Не удалось проверить правильность введенных данных, попробуйте через минут!";
- }
- }
- }
- if(!isset($_POST['summ'])) {
- $errors[] = "Не указанна сумма платежа";
- } else {
- $summ = trim($_POST['summ']);
- $summ = preg_replace( '/[^0-9]/', '', $summ );
- $summ = intval($summ);
- if($summ > 10000 || $summ < 10)
- {
- $errors[] = 'Введена не корректная сумма платежа';
- } else {
- $form['summ'] = $summ;
- }
- }
- if(!isset($_POST['phone'])) {
- $errors[] = "Не указан телефон для отправки чека";
- } else {
- $number = preg_replace('~[^0-9]+~','',$_POST['phone']);
- $phoneNumberUtil = \libphonenumber\PhoneNumberUtil::getInstance ();
- $validNumber = false;
- $validNumberForRegion = false;
- $possibleNumber = false;
- $isPossibleNumberWithReason = null;
- $geolocation = null;
- $phoneNumberToCarrierInfo = null;
- $timezone = null;
- $phoneNumber = $phoneNumberUtil->parse ( $number, 'RU', null, true );
- $possibleNumber = $phoneNumberUtil->isPossibleNumber ( $phoneNumber ); // bool
- // $isPossibleNumberWithReason = $phoneNumberUtil->isPossibleNumberWithReason($phoneNumber);
- // $validNumber = $phoneNumberUtil->isValidNumber($phoneNumber); //bool
- $validNumberForRegion = $phoneNumberUtil->isValidNumberForRegion ( $phoneNumber, 'RU' ); //
- $phoneNumberRegion = $phoneNumberUtil->getRegionCodeForNumber ( $phoneNumber );
- $phoneNumberType = $phoneNumberUtil->getNumberType ( $phoneNumber ); // 1 мобильный , 0 - городской
- if (! $validNumberForRegion)
- {
- $errors[] = "Номер для отправки чека указан не верно (ошибка региона)";
- }
- if ($phoneNumberType != 1)
- {
- $errors[] = "Указанный номер не является мобильным телефоном";
- }
- $n = $phoneNumber->getNationalNumber ();
- if (is_numeric ( $n ))
- {
- $form['number'] = $n;
- }
- else {
- $errors[] = "Не удалось распознать номер";
- }
- if(!isset($_POST['ptype'])) {
- $errors[] = "Не выбран способ оплаты!";
- } else {
- $tmp = explode(":", $_POST['ptype']);
- $form['ptype'] = $tmp[0];
- $form['ptype_name'] = $tmp[1];
- }
- //print_r($_POST);
- }
- if(!$errors)
- {
- $show_accept = true;
- }
- } else {
- }
- ?>
- <style>
- #client-data {
- width: 680px;
- height: 350px;
- border: 1px dotted;
- padding-left: 10px;
- padding-top: 5px;
- font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
- background-color: #e6e6e6;
- padding-top: 40px;
- }
- #client-data input, select {
- height: 25px;
- font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
- width: 250px;
- }
- #phone input {
- height: 25px;
- font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
- width: 245px;
- }
- .description {
- width: 700px;
- font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
- }
- .description p {
- font-size: 14px;
- }
- .legend {
- width: 290px;
- height: 50px;
- float: left;
- margin: 0 auto;
- padding-left: 8px;
- /*text-decoration: underline;
- font-style: oblique;*/
- font-weight: bold;
- }
- .payb_spaser {
- width: 290px;
- height: 20px;
- float: left;
- margin: 0 auto;
- padding-left: 8px;
- text-decoration: underline;
- }
- .pay_type_select {
- width: 290px;
- height: 30px;
- float: left;
- margin: 0 auto;
- padding-left: 8px;
- font-weight: bold;
- }
- .contract {
- width: 350px;
- height: 50px;
- float: left;
- padding-left: 20px;
- }
- .summ {
- width: 350px;
- height: 50px;
- float: left;
- padding-left: 20px;
- }
- .phone {
- width: 350px;
- height: 50px;
- float: left;
- padding-left: 20px;
- }
- .paybutton {
- width: 350px;
- height: 50px;
- float: left;
- padding-left: 20px;
- }
- #paybutton_с input {
- width: 200px;
- height: 30px;
- margin-top: 10px;
- margin-bottom: 10px;
- margin-left: 0.8em;
- }
- .ptype_block {
- margin-top: 15px;
- width: 100%;
- height: 30px;
- margin-top: 20px;
- float: left;
- }
- .payment_type {
- width: 350px;
- padding-left: 20px;
- float: left;
- }
- .helper {
- font-size: 11px;
- color:#666666;
- }
- .helper_phone {
- font-size: 11px;
- padding-left: 20px;
- width: 300px;
- float: left;
- color:#666666;
- }
- .spaser {
- width: 100%;
- height: 15px;
- float: left;
- }
- .error {
- width: 680px;
- color: red;
- border: 1px solid #FF0004;
- padding: 10px 5px 10px 5px;
- }
- .confirmation {
- width: 680px;
- border: 1px solid #0C7A00;
- padding: 10px 5px 10px 5px;
- padding-right: 15px;
- }
- .confirmation p{
- margin: 0.8em;
- }
- .pay_method {
- border:none;
- width:650px;
- }
- .ptype_images {
- float: left;
- /*padding-left: 23px;*/
- }
- </style>
- <?php //print_r($form); ?>
- <?php if($show_accept && !$errors): ?>
- <form action="<?=$configs['queryURL']?>" method="post">
- <h2>Давайте еще раз проверим введенные данные: </h2>
- <div class="confirmation">
- <p>
- Логин или номер договора: <b><?= $form['login']?></b><br/>
- Адрес подключения: <b><?=$form['addr']?></b><br/>
- Сумма к оплате: <b><?= $form['summ']?> руб</b><br/>
- Телефон для уведомления о платеже: <b>+7<?= $form['number']?></b><br/>
- Как произвести оплату: <b><?=$form['ptype_name']?></b><br/>
- </p>
- <input name="shopId" value="<?=$configs['shopId']?>" type="hidden"/>
- <input name="scid" value="<?=$configs['scId']?>" type="hidden"/>
- <input name="sum" value="<?= $form['summ']?>" type="hidden">
- <input name="customerNumber" value="<?= $form['login']?>" type="hidden"/>
- <input name="paymentType" value="<?=$form['ptype']?>" type="hidden"/>
- <?php if($form['ptype'] != 'SB'): ?>
- <input name="cps_phone" value="+7<?= $form['number']?>" type="hidden"/>
- <?php endif;?>
- <input name="ym_merchant_receipt" value='{"customerContact":
- "+7<?= $form['number']?>", "items": [{"quantity": 1,"price":
- {"amount": <?= $form['summ']?>},"tax": 1,"text": "Доступ в интернет"}]}' type="hidden"/>
- <div id="paybutton_с"><input type="submit" value="Все верно, оплатить"></div>
- </div>
- </form>
- <?php endif;?>
- <?php if($errors): ?>
- <div class="error">
- <ul>
- <? foreach ($errors as $error): ?>
- <li><?= $error ?></li>
- <? endforeach; ?>
- </ul>
- </div>
- <?php endif;?>
- <?php if(!$show_accept): ?>
- <h3>Оплатить онлайн через платежную систему или банковской картой</h3>
- <form action="#" method="post">
- <!-- <div class="description"><p>Разовое пополнение счета банковской картой. Для пополнения счета привязывать банковскую карту не обязательно. Пополнение счета происходит сразу после оплаты. Сумма платежа от 10 до 15000 рублей. Без комиссии.</p></div> -->
- <div id="client-data" >
- <div class="legend">Логин или номер договора</div ><div class="contract"><input type="text" name="contract" value="<?php if(isset($user['login']) && !$errors): echo $user['login']; endif;?>" required><div class="helper"><?php if(isset($user['login']) && !$errors): ?>*Определено автоматически<?php else:?>например: 0000001<?php endif;?></div></div>
- <div class="spaser"></div>
- <div class="legend">Сумма к оплате</div><div class="summ"><input type="text" name="summ" value="<?php if(isset($user['allprice']) && !$errors): echo $user['allprice']; endif;?>" required><div class="helper" >от 10 до 10000</div></div>
- <div class="spaser"></div>
- <div class="legend">Телефон на который отправить чек</div><div id="phone" >
- +7 <input type="text" placeholder="918 000 00 00" name="phone" required class="phone_input">
- <div class="helper_phone">В формате без 8-ки, например 9181112233</div>
- </div>
- <!-- <div class="spaser"></div>
- <div class="spaser"></div> -->
- <div class="ptype_block">
- <div class="pay_type_select">Способ оплаты</div><div class="payment_type">
- <select name="ptype" required>
- <option disabled value='' selected>Выберите способ оплаты</option>
- <option value="AC:Банковской картой">Банковской картой</option>
- <option value="SB:Сбербанк Онлайн">Сбербанк Онлайн</option>
- <option value="PC:Яндекс.Деньги">Яндекс.Деньги</option>
- <option value="QW:Qiwi кошелек">Qiwi кошелек</option>
- <option value="WM:WebMoney">WebMoney</option>
- <option value="AB:Альфа-Клик">Альфа-Клик</option>
- <option value="PB:Промсвязьбанк">Интернет-банк Промсвязьбанка</option>
- </select>
- </div>
- </div>
- <div class="legend"></div><div class="ptype_images">
- <img src="/images/pay/visa_mastercard_75.png" width="75" height="18">
- <img src="/images/pay/sb_online_75.png" width="75" height="21">
- <img src="/images/pay/yandex.dengi_horizontal_rgb-01.png" width="75" height="21"> и другие...</div>
- <div class="payb_spaser"></div>
- <div class="paybutton"><input type="submit" value="Оплатить →">
- </div>
- </div>
- <input type="hidden" value="true" name="sentevent">
- </form>
- <table class="pay_method">
- <tr>
- <td colspan="4" style="height:30px; font-weight:bold;"></td>
- </tr>
- <tr>
- <td colspan="4" style="height:50px; font-weight:bold;">Терминалы самообслуживания и банки</td>
- </tr>
- <tr>
- <td style="width:191px; height:105px; "><a href="/pay/comepay"><img src="/images/pay_comepay.png"></a></td>
- <td style="width:191px; height:105px; "><a href="http://vdonsk.ru/pay/qiwi"><img src="/images/pay_qiwi.png"></a></td>
- <td style="width:191px; height:105px; "><a href="/pay/sberbank_online"><img src="/images/pay_sberbank.png"></a></td>
- <td></td>
- </tr>
- <tr>
- <td colspan="4" style="height:50px; font-weight:bold;">Оплатить в офисе</td>
- </tr>
- <tr>
- <td style="width:191px; height:105px; "><a href="/pay/office"><img src="/images/pay_office_button.png"></a></td>
- <td style="width:191px; height:105px; "><a href="/pay/card"><img src="/images/pay_card.png"></a></td>
- <td></td>
- <td></td>
- </tr>
- </table>
- <?php endif;?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement