diamondpedia

Contoh Transaksi PULSA

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