Tutorial Cek Ongkos Kirim Dengan Memanfaatkan API RajaOngkir

Halo sobat, ketemu lagi ūüôā

Setelah beberapa bulan blog ini kudet (kurang update) dikarenakan admin-adminya sibuk dengan urusan masing-masing dan pada akhirnya pada hari ini kembali lagi dengan niat untuk membagikan tutorial yang diharapkan bisa berguna bagi sobat sekalian.

Kali ini kami ingin membagikan Tutorial Cek Ongkos Kirim  dengan memanfaatkan API RajaOngkir.





Oke, penjelasan singkat apa itu RajaOngkir (bagi yg belum tau hehehe…) RajaOngkir adalah 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. Informasi lebih lanjut silahkan sobat telusuri melalui situs resminya disini http://rajaongkir.com.

 

 

RajaOngkir juga menyediakan RESTful API (Application Programming Interface),  fitur ini sangat berguna bagi sobat yang ingin membuat aplikasi yang membutuhkan Data Ongkos Kirim secara akurat dan realtime. Untuk dokumentasi APInya RajaOngkir sangat lengkap http://rajaongkir.com/dokumentasi

Sebelum memulai menggunakan API RajaOngkir kita diharuskan untuk registrasi terlebih dahulu, untuk registrasinya sangat mudah silahkan sobat registrasi terlebih dahulu http://rajaongkir.com/akun/daftar. Untuk tipe APInya ada 3 jenis, yaitu : Starter (Gratis), Basic (Berbayar), Pro (Berbayar) silahkan sobat sesuaikan dengan kebutuhan sobat.

Setelah daftar kita akan mendapatkan API Key, yang nantinya API Key ini akan menjadi kunci atau semacam penghubung aplikasi kita dengan API Raja Ongkir, untuk melihat API Key silahkan masuk ke Panel kemudian klik menu API Key.

 

Setelah API Key didapatkan kita langsung mencoba menggunakannya, untuk tutorial ini kami menggunakan API RajaOngkir yang Starter (Gratis), jadi fiturnya hanya terbatas, tapi jika sobat sudah memiliki API  RajaOngkir versi berbayar silahkan sobat sesuaikan.

Langsung saja.

Langkah pertama sobat buat tiga buah file PHP, rajaongkir.php, cek_kabupaten.php dan cek_ongkir.php.

Silahkan sobat buka file rajaongkir.php kemudian pastekan script dibawah ini :

<?php

	//Get Data Kabupaten
	$curl = curl_init();	
	curl_setopt_array($curl, array(
	  CURLOPT_URL => "http://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: diisi dengan api key milik sobat"
	  ),
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);

	curl_close($curl);

	echo "<label>Kota Asal</label><br>";
	echo "<select name='asal' id='asal'>";
	echo "<option>Pilih Kota Asal</option>";
		$data = json_decode($response, true);
		for ($i=0; $i < count($data['rajaongkir']['results']); $i++) { 
		    echo "<option value='".$data['rajaongkir']['results'][$i]['city_id']."'>".$data['rajaongkir']['results'][$i]['city_name']."</option>";
		}
	echo "</select><br><br><br>";
	//Get Data Kabupaten


	//-----------------------------------------------------------------------------

	//Get Data Provinsi
	$curl = curl_init();

	curl_setopt_array($curl, array(
	  CURLOPT_URL => "http://api.rajaongkir.com/starter/province",
	  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: diisi dengan api key milik sobat"
	  ),
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);

	echo "Provinsi Tujuan<br>";
	echo "<select name='provinsi' id='provinsi'>";
	echo "<option>Pilih Provinsi Tujuan</option>";
	$data = json_decode($response, true);
	for ($i=0; $i < count($data['rajaongkir']['results']); $i++) {
		echo "<option value='".$data['rajaongkir']['results'][$i]['province_id']."'>".$data['rajaongkir']['results'][$i]['province']."</option>";
	}
	echo "</select><br><br>";
	//Get Data Provinsi

?>

<!DOCTYPE html>
<html>
	<head>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
	</head>
	
	<body>

		<label>Kabupaten Tujuan</label><br>
		<select id="kabupaten" name="kabupaten"></select><br><br>

		<label>Kurir</label><br>
		<select id="kurir" name="kurir">
			<option value="jne">JNE</option>
			<option value="tiki">TIKI</option>
			<option value="pos">POS INDONESIA</option>
		</select><br><br>

		<label>Berat (gram)</label><br>
		<input id="berat" type="text" name="berat" value="500" />
		<br><br>

		<input id="cek" type="submit" value="Cek"/>

		<div id="ongkir"></div>

	</body>
</html>


<script type="text/javascript">

	$(document).ready(function(){
		$('#provinsi').change(function(){

			//Mengambil value dari option select provinsi kemudian parameternya dikirim menggunakan ajax 
			var prov = $('#provinsi').val();

      		$.ajax({
            	type : 'GET',
           		url : 'http://localhost/rajaongkir/cek_kabupaten.php',
            	data :  'prov_id=' + prov,
					success: function (data) {

					//jika data berhasil didapatkan, tampilkan ke dalam option select kabupaten
					$("#kabupaten").html(data);
				}
          	});
		});

		$("#cek").click(function(){
			//Mengambil value dari option select provinsi asal, kabupaten, kurir, berat kemudian parameternya dikirim menggunakan ajax 
			var asal = $('#asal').val();
			var kab = $('#kabupaten').val();
			var kurir = $('#kurir').val();
			var berat = $('#berat').val();

      		$.ajax({
            	type : 'POST',
           		url : 'http://localhost/rajaongkir/cek_ongkir.php',
            	data :  {'kab_id' : kab, 'kurir' : kurir, 'asal' : asal, 'berat' : berat},
					success: function (data) {

					//jika data berhasil didapatkan, tampilkan ke dalam element div ongkir
					$("#ongkir").text(data);
				}
          	});
		});
	});
</script>





Baris script ini untuk mengambil dan menampilkan semua data Kabupaten/Kota Asal.
	//Get Data Kabupaten
	$curl = curl_init();	
	curl_setopt_array($curl, array(
	  CURLOPT_URL => "http://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: diisi dengan api key milik sobat"
	  ),
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);

	curl_close($curl);

	echo "<label>Kota Asal</label><br>";
	echo "<select name='asal' id='asal'>";
	echo "<option>Pilih Kota Asal</option>";
		$data = json_decode($response, true);
		for ($i=0; $i < count($data['rajaongkir']['results']); $i++) { 
		    echo "<option value='".$data['rajaongkir']['results'][$i]['city_id']."'>".$data['rajaongkir']['results'][$i]['city_name']."</option>";
		}
	echo "</select><br><br><br>";
	//Get Data Kabupaten

 

Baris script ini untuk mengambil dan menampilkan semua data Provinsi.

	//Get Data Provinsi
	$curl = curl_init();

	curl_setopt_array($curl, array(
	  CURLOPT_URL => "http://api.rajaongkir.com/starter/province",
	  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: diisi dengan api key milik sobat"
	  ),
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);

	echo "Provinsi Tujuan<br>";
	echo "<select name='provinsi' id='provinsi'>";
	echo "<option>Pilih Provinsi Tujuan</option>";
	$data = json_decode($response, true);
	for ($i=0; $i < count($data['rajaongkir']['results']); $i++) {
		echo "<option value='".$data['rajaongkir']['results'][$i]['province_id']."'>".$data['rajaongkir']['results'][$i]['province']."</option>";
	}
	echo "</select><br><br>";
	//Get Data Provinsi

sobat perhatikan untuk baris ini, sobat isikan dengan API Key yang sudah sobat dapatkan tadi.

array(
	    "key: diisi dengan api key milik sobat"
	  ),

 

Baris script ini kita menggunakan fungsi Ajax untuk merequest data kabupaten dari file cek_kabupaten.php dan mengirimkan parameter id provinsi.

Kemudian hasilnya di tampilkan kedalam option select kabupaten.

		$('#provinsi').change(function(){

			//Mengambil value dari option select provinsi kemudian parameternya dikirim menggunakan ajax 
			var prov = $('#provinsi').val();

      		$.ajax({
            	type : 'GET',
           		url : 'http://localhost/rajaongkir/cek_kabupaten.php',
            	data :  'prov_id=' + prov,
					success: function (data) {

					//jika data berhasil didapatkan, tampilkan ke dalam option select kabupaten
					$("#kabupaten").html(data);
				}
          	});
		});

 

Baris script dibawah ini juga menggunakan fungsi Ajax untuk mengambil data ongkos kirim dari file cek_ongkir.php berasarkan data provinsi asal, kabupaten, kurir dan berat/gram.

Kemudian hasilnya di tampilkan kedalam element div ongkir.

		$("#cek").click(function(){
			//Mengambil value dari option select provinsi asal, kabupaten, kurir, berat kemudian parameternya dikirim menggunakan ajax 
			var asal = $('#asal').val();
			var kab = $('#kabupaten').val();
			var kurir = $('#kurir').val();
			var berat = $('#berat').val();

      		$.ajax({
            	type : 'POST',
           		url : 'http://localhost/rajaongkir/cek_ongkir.php',
            	data :  {'kab_id' : kab, 'kurir' : kurir, 'asal' : asal, 'berat' : berat},
					success: function (data) {

					//jika data berhasil didapatkan, tampilkan ke dalam element div ongkir
					$("#ongkir").text(data);
				}
          	});
		});

 

Langkah selanjutnya sobat buka file cek_kabupaten.php, kemudian pastekan script dibawah ini.

Script dibawah ini untuk mengambil data kabupaten/kota berdasarkan Id Provinsi yang kirim dari file rajaongkir.php

<?php

$provinsi_id = $_GET['prov_id'];

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "http://api.rajaongkir.com/starter/city?province=$provinsi_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: diisi dengan api key milik sobat"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  //echo $response;
}

$data = json_decode($response, true);
for ($i=0; $i < count($data['rajaongkir']['results']); $i++) { 
    echo "<option value='".$data['rajaongkir']['results'][$i]['city_id']."'>".$data['rajaongkir']['results'][$i]['city_name']."</option>";
}

?>

 

Langkah selanjutnya sobat buka file cek_ongkir.php, dan pastekan script dibawah ini :

<?php
	$asal = $_POST['asal'];
	$id_kabupaten = $_POST['kab_id'];
	$kurir = $_POST['kurir'];
	$berat = $_POST['berat'];

	$curl = curl_init();
	curl_setopt_array($curl, array(
	  CURLOPT_URL => "http://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=".$asal."&destination=".$id_kabupaten."&weight=".$berat."&courier=".$kurir."",
	  CURLOPT_HTTPHEADER => array(
	    "content-type: application/x-www-form-urlencoded",
	    "key: diisi dengan api key milik sobat"
	  ),
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);

	curl_close($curl);

	if ($err) {	  echo "cURL Error #:" . $err;
	} else {
	  echo $response;
	}
	
?>

 

Setelah langkah-langkah diatas sobat lakukan silahkan jalankan file rajaongkir.php, jika berhasil tidak ada error tampilannya akan seperti ini :

Hasilnya masih dalam bentuk JSON, silahkan sobat sesuaikan dengan kebutuhan sobat.

 

Untuk demonya bisa sobat cek disini https://tondanoweb.com/demo/rajaongkir/rajaongkir.php dan untuk filenya silahkan sobat sedot disini https://tondanoweb.com/arsip/rajaongkir.zip

Jika hasil dari tutorial ini kurang memuaskan sobat bisa langsung menuju ke dokumentasi lengkap RajaOngkir  http://rajaongkir.com/dokumentasi.

 

Demikian untuk Tutorial kali ini, terima kasih sudah menyempatkan diri untuk membacanya.

Jika ada pertanyaan, kritik, saran atau masukan silahkan menuliskannya di dalam kolom komentar.





You May Also Like

28 Comments

    1. Tidak muncul gimana ya ? langkah-langkahnya sudah sesuai dengan yang di atas ?

      Jika tarifnya tidak muncul berarti, di daerah/tempat tujuan tersebut tidak bisa diakses oleh jne, tiki, maupun pos.

  1. kan itu datanya berupa json, bagaimana ya cara ya merubah ke array sehingga bisa di custom ke table atau css

    1. @adirohimin:disqus @ariyozi:disqus @disqus_xElVofoKbw:disqus lagi sibuk, blm sempat buat tutorialnya, sabar ya kemungkinan dalam waktu dekat.

  2. saya download scriptnya,
    sudah diisi API keynya .. tapi pada input select kota, provinsi, dan asal tidak muncul nama kota maupun provinsi … apakah ada file yang kurang?

      1. sudah bisa mas, ternyata saya salah masukin API nya, ternyata formatnya “key:3f2cc6xxxxxxx” . nanya mas,
        nanya mas, itu klo hasilnya dimasukan ke input form, contoh kodenya bagaiamana ya? terima kasih

          1. betul sekali mas, jadi rencana hasil resultnya mau dimasukan ke dalam form, .. contoh codenya gimana ya?

    1. @mnurulfuad:disqus masih bisa, datanya muncul kok…. bisa jadi koneksi inet yg bermasalah jadi load result json-nya gak full…

  3. mas mau tanya dong kalo misalkan mau ngasih validasi kira” taronya dimana ya?

    misalkan kalo papua ga ada JNE trus muncul “maaf kota tidak terjangkau”

    KAYA JSON DIATAS kan costs nya kosong tuh jadi di isi kota tidak terjangkau

  4. gan kok setelah saya download,,yang bagian combobox kabupaten tujuan ga keluar ya ??
    sedangkan kota tujua dan provinsi keluar,,kenapa ya ?

  5. gimana caranya klo kota asal sudah fix. tanpa perlu di pilih lagi. hanya pilih kota tujuan dan kurir, bisa kasih contoh gimana script nya? terima kasih sebelumnya

Leave a Reply

Your email address will not be published. Required fields are marked *