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

Post a Comment

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.



Related Posts

Post a Comment