Jasa Pembuatan Whatsapp Bot Click Disini

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.

Getting Info...

About the Author

Mungkin ketidaksempurnaan kita yang membuat kita begitu sempurna satu sama lain.Cinta adalah ruang dan waktu yang diukur oleh hati.Cinta terdiri dari satu jiwa yang menghuni dua tubuh.Kamu mungkin memegang tanganku untuk sementara waktu, tetapi kamu…

Post a Comment

Ngapain?
DoodStream - Upload videos share & make money
Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.