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


Sesuai dengan deskripsi di webnya, RajaOngkir merupakan sebuah situs dan web service (API) yang menyediakan informasi ongkos kirim dari berbagai kurir di Indonesia seperti POS Indonesia, JNE, TIKI, PCP, ESL, dan RPX. Dalam artikel ini akan diberikan tutorial pembuatan program PHP untuk melakukan pengecekan ongkos kirim. Saat ini RajaOngkir memiliki 3 tipe akun, yaitu Starter, Basic, dan Pro. Perbedaan dari ketiga macam akun tersebut dapat dilihat pada gambar di bawah ini.

Tipe Akun RajaOngkir

Sesuai dengan judul, pada artikel kali ini akan diberikan contoh program menghitung ongkos kirim dengan menggunakan akun Starter. Kekurangan dari akun ini adalah tidak memiliki fasilitas untuk melakukan perhitungan sampai tingkat kecamatan. Jadi perhitungan hanya menggunakan nama kota / kabupaten sebagai asal dan tujuannya. Yang pertama kali perlu dilakukan adalah melakukan pendaftaran dan dapatkan api key seperti gambar di bawah ini.

API Key RajaOngkir
Program yang sudah jadi dapat di download melalui link berikut ini https://github.com/Ozkadon/CekOngkirStarter. Berikut ini merupakan penjelasan dari program yang sudah dibuat.

$api_key = "diisi dengan api key anda";

Isilah baris berikut dengan api key dari akun starter anda seperti yang telah dijelaskan sebelumnya.


function get_city($key){
        $data = [
            'status' => false,
            'result' => []
        ]; 
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://api.rajaongkir.com/starter/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;
    }

Function di atas berfungsi untuk mendapatkan daftar kota sesuai dengan API dari RajaOngkir. Contoh di sini menggunakan kota karena keterbatasan akun starter yang tidak memiliki fitur perhitungan ongkos kirim sampai tingkat kecamatan.



    function hitung_ongkir($kota_asal, $kota_tujuan, $kurir, $berat, $key){
        $curl = curl_init();
        curl_setopt_array($curl, array(
          CURLOPT_URL => "https://api.rajaongkir.com/starter/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=".$kota_asal."&destination=".$kota_tujuan."&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 ongkir dengan parameter id kota asal, id kota tujuan, jenis kuris, berat kiriman, dan api key.


       <form method="GET">
            Kota Asal Pengiriman<br/>
            <select name="kota_asal">
                <?php
                    foreach ($city as $item):
                        echo "<option value='".$item['city_id']."'>".$item['type']." ".$item['city_name']."</option>";
                    endforeach;
                ?>
            </select>
            <br/><br/>
            Kota Tujuan Pengiriman<br/>
            <select name="kota_tujuan">
                <?php
                    foreach ($city as $item):
                        echo "<option value='".$item['city_id']."'>".$item['type']." ".$item['city_name']."</option>";
                    endforeach;
                ?>
            </select>
            <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 hanyalah form tampilan berupa pilihan kota asal, kota tujuan, jenis kurir dan berat kiriman. Tampilan form contoh di sini sangat sederhana. Anda dapat mengubah nya sesuai dengan kebutuhan dari program yang anda buat nantinya.


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

Setelah membuat tampilan form, langkah berikutnya adalah melakukan proses perhitungan ongkos kirim saat form tersebut di submit seperti contoh kode di atas. Hasil yang ditampilkan di sini berupa array dan ditampilkan apa adanya hanya sebagai contoh nilai.

Contoh program di sini melakukan request daftar kota setiap halaman tersebut dimuat. Sebaiknya dalam penggunaan nyata nantinya, daftar kota ini bisa dimasukkan ke dalam tabel di database anda sehingga tidak perlu melakukan request API terus menerus. Request API hanya dilakukan saat melakukan perhitungan ongkos kirim saja nantinya. Demikianlah artikel Tutorial Program Cek Ongkos Kirim Dengan Menggunakan API RajaOngkir (Akun Starter) ini. Untuk perhitungan oskos kirim tingkat kecamatan akan dijelaskan pada artikel selanjutnya. Selamat mencoba.



Tutorial Program Cek Ongkos Kirim Dengan Menggunakan API RajaOngkir (Akun Starter) Tutorial Program Cek Ongkos Kirim Dengan Menggunakan API RajaOngkir (Akun Starter) Reviewed by Donny Winarto on June 12, 2018 Rating: 5

4 comments:

  1. Kalau untuk mendapatkan dari propinsi gmna gan ?

    ReplyDelete
    Replies
    1. Untuk lengkapnya ada di sini gan https://rajaongkir.com/dokumentasi/starter.
      Untuk dapatkan propinsi url nya yg CURLOPT_URL => "https://api.rajaongkir.com/starter/city" diganti sama "https://api.rajaongkir.com/starter/province". Kalau untuk cek ongkirnya sendiri setau saya cuma bisa dari kota ke kota

      Delete
  2. klo untuk javascript saja bisa kah?. selain PHP soalnya mau dibuat di blogger.

    ReplyDelete
    Replies
    1. https://rajaongkir.com/dokumentasi/starter

      Kalau dari dokumentasi nya ga ada cara untuk javascriptnya

      Delete

Powered by Blogger.