Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.50 KB | None | 0 0
  1. <?
  2.  
  3. require '/assets/lib/vendor/autoload.php';
  4. require "ya_kassa.php";
  5.  
  6. $m = new Memcached();
  7. $m->addServer('localhost', 11211);
  8. //print_r($m->getAllKeys());
  9.  
  10. function cidr_match($ip, $range)
  11. {
  12. list ($subnet, $bits) = explode('/', $range);
  13. $ip = ip2long($ip);
  14. $subnet = ip2long($subnet);
  15. $mask = -1 << (32 - $bits);
  16. $subnet &= $mask;
  17. return ($ip & $mask) == $subnet;
  18. }
  19.  
  20. if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  21. $ip = $_SERVER['HTTP_CLIENT_IP'];
  22. } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  23. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  24. } else {
  25. $ip = $_SERVER['REMOTE_ADDR'];
  26. }
  27.  
  28. $client = new IXR_Client('rpc.qipconnect.ru','/qcbackend.php', '80');
  29.  
  30. if(!$user = $m->get($ip)) {
  31. if ($client->query('acp.whois', $ip)) {
  32. $user = $client->getResponse();
  33. $m->set($ip, $user, 600);
  34. } else {
  35. $user = false;
  36. }
  37. }
  38.  
  39. $errors = false;
  40. $show_accept = false;
  41. if(isset($_POST['sentevent']))
  42. {
  43. if(!isset($_POST['contract'])) {
  44. $errors[] = "Не указан логин или номер договора";
  45. } else {
  46.  
  47. if(!$form = $m->get($_POST['contract'])) {
  48. if ($client->query('billing.isvalidpayment', $_POST['contract'])) {
  49. $isValid = $client->getResponse();
  50. //print_r($isValid);
  51. if(!$isValid)
  52. $errors[] = "Введен не корректный логин или номер договора!";
  53. else {
  54. $form['login'] = $isValid['uname'];
  55. if(isset($isValid['v_addr'])) {
  56. $tmp = explode("-", $isValid['v_addr']);
  57. $form['addr'] = $tmp[0]."-***";
  58. }
  59. else
  60. $form['addr'] = '<Информация отсутствует>';
  61.  
  62. }
  63. $m->set($_POST['contract'], $form, 600);
  64.  
  65. } else {
  66. $errors[] = "Не удалось проверить правильность введенных данных, попробуйте через минут!";
  67. }
  68. }
  69. }
  70.  
  71. if(!isset($_POST['summ'])) {
  72. $errors[] = "Не указанна сумма платежа";
  73. } else {
  74.  
  75. $summ = trim($_POST['summ']);
  76. $summ = preg_replace( '/[^0-9]/', '', $summ );
  77. $summ = intval($summ);
  78. if($summ > 10000 || $summ < 10)
  79. {
  80. $errors[] = 'Введена не корректная сумма платежа';
  81. } else {
  82. $form['summ'] = $summ;
  83. }
  84. }
  85.  
  86. if(!isset($_POST['phone'])) {
  87. $errors[] = "Не указан телефон для отправки чека";
  88. } else {
  89.  
  90.  
  91. $number = preg_replace('~[^0-9]+~','',$_POST['phone']);
  92. $phoneNumberUtil = \libphonenumber\PhoneNumberUtil::getInstance ();
  93. $validNumber = false;
  94. $validNumberForRegion = false;
  95. $possibleNumber = false;
  96. $isPossibleNumberWithReason = null;
  97. $geolocation = null;
  98. $phoneNumberToCarrierInfo = null;
  99. $timezone = null;
  100.  
  101. $phoneNumber = $phoneNumberUtil->parse ( $number, 'RU', null, true );
  102. $possibleNumber = $phoneNumberUtil->isPossibleNumber ( $phoneNumber ); // bool
  103. // $isPossibleNumberWithReason = $phoneNumberUtil->isPossibleNumberWithReason($phoneNumber);
  104. // $validNumber = $phoneNumberUtil->isValidNumber($phoneNumber); //bool
  105. $validNumberForRegion = $phoneNumberUtil->isValidNumberForRegion ( $phoneNumber, 'RU' ); //
  106. $phoneNumberRegion = $phoneNumberUtil->getRegionCodeForNumber ( $phoneNumber );
  107. $phoneNumberType = $phoneNumberUtil->getNumberType ( $phoneNumber ); // 1 мобильный , 0 - городской
  108.  
  109. if (! $validNumberForRegion)
  110. {
  111. $errors[] = "Номер для отправки чека указан не верно (ошибка региона)";
  112. }
  113.  
  114. if ($phoneNumberType != 1)
  115. {
  116. $errors[] = "Указанный номер не является мобильным телефоном";
  117. }
  118.  
  119. $n = $phoneNumber->getNationalNumber ();
  120. if (is_numeric ( $n ))
  121. {
  122. $form['number'] = $n;
  123. }
  124. else {
  125. $errors[] = "Не удалось распознать номер";
  126. }
  127.  
  128. if(!isset($_POST['ptype'])) {
  129. $errors[] = "Не выбран способ оплаты!";
  130. } else {
  131.  
  132. $tmp = explode(":", $_POST['ptype']);
  133. $form['ptype'] = $tmp[0];
  134. $form['ptype_name'] = $tmp[1];
  135. }
  136. //print_r($_POST);
  137. }
  138.  
  139. if(!$errors)
  140. {
  141. $show_accept = true;
  142. }
  143.  
  144. } else {
  145.  
  146. }
  147.  
  148. ?>
  149.  
  150. <style>
  151. #client-data {
  152. width: 680px;
  153. height: 350px;
  154. border: 1px dotted;
  155. padding-left: 10px;
  156. padding-top: 5px;
  157. font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  158. background-color: #e6e6e6;
  159. padding-top: 40px;
  160. }
  161. #client-data input, select {
  162. height: 25px;
  163. font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  164. width: 250px;
  165. }
  166. #phone input {
  167. height: 25px;
  168. font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  169. width: 245px;
  170. }
  171. .description {
  172. width: 700px;
  173. font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  174. }
  175. .description p {
  176. font-size: 14px;
  177. }
  178. .legend {
  179. width: 290px;
  180. height: 50px;
  181. float: left;
  182. margin: 0 auto;
  183. padding-left: 8px;
  184. /*text-decoration: underline;
  185. font-style: oblique;*/
  186. font-weight: bold;
  187.  
  188. }
  189. .payb_spaser {
  190. width: 290px;
  191. height: 20px;
  192. float: left;
  193. margin: 0 auto;
  194. padding-left: 8px;
  195. text-decoration: underline;
  196.  
  197. }
  198. .pay_type_select {
  199. width: 290px;
  200. height: 30px;
  201. float: left;
  202. margin: 0 auto;
  203. padding-left: 8px;
  204. font-weight: bold;
  205.  
  206. }
  207. .contract {
  208. width: 350px;
  209. height: 50px;
  210. float: left;
  211. padding-left: 20px;
  212.  
  213. }
  214. .summ {
  215. width: 350px;
  216. height: 50px;
  217. float: left;
  218. padding-left: 20px;
  219. }
  220. .phone {
  221. width: 350px;
  222. height: 50px;
  223. float: left;
  224. padding-left: 20px;
  225. }
  226. .paybutton {
  227. width: 350px;
  228. height: 50px;
  229. float: left;
  230. padding-left: 20px;
  231. }
  232. #paybutton_с input {
  233. width: 200px;
  234. height: 30px;
  235. margin-top: 10px;
  236. margin-bottom: 10px;
  237. margin-left: 0.8em;
  238. }
  239. .ptype_block {
  240. margin-top: 15px;
  241. width: 100%;
  242. height: 30px;
  243. margin-top: 20px;
  244. float: left;
  245. }
  246. .payment_type {
  247. width: 350px;
  248. padding-left: 20px;
  249. float: left;
  250. }
  251. .helper {
  252. font-size: 11px;
  253. color:#666666;
  254. }
  255. .helper_phone {
  256. font-size: 11px;
  257. padding-left: 20px;
  258. width: 300px;
  259. float: left;
  260. color:#666666;
  261. }
  262. .spaser {
  263. width: 100%;
  264. height: 15px;
  265. float: left;
  266. }
  267. .error {
  268. width: 680px;
  269. color: red;
  270. border: 1px solid #FF0004;
  271. padding: 10px 5px 10px 5px;
  272. }
  273. .confirmation {
  274. width: 680px;
  275. border: 1px solid #0C7A00;
  276. padding: 10px 5px 10px 5px;
  277. padding-right: 15px;
  278.  
  279. }
  280. .confirmation p{
  281. margin: 0.8em;
  282.  
  283. }
  284. .pay_method {
  285. border:none;
  286. width:650px;
  287. }
  288. .ptype_images {
  289. float: left;
  290. /*padding-left: 23px;*/
  291. }
  292. </style>
  293. <?php //print_r($form); ?>
  294. <?php if($show_accept && !$errors): ?>
  295. <form action="<?=$configs['queryURL']?>" method="post">
  296. <h2>Давайте еще раз проверим введенные данные: </h2>
  297. <div class="confirmation">
  298. <p>
  299. Логин или номер договора: <b><?= $form['login']?></b><br/>
  300. Адрес подключения: <b><?=$form['addr']?></b><br/>
  301. Сумма к оплате: <b><?= $form['summ']?> руб</b><br/>
  302. Телефон для уведомления о платеже: <b>+7<?= $form['number']?></b><br/>
  303. Как произвести оплату: <b><?=$form['ptype_name']?></b><br/>
  304. </p>
  305.  
  306. <input name="shopId" value="<?=$configs['shopId']?>" type="hidden"/>
  307. <input name="scid" value="<?=$configs['scId']?>" type="hidden"/>
  308. <input name="sum" value="<?= $form['summ']?>" type="hidden">
  309. <input name="customerNumber" value="<?= $form['login']?>" type="hidden"/>
  310. <input name="paymentType" value="<?=$form['ptype']?>" type="hidden"/>
  311. <?php if($form['ptype'] != 'SB'): ?>
  312. <input name="cps_phone" value="+7<?= $form['number']?>" type="hidden"/>
  313. <?php endif;?>
  314. <input name="ym_merchant_receipt" value='{"customerContact":
  315. "+7<?= $form['number']?>", "items": [{"quantity": 1,"price":
  316. {"amount": <?= $form['summ']?>},"tax": 1,"text": "Доступ в интернет"}]}' type="hidden"/>
  317.  
  318. <div id="paybutton_с"><input type="submit" value="Все верно, оплатить"></div>
  319. </div>
  320. </form>
  321. <?php endif;?>
  322.  
  323. <?php if($errors): ?>
  324. <div class="error">
  325. <ul>
  326. <? foreach ($errors as $error): ?>
  327. <li><?= $error ?></li>
  328. <? endforeach; ?>
  329. </ul>
  330. </div>
  331. <?php endif;?>
  332.  
  333. <?php if(!$show_accept): ?>
  334. <h3>Оплатить онлайн через платежную систему или банковской картой</h3>
  335. <form action="#" method="post">
  336. <!-- <div class="description"><p>Разовое пополнение счета банковской картой. Для пополнения счета привязывать банковскую карту не обязательно. Пополнение счета происходит сразу после оплаты. Сумма платежа от 10 до 15000 рублей. Без комиссии.</p></div> -->
  337. <div id="client-data" >
  338. <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>
  339. <div class="spaser"></div>
  340. <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>
  341. <div class="spaser"></div>
  342. <div class="legend">Телефон на который отправить чек</div><div id="phone" >
  343. +7 <input type="text" placeholder="918 000 00 00" name="phone" required class="phone_input">
  344. <div class="helper_phone">В формате без 8-ки, например 9181112233</div>
  345. </div>
  346. <!-- <div class="spaser"></div>
  347. <div class="spaser"></div> -->
  348. <div class="ptype_block">
  349. <div class="pay_type_select">Способ оплаты</div><div class="payment_type">
  350. <select name="ptype" required>
  351. <option disabled value='' selected>Выберите способ оплаты</option>
  352. <option value="AC:Банковской картой">Банковской картой</option>
  353. <option value="SB:Сбербанк Онлайн">Сбербанк Онлайн</option>
  354. <option value="PC:Яндекс.Деньги">Яндекс.Деньги</option>
  355. <option value="QW:Qiwi кошелек">Qiwi кошелек</option>
  356. <option value="WM:WebMoney">WebMoney</option>
  357. <option value="AB:Альфа-Клик">Альфа-Клик</option>
  358. <option value="PB:Промсвязьбанк">Интернет-банк Промсвязьбанка</option>
  359. </select>
  360. </div>
  361. </div>
  362. <div class="legend"></div><div class="ptype_images">
  363. <img src="/images/pay/visa_mastercard_75.png" width="75" height="18">
  364. <img src="/images/pay/sb_online_75.png" width="75" height="21">
  365. <img src="/images/pay/yandex.dengi_horizontal_rgb-01.png" width="75" height="21"> и другие...</div>
  366. <div class="payb_spaser"></div>
  367. <div class="paybutton"><input type="submit" value="Оплатить &rarr;">
  368. </div>
  369. </div>
  370. <input type="hidden" value="true" name="sentevent">
  371. </form>
  372.  
  373. <table class="pay_method">
  374.  
  375. <tr>
  376. <td colspan="4" style="height:30px; font-weight:bold;"></td>
  377. </tr>
  378.  
  379. <tr>
  380. <td colspan="4" style="height:50px; font-weight:bold;">Терминалы самообслуживания и банки</td>
  381. </tr>
  382.  
  383. <tr>
  384. <td style="width:191px; height:105px; "><a href="/pay/comepay"><img src="/images/pay_comepay.png"></a></td>
  385. <td style="width:191px; height:105px; "><a href="http://vdonsk.ru/pay/qiwi"><img src="/images/pay_qiwi.png"></a></td>
  386. <td style="width:191px; height:105px; "><a href="/pay/sberbank_online"><img src="/images/pay_sberbank.png"></a></td>
  387. <td></td>
  388. </tr>
  389.  
  390. <tr>
  391. <td colspan="4" style="height:50px; font-weight:bold;">Оплатить в офисе</td>
  392. </tr>
  393.  
  394. <tr>
  395. <td style="width:191px; height:105px; "><a href="/pay/office"><img src="/images/pay_office_button.png"></a></td>
  396. <td style="width:191px; height:105px; "><a href="/pay/card"><img src="/images/pay_card.png"></a></td>
  397. <td></td>
  398. <td></td>
  399. </tr>
  400.  
  401. </table>
  402.  
  403.  
  404. <?php endif;?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement