diamondpedia

d

Nov 24th, 2019
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.17 KB | None | 0 0
  1. <?php
  2. session_start();
  3. require("../mainconfig.php");
  4. $page_type = "Buat Pesanan";
  5.  
  6. if (isset($_SESSION['user'])) {
  7.     $sess_username = $_SESSION['user']['username'];
  8.     $check_user = $db->query("SELECT * FROM users WHERE username = '$sess_username'");
  9.     $data_user = $check_user->fetch_array(MYSQLI_ASSOC);
  10.     if ($check_user->num_rows == 0) {
  11.         header("Location: ".$site_config['base_url']."user/logout");
  12.     } else if ($data_user['status'] == "Suspended") {
  13.         header("Location: ".$site_config['base_url']."user/logout");
  14.     }
  15.  
  16.     include("../lib/header.php");
  17.     $msg_type = "nothing";
  18.  
  19.     if (isset($_POST['order'])) {
  20.         $post_service = $db->real_escape_string(stripslashes(strip_tags(htmlspecialchars($_POST['service'], ENT_QUOTES))));
  21.         $post_phone = $db->real_escape_string(stripslashes(strip_tags(htmlspecialchars($_POST['phone'], ENT_QUOTES))));
  22.  
  23.         $check_service = $db->query("SELECT * FROM services_pulsa WHERE sid = '$post_service' AND status = 'Active'");
  24.         $data_service = $check_service->fetch_array(MYSQLI_ASSOC);
  25.  
  26.         $price = $data_service['price'];
  27.         $service = $data_service['service'];
  28.         $provider = $data_service['provider'];
  29.         $pid = $data_service['pid'];
  30.         $post_category = $data_service['category'];
  31.        
  32.         $check_orders = $db->query("SELECT * FROM orders_pulsa WHERE user = '$sess_username' AND service = '$service' AND date = '$date'");
  33.         $data_orders = $check_orders->fetch_array(MYSQLI_ASSOC);
  34.         $count_orders = $check_orders->num_rows;
  35.  
  36.         $check_provider = $db->query("SELECT * FROM provider WHERE code = '$provider'");
  37.         $data_provider = $check_provider->fetch_array(MYSQLI_ASSOC);
  38.        
  39.         if (empty($post_service) || empty($post_phone)) {
  40.             $msg_type = "error";
  41.             $msg_content = "<b>Gagal!</b> Mohon mengisi input.";
  42.         } else if (mysqli_num_rows($check_service) == 0) {
  43.             $msg_type = "error";
  44.             $msg_content = "<b>Gagal!</b> Layanan tidak ditemukan.";
  45.         } else if ($data_user['balance'] < $price) {
  46.             $msg_type = "error";
  47.             $msg_content = "<b>Gagal!</b> Saldo Anda tidak mencukupi untuk melakukan pembelian ini.";
  48.         } else {
  49.  
  50.             $api_link = $data_provider['link'];
  51.             $api_key = $data_provider['api_key'];
  52.  
  53.             $random_trxid = random_number(1).random_number(2);
  54.             $poid = $random_trxid;         
  55.             $oid = random_number(7);
  56.            
  57.             if ($data_service['category'] == "PLN") {
  58.                 $post_listrik = $db->real_escape_string(stripslashes(strip_tags(htmlspecialchars($_POST['no_listrik'], ENT_QUOTES))));
  59.            
  60.                 $data = array(
  61.                 'inquiry' => 'PLN', // konstan
  62.                 'code' => $pid, // kode produk
  63.                 'phone' => $post_phone, // nohp pembeli
  64.                 'idcust' => $post_listrik, // nomor meter atau id pln
  65.                 'trxid_api' => $random_trxid, // Trxid / Reffid dari sisi client
  66.                 'no' => $count_orders+1, // untuk isi lebih dari 1x dlm sehari, isi urutan 2,3,4,dst
  67.                 );
  68.            
  69.             } else if ($data_service['category'] !== "PLN") {
  70.                 $data = array(
  71.                 'inquiry' => 'I', // konstan
  72.                 'code' => $pid, // kode produk
  73.                 'phone' => $post_phone, // nohp pembeli
  74.                 'trxid_api' => $random_trxid, // Trxid / Reffid dari sisi client
  75.                 'no' => $count_orders+1, // untuk isi lebih dari 1x dlm sehari, isi urutan 1,2,3,4,dst
  76.                 );
  77.                
  78.             } else {
  79.                 die("System error!");
  80.             }
  81.            
  82.             if ($provider == "MANUAL") {
  83.                 $api_postdata = "";
  84.                 $poid = $oid;
  85.  
  86.             } else if ($provider == "PORTALPULSA") {
  87.                 $url = 'https://portalpulsa.com/api/connect/';
  88.                 $header = array(
  89.                     'portal-userid: P95132',
  90.                     'portal-key: d4044dc3992b037d625f00d5729ac574', // lihat hasil autogenerate di member area
  91.                     'portal-secret: 49e6dc118fc9992efb784abad34a764a4466079b7d3b2ff11b39e17b8a927123', // lihat hasil autogenerate di member area
  92.                     );
  93.                 $ch = curl_init();
  94.                 curl_setopt($ch, CURLOPT_URL, $url);
  95.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  96.                 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  97.                 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  98.                 curl_setopt($ch, CURLOPT_POST, 1);
  99.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  100.                 $result = curl_exec($ch);
  101.                 $order_data = json_decode($result, true);
  102.                 $message = $order_data['message'];
  103.  
  104.             } else if ($provider == "DPEDIA") {
  105.                 $order_postdata = "api_key=$api_key&service=$pid&phone=$post_phone&phone2=$post_phone2";
  106.                 $ch = curl_init();
  107.                 curl_setopt($ch, CURLOPT_URL, "https://serverh2h.net/order/pulsa");
  108.                 curl_setopt($ch, CURLOPT_POST, 1);
  109.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $order_postdata);
  110.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  111.                 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  112.                 $chresult = curl_exec($ch);
  113.                 curl_close($ch);
  114.                 $order_data = json_decode($chresult, true);
  115.                 $poid = $order_data['code_trx'];
  116.                 $error = $order_data['error'];
  117.                 $message = $order_data['error'];    
  118.  
  119.             } else {
  120.                 die("System error!");
  121.             }
  122.            
  123.             if ($provider == "PORTALPULSA" AND $order_data['result'] == "failed") {
  124.                 error_log("Pesan : ".$order_data['message']);
  125.                 $msg_type = "error";
  126.                 $msg_content = "<b>Gagal!</b> Silahkan Menghubungi Admin. (".$message.")";
  127.             } else if ($provider == "DPEDIA" AND $order_data['error'] == TRUE) {
  128.                 error_log("Pesan : ".$order_data['error']);
  129.                 $msg_type = "error";
  130.                 $msg_content = "<b>Gagal!</b> Silahkan Menghubungi Admin. (".$message.")";
  131.             } else {
  132.                 $update_user = $db->query("UPDATE users SET balance = balance-$price WHERE username = '$sess_username'");
  133.                 if ($update_user == TRUE) {
  134.                     $insert_order = $db->query("INSERT INTO orders_pulsa (oid, poid, user, service, link, price, status, date, provider, place_from) VALUES ('$oid', '$poid', '$sess_username', '$service', '$post_phone', '$price', 'Pending', '$date', '$provider', 'WEB')");
  135.                     $insert_order = mysqli_query($db, "INSERT INTO balance_history (username, type, category, quantity, message, date, time) VALUES ('$sess_username', 'Minus', 'Place Order', '$price', 'Membuat pesanan #$oid', '$date', '$time')");
  136.                     if ($insert_order == TRUE) {
  137.                         $msg_type = "success";
  138.                         $msg_content = "<b>Pesanan telah diterima.</b><br /><b>Layanan:</b> $service<br /><b>No. Telp:</b> $post_phone<br /><b>Biaya:</b> Rp ".number_format($price,0,',','.');
  139.                     } else {
  140.                         $msg_type = "error";
  141.                         $msg_content = "<b>Gagal:</b> Error system (2).";
  142.                     }
  143.                 } else {
  144.                     $msg_type = "error";
  145.                     $msg_content = "<b>Gagal:</b> Error system (1).";
  146.                 }
  147.             }
  148.         }
  149.     }
  150.    
  151.     $check_user = $db->query("SELECT * FROM users WHERE username = '$sess_username'");
  152.     $data_user = $check_user->fetch_array(MYSQLI_ASSOC);
  153. ?>
  154.         <div class="row">
  155.             <div class="offset-lg-3 col-lg-6">
  156.                 <div class="card-box">
  157.                     <ul class="nav nav-tabs tabs-bordered">
  158.                         <li class="nav-item">
  159.                             <a href="#order" data-toggle="tab" aria-expanded="false" class="nav-link active">
  160.                                 Buat Pesanan
  161.                             </a>
  162.                         </li>
  163.                         <li class="nav-item">
  164.                             <a href="#informasi" data-toggle="tab" aria-expanded="true" class="nav-link">
  165.                                 Informasi
  166.                             </a>
  167.                         </li>
  168.                     </ul>
  169.                     <div class="tab-content">
  170.                         <div class="tab-pane fade show active" id="charts-b1">
  171.                             <?php
  172.                             if ($msg_type == "success") {
  173.                             ?>
  174.                             <div class="alert alert-success alert-dismissable">
  175.                                 <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
  176.                                 <?php echo $msg_content; ?>
  177.                             </div>
  178.                             <?php
  179.                             } else if ($msg_type == "error") {
  180.                             ?>
  181.                         <div class="alert alert-danger alert-dismissable">
  182.                             <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
  183.                             <?php echo $msg_content; ?>
  184.                         </div>
  185.                         <?php
  186.                         }
  187.                         ?>
  188.                             <form role="form" method="POST">
  189.                                 <div class="row">
  190.                                     <div class="col-md-5">
  191.                                         <div class="form-group">
  192.                                             <label>Tipe<font color="red">*</font></label>
  193.                                             <select class="form-control" id="category">
  194.                                                 <option value="0">-- Pilih Tipe --</option>
  195.                                                 <option value="PULSA">Pulsa Isi Ulang</option>
  196.                                                 <option value="PKIN">Paket Internet</option>
  197.                                                 <option value="VGAME">Voucher Game</option>
  198.                                                 <option value="SALGO">Saldo E-Money</option>       
  199.                                                 <option value="PKSMS">Paket SMS & Telepon</option>
  200.                                                 <option value="PT">Pulsa Transfer</option>
  201.                                                 <option value="TOKENPLN">Token PLN</option>
  202.                                             </select>
  203.                                         </div>
  204.                                     </div>
  205.                                     <div class="col-md-7">
  206.                                         <div class="form-group">
  207.                                             <label>Kategori<font color="red">*</font></label>
  208.                                             <select class="form-control" name="provider" id="provider">
  209.                                                 <option value="0">-- Pilih Kategori --</option>
  210.                                             </select>
  211.                                         </div>
  212.                                     </div>
  213.                                 </div>
  214.                                 <div class="form-group">
  215.                                     <label>Layanan<font color="red">*</font></label>
  216.                                     <select class="form-control" name="service" id="service">
  217.                                         <option value="0">-- Pilih Layanan --</option>
  218.                                     </select>
  219.                                 </div>
  220.                                 <div class="row">
  221.                                     <div class="col-md-6">
  222.                                         <div class="form-group">
  223.                                             <label>Target<font color="red">*</font></label>
  224.                                             <div class="input-group">
  225.                                                 <div class="input-group-append">
  226.                                                     <span class="input-group-text">
  227.                                                         <i class="mdi mdi-phone"></i>
  228.                                                     </span>
  229.                                                 </div>
  230.                                                 <input type="text" name="phone" class="form-control" placeholder="No. Telp">
  231.                                             </div>
  232.                                         </div>
  233.                                     </div>
  234.                                     <div class="col-md-6">
  235.                                         <div class="form-group">
  236.                                             <label>Total Harga<font color="red">*</font></label>
  237.                                             <div class="input-group">
  238.                                                 <div class="input-group-append">
  239.                                                     <span class="input-group-text">
  240.                                                         Rp.
  241.                                                     </span>
  242.                                                 </div>
  243.                                                 <input type="number" class="form-control" id="rate" value="0" readonly>
  244.                                             </div>
  245.                                         </div>
  246.                                     </div>
  247.                                     <div class="col-md-12">
  248.                                         <div id="note"></div>
  249.                                         <div class="form-group pull-right">
  250.                                             <button type="submit" name="order" class="btn btn-square btn-primary"><i class="fa fa-check-circle"></i> Submit</button>
  251.                                             <button type="reset" class="btn btn-square btn-secondary"><i class="fa fa-refresh"></i> Ulangi</button>
  252.                                         </div>
  253.                                     </div>
  254.                                 </div>
  255.                             </form>
  256.                         </div>
  257.                         <div class="tab-pane fade" id="information-b1">
  258.                             Tata cara pengisian form pemesanan:
  259.                             <ul>
  260.                                 <li>Pilih salah satu tipe pada <b>Tipe</b>, lalu pilih <b>Kategori</b> yang sesuai, maka akan ditampilkan daftar layanan yang tersedia pada <b>Layanan</b>, silahkan pilih salah satu layanan.</li>
  261.                                 <li>Masukkan data berupa nomer handphone pada <b>Nomer Telepon</b> sesuai permintaan yang ditampilkan setelah memilih layanan.</li>
  262.                                 <li>Jika semua input sudah terisi dengan benar, klik <b>Kirim</b>. Pesanan akan diproses jika hasil yang ditampilkan setelah submit sukses.</li>
  263.                                 <li>Jika pesanan <i>stuck</i>/tidak berubah status dari pending, Anda dapat menghubungi Admin melalui tiket.</li>
  264.                             </ul>
  265.                             Tata cara mengisi input <b>Data</b> yang sesuai:
  266.                             <ul>
  267.                                 <li>Masukkan data berupa nomer handphone sesuai yang diminta.</li>
  268.                                 <li>jika terjadi kesalahan pengisian data oleh pengguna, harap segera hubungi admin.</li>
  269.                             </ul>
  270.                         </div>
  271.                     </div>
  272.                 </div>
  273.             </div>
  274. <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.js"></script>
  275. <script type="text/javascript">
  276. $(document).ready(function() {
  277.     $("#category").change(function() {
  278.         var category = $("#category").val();
  279.         $.ajax({
  280.             url: '<?php echo $site_config['base_url']; ?>inc/pulsa/check_provider.php',
  281.             data: 'category=' + category,
  282.             type: 'POST',
  283.             dataType: 'html',
  284.             success: function(msg) {
  285.                 $("#provider").html(msg);
  286.             }
  287.         });
  288.        
  289.         $.ajax({
  290.             url: '<?php echo $site_config['base_url']; ?>inc/pulsa/input_nolistrik.php',
  291.             data: 'category=' + category,
  292.             type: 'POST',
  293.             dataType: 'html',
  294.             success: function(msg) {
  295.                 $("#input_nolistrik").html(msg);
  296.             }
  297.         });
  298.        
  299.        
  300.     });
  301.    
  302.     $("#provider").change(function() {
  303.         var provider = $("#provider").val();
  304.         $.ajax({
  305.             url: '<?php echo $site_config['base_url']; ?>inc/pulsa/order_service.php',
  306.             data: 'provider=' + provider,
  307.             type: 'POST',
  308.             dataType: 'html',
  309.             success: function(msg) {
  310.                 $("#service").html(msg);
  311.             }
  312.         });
  313.     });
  314.    
  315.    
  316.    
  317.     $("#service").change(function() {
  318.         var service = $("#service").val();
  319.         $.ajax({
  320.             url: '<?php echo $site_config['base_url']; ?>inc/pulsa/order_note.php',
  321.             data: 'service=' + service,
  322.             type: 'POST',
  323.             dataType: 'html',
  324.             success: function(msg) {
  325.                 $("#note").html(msg);
  326.             }
  327.         });
  328.    
  329.    
  330.         $.ajax({
  331.             url: '<?php echo $site_config['base_url']; ?>inc/pulsa/order_rate.php',
  332.             data: 'service=' + service,
  333.             type: 'POST',
  334.             dataType: 'html',
  335.             success: function(msg) {
  336.                 $("#rate").val(msg);
  337.             }
  338.         });
  339.     });
  340. });
  341.  
  342.     </script>
  343. <?php
  344.     include("../lib/footer.php");
  345. } else {
  346.     header("Location: ".$site_config['base_url']);
  347. }
  348. ?>
Advertisement
Add Comment
Please, Sign In to add comment