Download Template Blogger Premium Gratis DOWNLOAD ❤

Pencarian Cepat 💡

Tutorial Program Cek Ongkos Kirim Dengan Menggunakan API RajaOngkir (Akun Pro)

Script Cek Ongkir RajaOngkir PHP

Pada artikel kali ini akan dijelaskan mengenai perhitungan ongkos kirim dengan menggunakan API RajaOngkir dengan akun tipe Pro. Perbedaan dengan akun starter sebelumnya adalah pada akun Pro ini terdapat fitur untuk melakukan perhitungan sampai dengan tingkat kecamatan. Tutorial perhitungan ongkos kirim dengan akun starter

Berikut ini merupakan penjelasan dari program yang sudah dibuat. Terdapat 2 file dalam folder ini yaitu cek_kecamatan.php dan rajaongkir.php. File utama atau index dari program ini adalah rajaongkir.php. File cek_kecamatan,php berisi kode ajax untuk mendapatkan daftar kecamatan dari suatu kota.

$api_key = "diisi dengan api key anda";

Baris ini diisi dengan api key pada akun Pro yang anda miliki.
   
    function get_city($key){
        $data = [
            'status' => false,
            'result' => []
        ]; 
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://pro.rajaongkir.com/api/city",
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "GET",
          CURLOPT_HTTPHEADER => array(
            "key: ".$key
          ),
        ));
        
        $response = curl_exec($curl);
        $err = curl_error($curl);
        
        curl_close($curl);
        
        if ($err) {
            $data['result'] = $err;
        } else {
            $result = json_decode($response, true);
            if ($result['rajaongkir']['status']['code'] == 200){
                $data['status'] = true;
                $data['result'] = $result['rajaongkir']['results'];
            } else {
                $data['result'] = $result['rajaongkir']['status']['description'];
            }
        }
        return $data;
    }

															

Baris kode diatas digunakan untuk mendapatkan seluruh daftar kota.

    function get_subdistrict($city_id, $key){
        $data = [
            'status' => false,
            'result' => []
        ]; 
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://pro.rajaongkir.com/api/subdistrict?city=".$city_id,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "GET",
          CURLOPT_HTTPHEADER => array(
            "key: ".$key
          ),
        ));
        
        $response = curl_exec($curl);
        $err = curl_error($curl);
        
        curl_close($curl);
        
        if ($err) {
            $data['result'] = $err;
        } else {
            $result = json_decode($response, true);
            if ($result['rajaongkir']['status']['code'] == 200){
                $data['status'] = true;
                $data['result'] = $result['rajaongkir']['results'];
            } else {
                $data['result'] = $result['rajaongkir']['status']['description'];
            }
        }
        return $data;
    }

															

Function di atas digunakan untuk mendapatkan daftar kecamatan. Dibutuhkan parameter id kota ($city_id) karena RajaOngkir tidak menyediakan API untuk mendapatkan seluruh daftar kecamatan secara langsung.

																
    function hitung_ongkir($kecamatan_asal, $kecamatan_tujuan, $kurir, $berat, $key){
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://pro.rajaongkir.com/api/cost",
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "POST",
          CURLOPT_POSTFIELDS => "origin=".$kecamatan_asal."&originType=subdistrict&destination=".$kecamatan_tujuan."&destinationType=subdistrict&weight=".$berat."&courier=".$kurir,
          CURLOPT_HTTPHEADER => array(
            "content-type: application/x-www-form-urlencoded",
            "key: ".$key
          ),
        ));
        
        $response = curl_exec($curl);
        $err = curl_error($curl);
        
        curl_close($curl);
        
        if ($err) {
            $data['result'] = $err;
        } else {
            $result = json_decode($response, true);
            if ($result['rajaongkir']['status']['code'] == 200){
                $data['status'] = true;
                $data['result'] = $result['rajaongkir']['results'][0];
            } else {
                $data['result'] = $result['rajaongkir']['status']['description'];
            }
        }
        return $data;
    }

															

Function di atas digunakan untuk melakukan perhitungan ongkos kirim dengan parameter kecamatan asal, kecamatan tujuan, kurir yang digunakan, berat, dan api key.


																
       <form method="GET">
            Kota Asal Pengiriman<br/>
            <select name="kota_asal" id="kota_asal">
                <?php
                    foreach ($city as $item):
                        echo "<option value='".$item['city_id']."'>".$item['type']." ".$item['city_name']."</option>";
                    endforeach;
                ?>
            </select>
            <br/><br/>
            Kecamatan Asal Pengiriman<br/>
            <select name="kecamatan_asal" id="kecamatan_asal">
            <?php
                $check = get_subdistrict($city[0]['city_id'],$api_key);
                if ($check['status']){
                    $subdistrict = $check['result'];
                    foreach ($subdistrict as $item):
                        echo "<option value='".$item['subdistrict_id']."'>".$item['subdistrict_name']."</option>";
                    endforeach;
                }
            ?>
            </select>
            <br/><br/><br/><br/>
            Kota Tujuan Pengiriman<br/>
            <select name="kota_tujuan" id="kota_tujuan">
                <?php
                    foreach ($city as $item):
                        echo "<option value='".$item['city_id']."'>".$item['type']." ".$item['city_name']."</option>";
                    endforeach;
                ?>
            </select>
            <br/><br/>
            Kecamatan Tujuan Pengiriman<br/>
            <select name="kecamatan_tujuan" id="kecamatan_tujuan">
            <?php
                $check = get_subdistrict($city[0]['city_id'],$api_key);
                if ($check['status']){
                    $subdistrict = $check['result'];
                    foreach ($subdistrict as $item):
                        echo "<option value='".$item['subdistrict_id']."'>".$item['subdistrict_name']."</option>";
                    endforeach;
                }
            ?>
            </select>
            <br/><br/><br/><br/>
            Kurir<br/>
            <select name="kurir">
                <option value="jne">JNE</option>
                <option value="pos">POS Indonesia</option>
                <option value="tiki">TIKI</option>
            </select>
            <br/><br/>
            Berat<br/>
            <input type=text name="berat" value=500> gram
            <br/><br/>
            <button type="submit">CEK Ongkir</button>
        </form>
															

Kode di atas untuk menampilkan form sederhana. Tampilan dari form dapat anda sesuaikan sendiri dengan kebutuhan program anda,


																
        if (isset($_GET['kota_asal'])){
            $kecamatan_asal = $_GET['kecamatan_asal'];
            $kecamatan_tujuan = $_GET['kecamatan_tujuan'];
            $kurir = $_GET['kurir'];
            $berat = $_GET['berat'];
            $ongkir = hitung_ongkir($kecamatan_asal,$kecamatan_tujuan,$kurir,$berat,$api_key);
            echo "<pre>";
            print_r($ongkir['result']);
            echo "</pre>";
        }

															

Bagian ini untuk melakukan perhitungan ongkos kirim saat melakukan submit form.


																
<script>
    $('#kota_asal').on('change', function(){
        var city_id = $(this).val();
        var key = "<?=$api_key;?>";
        $.ajax({
            type : 'POST',
            url : 'http://localhost/CekOngkirPro/cek_kecamatan.php',
            data :  {'city_id' : city_id, 'key' : key},
                success: function (data) {
                    $("#kecamatan_asal").html(data);
            }
        });        
    });


    $('#kota_tujuan').on('change', function(){
        var city_id = $(this).val();
        var key = "<?=$api_key;?>";
        $.ajax({
            type : 'POST',
            url : 'http://localhost/CekOngkirPro/cek_kecamatan.php',
            data :  {'city_id' : city_id, 'key' : key},
                success: function (data) {
                    $("#kecamatan_tujuan").html(data);
            }
        });        
    });
</script>

															

Javascript di atas digunakan untuk melakukan request ajax ke cek_kecamatan.php saat anda melakukan perubahan pada combobox daftar kota asal dan kota tujuan. Perhitungan ongkos kirim pada program ini menggunakan id kecamatan sebagai parameter asal dan tujuan nya.


																
         $data = [
            'status' => false,
            'result' => []
        ]; 
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://pro.rajaongkir.com/api/subdistrict?city=".$_POST['city_id'],
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "GET",
          CURLOPT_HTTPHEADER => array(
            "key: ".$_POST['key']
          ),
        ));
        
        $response = curl_exec($curl);
        $err = curl_error($curl);
        
        curl_close($curl);
        
        if ($err) {
            $data['result'] = $err;
        } else {
            $result = json_decode($response, true);
            if ($result['rajaongkir']['status']['code'] == 200){
                $data['status'] = true;
                $data['result'] = $result['rajaongkir']['results'];
            } else {
                $data['result'] = $result['rajaongkir']['status']['description'];
            }
        }
        
        if ($data['status']){
            $subdistrict = $data['result'];
            foreach ($subdistrict as $item):
                echo "<option value='".$item['subdistrict_id']."'>".$item['subdistrict_name']."</option>";
            endforeach;
        }

															


Bagian terakhir ini merupakan isi dari file cek_kecamatan.php. Kode tersebut digunakan untuk mendapatkan daftar kecamatan berdasarkan kota yang dipilih saat melakukan request ajax sebelumnya. Sama seperti program pada akun starter sebelumnya, contoh program pada akun pro ini juga akan melakukan request api setiap halaman ini diload. Jadi sebaiknya gunakan database untuk menyimpan semua daftar kota dan kecamatan sebelumnya, sehingga program akan melakukan request ajax daftar kecamatan dengan mengambil data melalui database bukan melalui api RajaOngkir. Demikianlah artikel Tutorial Program Cek Ongkos Kirim Dengan Menggunakan API RajaOngkir (Akun Pro). Selamat mencoba.

Posting Komentar

Berkomentarlah secara bijaksana dan bertanggung jawab. Komentar sepenuhnya menjadi tanggung jawab komentator seperti diatur dalam UU ITE.