SlideShare a Scribd company logo
1 of 25
Download to read offline
S
HITUNG
ONGKOS KIRIM
MENGGUNAKA
N API
RAJAONGKIR.C
OM
PHP + Jquery
Bahasa Indonesia
Apr 11th 2015
Oleh
Yusuf Akhsan / @xyussanx
Level Intermediate
Hello world,
Saya adalah Yusuf Akhsan H. , dari Id-More divisi RnD(Research and Development). Id-more is
tempat berkumpulnya orang-orang yang peduli dengan perkembangan ilmu pengetahuan dan
teknologi di Indonesia, kami melakukan riset dan pengembangan teknologi di disini untuk
Indonesia khususnya dan untuk dunia umumnya.
Ebook singkat adalah sebagai dokumentasi dari source code yang diberikan di akhir buku, untuk
menunjang agar developer juga mengetahui konsep dan cara kerja program tersebut. Ebook ini
ditujukan bagi kamu yang sedang membuat sistem untuk perhitungan biaya ongkos kirim dari dan
untuk berbagai kota yang ada di Indonesia. Berkat API yang disediakan oelh rajaongkir.com
semuanya menjadi mudah dan cepat, mulai dari data provinsi, kota sampai berbagai agen pengirim
tersedia disini, so selamat mencoba
writer
Pengenalan
Tentang Raja Ongkir
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. Secara umum, RajaOngkir ditujukan kepada pengguna yang ingin mengetahui dan
membandingkan ongkos kirim dari berbagai kurir dan secara khusus bagi pemilik toko online,
maupun bagi orang yang sering berbelanja online.
Keunikan dari sistem RajaOngkir adalah data yang terpadu. Anda cukup sekali saja menginputkan
nama kota asal, kota tujuan, dan berat, sistem RajaOngkir otomatis melakukan pengecekan ke
semua kurir yang didukung. RajaOngkir menghemat waktu dan tenaga Anda!
RajaOngkir menyediakan API ongkos kirim yang bisa dimanfaatkan oleh para developer untuk
mengembangkan aplikasi untuk berbagai platform, seperti Android, BlackBerry, iOS, desktop, dan
lain-lain. Silakan klik di sini untuk informasi lebih lanjut mengenai penggunaan API.
Catatan: RajaOngkir tidak berafiliasi dengan kurir-kurir yang disediakan.
Contact:Jika Anda memiliki pertanyaan, kritik, dan saran, silakan kirim pesan melalui halaman
kontak.
Disalin dari : http://rajaongkir.com/tentang
Preparation
What you need before code
Mempunyai Akun RajaOngkir.com
Ini adalah hal yang paling penting, dengan akun raja ongkir maka kamu akan mendapat secret key
yang bisa digunakan untuk mengakses berbagai fitur yang tersedia di API rajaongkir.com.
Ada 2 jenis akun raja ongkir yaitu starter dan basic, untuk perbedaannya bisa dilihat dari gambar
dibawah ini :
untuk keterangan lebih lanjut, silahkan kunjungi halaman berkut :http://rajaongkir.com/dokumentasi
Download The Core
Pada ebook kali ini implementasi API rajaongkir.com akan dilakukan pada bahasa pemrograman
PHP, pastikan webserver lokal kamu berjalan dengan baik.
Untuk kemudian menggunakan tambahan JQUERY silahkan download disini :
http://code.jquery.com/jquery-2.1.3.min.js . JQUERY digunakan untuk bagian ajax dan DOMnya.
Karena moto daari idmore adalah “Bui Beautiful and Powerful”, maka menggunakan skeleton
sebagai framework frontendnya silahkan download disini :
https://github.com/dhg/Skeleton/releases/download/2.0.4/Skeleton-2.0.4.zip.
Directory Structure
Agar hasilnya sesuai dengan yang ada di dokumen dan source yang disertakan silahkan buat
struktur direktorinya menjadi seperti ini, untuk script.js, example.html, idmore.php dan process.php
silahkan buat file baru sendiri.
Start Code : 1st
Membuat Frontend
Copy Paste
Pembahasan tentang front-end hanya sebatas file atau sintak yang diubah. Untuk memulai membuat
frontendnya silahkan beralih ke file example.html, untuk kemudian masukan semua tag html
dibawah ini kedalamnya.
File : example.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/normalize.css">
<link rel="stylesheet" type="text/css" href="css/skeleton.css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<title>Penggunaan API RajaOngkir | IDMore</title>
</head>
<body>
<div class="container">
<div class="row">
<br/>
<div class="twelve columns"><h1>Hitung Ongkos Kirim</h1></div>
</div>
<div class="row">
<div class="twelve columns"><h5>Masukan Data</h5></div>
</div>
<div class="row">
<div class="two columns">
Asal<br/>
<select id="oriprovince">
<option>Provinsi</option>
</select> 
</div>
<div class="two columns">
<br/>
<select id="oricity">
<option>Kota</option>
</select> 
</div>
<div class="two columns">
Tujuan<br/>
<select id="desprovince">
<option>Provinsi</option>
</select> 
</div>
<div class="two columns">
<br/>
<select id="descity">
<option>Kota</option>
</select> 
</div>
<div class="two columns">
Layanan<br/>
<select id="service"
<option>JNE</option>
<option>POS</option>
<option>TIKI</option>
</select> 
</div>
<div class="two columns">
<br/>
<button id="btncheck">Cek Harga</button> 
</div>
</div>
<div class="row">
<div class="twelve columns"><h5>Harga</h5></div>
<hr/>
<table class="twelve columns">
<tr>
<th>Servis</th>
<th>Deskripsi Servis</th>
<th>Lama Kirim (hari)</th>
<th>Total Biaya (Rp)</th>
</tr>
<span id="resultsbox">
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</span>
</table>
</div>
</div>
</body>
</html>
Hingga ketika dites di browser menghasilkan tampilan sebagai berikut :
Start Code : 2nd
Membuat backend
Class Utama
Untuk memudahkan pemanggilan data dan agar kode lebih ramping maka dibuatkah kelas utama
yang akan digunakan untuk menjalankan berbagai fungsi yang berhubungan dengan raja ongkir.
Didalam file idmore.php buat class baru bernama IdmoreRO, jika belum paham konsep dari class
silahkan baca dokumentasi dari PHP.net di link ini : http://php.net/language.oop5.
Didalam class IdmoreRO isi beberapa fungsi sesuai dengan fitur yang disediakan pada percobaan
kali ini :
file : idmore.php
<?php
/*
* Rajaongkir cek harga
* Code by @xyussanx :: idmore
*/
class IdmoreRO{
public function __construct()
{
}
//menampilkan data provinsi
public function showProvince()
{
}
//menampilkan data kabupaten/kota berdasarkan id provinsi
public function showCity($province)
{
}
//hitung ongkir
public function hitungOngkir($origin,$destination,$weight,$courier)
{
}
}
3 fungsi yang dibuat pada class tersebut mempunyai tujuan masing :
showProvince()
Menampilkan semua provinsi yang ada di Indonesia, karena sebelum user memilih kota tujuan/asal
sebelumnya user akan memilih provonso asal kota tersebut.
showCity($province)
Dari provinsi yang telah terpilih, maka diambil id provinsi yang terpilih tersebut untuk dijadikan
parameter pada fungsi showCity sehingga returnnya hanya menampilkan daftar kota berdasarkan id
parameter prvonsinya.
hitungOngkir($origin,$destination,$weight,$courier)
Merupakan fitur utama yaitu untuk menghitung ongkos kirim berdasarkan kota asal, kota tujua,
berat kiriman dan kurir yang digunakan.
Start Code : 3th
Provinsi
Menampilkan Data Provinsi
Konsep awal adalah provinsi diload secara otomatis ketika halaman selesai diload, pada step 3 ini
ada 3 fle yang diubah yaitu : script.js,idmore.php dan process.php.
Pastikan kamu sudah mempunyai akun di rajaongkir.com, untuk kemudian mendapatkan secret key
yang akan digunakan untuk menggunakan APInya.
Untuk selanjutnya adalah membuat fungsi pemanggilan data provinsi di kelas IdMoreRO. Untuk
memanggil data dari rajaonmgkir.com pada bahasa PHP menggunakan curl(Client URL Library).
Inti dari Curl adalah mengirimkan request/ mendapat responses dari method POST tanpa
menggunakan form dari tag HTML. Untuk lebih detailnya silahkan baca disini :
http://php.net/manual/en/book.curl.php.
Jika menggunakan paket dari XAMPP biasanya curl sudah include didalamnya dan siap untuk
digunakan, tapi jika belum untuk pengguna Linux terutama Keluarga debian, curl bisa diinstal
menggunakan $sudo apt-get install php5-curl untuk pengguna Mac / Windows silahkan cari di
internet.
Buat Fungsi Menampilkan Data Provinsi
File : idmore.php , function :showProvince()
public function showProvince()
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://rajaongkir.com/api/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(
"xxxAPIKEYxxx"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$result = 'error';
return 'error';
} else {
return $response;
}
}
Pada bagian “CURLOPT_HTTPHEADER ...”, sialhkan ganti “xxxAPIKEYxxx” dengan “key: API
KEY” yang sudah didapatkan di akun rajaongkir.com.
Cara kerjanya adalah user mengirimkan request ke url http://rajaongkir.com/api/starter/province
dengan api key masing-masing. Karena tanpa tambahan parameter sehingga result JSONnya akan
menampilkan seluruh data provinsi yang tercatat di rajaongkir.
Membuat File Process
File : process.php
<?php
require_once('idmore.php');
$IdmoreRO = new IdmoreRO();
if(isset($_GET['act'])):
switch ($_GET['act']) {
case 'showprovince':
# code...
break;
default:
# code...
break;
}
endif;
Require_once file idmore yang didalamnya tersedia class IdmoreRO.
Instanisasi dilakukan pada variabel $IdmoreRo = new IdmoreR0(). Untuk memanggil data provinsi
yang telah dibuat pada kelas sebelumnya, pada case 'showprovince' tambahkan beberapa line
dibawah ini.
case 'showprovince':
$province = $IdmoreRO­>showProvince();
echo $province;
break;
Silahkan cek dengan menggunakan browser, apakah result berupa json berisi data provinsi bisa
sukses terpanggil sesuai dengan contoh dibawah.
Ada kemungkinan result json tidak rapi seperti contoh, agar bisa rapi silahkan install json viewer
untuk beberapa browser di link berikut : http://jsonview.com.
Membuat AJAX dan DOM
Menampilkan Data Provinsi
Setelah response json berhasil didapatkan langkah berikutnya adalah sisi JavaScript untuk membuat
AJAX dan DOMnya.
file:script.js
$(document).ready(function(){
loadProvinsi('#oriprovince');
loadProvinsi('#desprovince');
$('#oriprovince').change(function(){
alert('yussan');
});
$('#desprovince').change(function(){
alert('yussan');
});
});
function loadProvinsi(id){
$('#oricity').hide();
$('#descity').hide();
$(id).html('loading...');
$.ajax({
url:'process.php?act=showprovince',
dataType:'json',
success:function(response){
$(id).html('');
province = '';
$.each(response['rajaongkir']['results'], function(i,n){
province = '<option 
value=”'n['province_id']”>'+n['province']+'</option>';
province = province + '';
$(id).append(province);
});
},
error:function(){
$(id).html('ERROR');
}
});
}
untuk kemudian jika dicek pada halaman example.html akan menampilkan data provinsi sebagai
berikut.
$(document).ready(function(){
adalah fungsi bawaan dari jquery yang artinya fungsi didalamnya baru dijalankan setelah halaman
berhasil diload dengan sempurna. Fungsi yang otomatis dijalankan adalah loadProvinsi(id), dan
yang menjadi parameternya adalah id dari id select input milik oriprovince dan desprovince.
Fungsi loadProvince(id)
Ketika eksekusi fungsi ini maka secara otomatis select kota akan disembunyikan, menggunakan
hide(). Proses utama adalah penggunakan fungsi ajax() bawaan dari jquery, silahkan pelajari lebih
lanjut di http://api.jquery.com/jquery.ajax/.
$.each() dan append()
Response berupa JSON melalui proses looping(perulangan), dimasukan kedalam variabel province
untuk kemudian menggunakan fungsi append() dari jquery digunakan untuk menambah option baru
didalam input select.
Tes halaman example.html, maka mendapatkan data provinsi didalam input select sebagai berikut.
Menampilkan Data Kota/Kabupaten Berdasarkan Provinsi
Konsep untuk menampilkan data kota berdsarkan provinsi sama dengan menampilkan data provinsi,
sehingga penjelasan tidak terlalu mendalam.
Kembali ke class utama, tujuan utamanya adalah membuat fungsi untuk menampilkan kota
berdasarkan id province. Pada fungsi showCity(), sialahkan uabh seperti contoh dibawah ini. Jangan
lupa untuk mengubah keynya sesuai dengan key masing-masing.
File : idmore.php
public function showCity($province)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://rajaongkir.com/api/starter/city?
province=$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: xxx"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$result = 'error';
return 'error';
} else {
return $response;
}
}
untuk editing selanjutnya pada file proses.php, dengan menambahkan action untuk show city,
menjadi sebagai berikut.
file : process.php
case 'showcity':
$idprovince = $_GET['province'];
$city = $IdmoreRO­>showCity($idprovince);
echo $city;
break;
default:
sehingga jika dites menggunakan browser, sebagai contoh menampilkan kota-kota untuk provinsi
dengan id 13, menghasilkan response seperti ini.
Dan url siap digunakan untuk ajax.
Sekarang adalah tahap pembuatan AJAX dan DOMnya, kembali ke script.js, ada 2 perubahan yang
akan dilakukan disini.pertama adalah merubah isi on document readinya.
File : script.js
$(document).ready(function(){
loadProvinsi('#oriprovince');
loadProvinsi('#desprovince');
$('#oriprovince').change(function(){
$('#oricity').show();
var idprovince = $('#oriprovince').val();
loadCity(idprovince,'#oricity')
});
$('#desprovince').change(function(){
$('#descity').show();
var idprovince = $('#desprovince').val();
loadCity(idprovince,'#descity')
});
});
baris $('#oriprovince').change(...) dan $('#desprovince').change(...) dimaksudkan fungsi baru
dieksekusi ketika user melakukan pemilihan pada data provinsi. Fungsi yang diekseskusi adalah
sebagai berikut.
File : script.js
function loadCity(idprovince,id){
$.ajax({
url:'process.php?act=showcity',
dataType:'json',
data:{province:idprovince},
success:function(response){
$(id).html('');
city = '';
$.each(response['rajaongkir']['results'], function(i,n){
city = '<option value="'+n['city_id']
+'">'+n['city_name']+'</option>';
city = city + '';
$(id).append(city);
});
},
error:function(){
$(id).html('ERROR');
}
});
}
Jika di tes di browser maka akan menghasilkan sebagai berikut:
Start Code : 4th
Hitung Ongkir
Tahap Hitung Ongkir
Merupakan tahap akhir dari pembuatan sistem ini. Tahap pembuatannya masih sama, dimulai
dengan membuat fungsi diclass utama, manajemen proses di proses.php, dan membuat AJAX dan
DOM di script.js, serta perubahan sedikit pada file example.html.
Ubah example.html
Tujuannya adalah menambah input untuk berat kiriman, cukup edit pada bagian layanan menjadi
seperti ini.
File : example.html
<div class="two columns">
Layanan<br/>
<select id="service"
<option>JNE</option>
<option>POS</option>
<option>TIKI</option>
</select> 
<br/>
Berat (gram)<br/>
<input  style="width:100px" id="berat" type="number">
</div>
Dan menghasilkan tampilan sebagai berikut
Fungsi hitungOngkir()
Parameter untuk menjalankan fungsi ini adalah idkota asal, idkotatujuan, id kurir, dan berat paket.
Pada fungsi hitungOngkir(), ubah menjadi seperti berikut : *)jangan lupa memasukan api key
masing-masing
file : idmore.php
//hitung ongkir
public function hitungOngkir($origin,$destination,$weight,$courier)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://rajaongkir.com/api/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=$origin&destination=$destination&weight=$weight&courier=$courier",
CURLOPT_HTTPHEADER => array(
"key: $this­>key"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$result = 'error';
return 'error';
} else {
return $response;
}
}
Selanjutnya beralih ke bagian manajemen process, pindah ke file process.php, dan tambahkan
kondisi baru sebagai berikut.
File : process.php
case 'cost':
$origin = $_GET['origin'];
$destination = $_GET['destination'];
$weight = $_GET['weight'];
$courier = $_GET['courier'];
$cost = $IdmoreRO­>hitungOngkir($origin,$destination,$weight,
$courier);
echo $cost;
break;
untuk kemudian tes do browser, apakah mendapatkan response yang sesuai.
Pembuatan AJAX dan DOM Untuk Hitung Ongkir
Metode kali ini berbeda, untuk parsing JSON yang didapat dari raja ongkit, tidak menggunakan
javascript melaninkan menggunakan php. Hasil parsing dari PHP dijadikan response dari AJAX
yang telah dibuat.
Untuk itu kita kembali lagi ke process.php
ubah pada bagian case 'cost' nya menjadi seperti dibawah ini.
file:process.php
case 'cost':
$origin = $_GET['origin'];
$destination = $_GET['destination'];
$weight = $_GET['weight'];
$courier = $_GET['courier'];
$cost = $IdmoreRO­>hitungOngkir($origin,$destination,$weight,
$courier);
//parse json
$costarray = json_decode($cost);
$results = $costarray­>rajaongkir­>results;
if(!empty($results)):
foreach($results as $r):
foreach($r­>costs as $rc):
foreach($rc­>cost as $rcc):
echo "<tr><td>$r­>code</td><td>$rc­
>service</td><td>$rc­>description</td><td>$rcc­
>etd</td><td>".number_format($rcc­>value)."</td></tr>";
endforeach;
endforeach;
endforeach;
endif;
//end of parse json
break;
Json hasil dari request ke API rajaongkir untuk kemudian di decode menjadi array di PHP
menggunakan json_encode() untuk mempelajari lebih lanjut silahkan cek link berikut
http://php.net/manual/en/ref.json.php .
Setelah menjadi array proses berikutnya menjadi lebih muda menggunakan foreach(). Array yang
dihasilkan dari hasil encode_json() terdiri dari 3 lapisan sehingga membutuhkan 3 kali foreach,
seperti inilah lapisan array tersebut.
Rajaongkir->results
results->costs (kurir)
costs->detail (seperti paket kirim,lama hari dan total biaya)
Untuk tes apakah encoding dan looping berhasil dijalankan tes menggunakan url secara langsung.
Jika hasilnya sudah sesuai dengan gambar diatas berarti AJAX dan DOMnya siap dibuat.
Untuk selanjutnya kembali ke file script.js untuk dibuat AJAX dan DOMnya. Pada function
cekHarga() yang sudah dibuat sebelumnya, silahkan edit menjadi seperti ini.
File : script.js
function cekHarga(){
var origin = $('#oricity').val();
var destination = $('#descity').val();
var weight = $('#berat').val();
var courier = $('#service').val();
$.ajax({
url:'process.php?act=cost',
data:
{origin:origin,destination:destination,weight:weight,courier:courier},
success:function(response){
$('#resultsbox').html(response);
},
error:function(){
$('#resultsbox').html('ERROR');
}
});
} 
yang menjadi perbedaan adalah dihilangkannya data:'jsonfile' dan response on success nya.
Maksud dari line adalah semua tampilan yang dihasilkan oleh url akan menjadi response bagi fungsi
ini.
Agar tampilan lebih rapi lakukan sedikir perubahan pada file example.html pada line table menjadi
seperti dibawah ini.
<table class="twelve columns">
<thead>
<tr>
<th>Kurir</th>
<th>Servis</th>
<th>Deskripsi Servis</th>
<th>Lama Kirim (hari)</th>
<th>Total Biaya (Rp)</th>
</tr>
</thead>
<tbody id="resultsbox"></tbody>
</table>
Testing
Hitung Ongkir
Test aplikasi
Langsung saja buka example.html, masukan provinsi dan kota asal dan tujuan, kurir dan berat,klik
tombol cek harga, maka data yang diminta akan tampil dibawahnya.
Cukup sekian dan ebook ini ditutup sampai sini.
Link
Hitung Ongkir
Source Code
https://github.com/idmore/rajaongkir.com/tree/master/hitung%20biaya%20-%20jquery.
More info
https://twitter.com/xyussanx
3th Party
http://rajaongkir.com
http://api.jquery.com
http://skeleton.com
http://php.net

More Related Content

What's hot

Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabel
Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabelFungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabel
Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabelErfan Bahtiar
 
Menjadi webmaster dalam 30 hari
Menjadi webmaster dalam 30 hariMenjadi webmaster dalam 30 hari
Menjadi webmaster dalam 30 hariDidit Septiawan
 
Tutorial php membuat Aplikasi Inventaris
Tutorial php membuat Aplikasi InventarisTutorial php membuat Aplikasi Inventaris
Tutorial php membuat Aplikasi InventarisDeka M Wildan
 
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQLPanduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQLDoni Tobing
 
Tugas rekayasa web 1 soap
Tugas rekayasa web 1 soapTugas rekayasa web 1 soap
Tugas rekayasa web 1 soaprizqibetawi1501
 
Penerapan JSON dalam PHP
Penerapan JSON dalam PHPPenerapan JSON dalam PHP
Penerapan JSON dalam PHPIput Ipoet
 
Tutorial Pembuatan Aplikasi Website Beserta Databasenya
Tutorial Pembuatan Aplikasi Website Beserta DatabasenyaTutorial Pembuatan Aplikasi Website Beserta Databasenya
Tutorial Pembuatan Aplikasi Website Beserta DatabasenyaRCH_98
 
Panduan lengkap php ajax j query
Panduan lengkap php ajax j queryPanduan lengkap php ajax j query
Panduan lengkap php ajax j queryapriatin
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databasefebeniken
 
Superglobals dan session pada php
Superglobals dan session pada phpSuperglobals dan session pada php
Superglobals dan session pada phpVicky Nitinegoro
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman webVicky Nitinegoro
 
modul pemrograman web dengan dreamweaver, sql & php
modul pemrograman web dengan dreamweaver, sql & phpmodul pemrograman web dengan dreamweaver, sql & php
modul pemrograman web dengan dreamweaver, sql & phpIsmi Islamia
 

What's hot (20)

Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabel
Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabelFungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabel
Fungsi di PHP untuk men-generate file JSON berdasarkan data yang ada di tabel
 
Menjadi webmaster dalam 30 hari
Menjadi webmaster dalam 30 hariMenjadi webmaster dalam 30 hari
Menjadi webmaster dalam 30 hari
 
Tutorial php membuat Aplikasi Inventaris
Tutorial php membuat Aplikasi InventarisTutorial php membuat Aplikasi Inventaris
Tutorial php membuat Aplikasi Inventaris
 
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQLPanduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL
 
Java sfb
Java sfbJava sfb
Java sfb
 
Php 1
Php 1Php 1
Php 1
 
Php acak
Php acakPhp acak
Php acak
 
Tugas rekayasa web 1 soap
Tugas rekayasa web 1 soapTugas rekayasa web 1 soap
Tugas rekayasa web 1 soap
 
Bongkar rahasia php
Bongkar rahasia phpBongkar rahasia php
Bongkar rahasia php
 
7 jam membuat web dari nol
7 jam membuat web dari nol7 jam membuat web dari nol
7 jam membuat web dari nol
 
Penerapan JSON dalam PHP
Penerapan JSON dalam PHPPenerapan JSON dalam PHP
Penerapan JSON dalam PHP
 
Tutorial Pembuatan Aplikasi Website Beserta Databasenya
Tutorial Pembuatan Aplikasi Website Beserta DatabasenyaTutorial Pembuatan Aplikasi Website Beserta Databasenya
Tutorial Pembuatan Aplikasi Website Beserta Databasenya
 
Ajax - PHP
Ajax - PHPAjax - PHP
Ajax - PHP
 
Panduan lengkap php ajax j query
Panduan lengkap php ajax j queryPanduan lengkap php ajax j query
Panduan lengkap php ajax j query
 
Bab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-databaseBab 4 tools-pemrograman-web-dan-database
Bab 4 tools-pemrograman-web-dan-database
 
Ajax tutorial 1
Ajax tutorial 1Ajax tutorial 1
Ajax tutorial 1
 
Superglobals dan session pada php
Superglobals dan session pada phpSuperglobals dan session pada php
Superglobals dan session pada php
 
Dasar PHP
Dasar PHPDasar PHP
Dasar PHP
 
Berkenalan dengan bahasa php pemrograman web
Berkenalan dengan bahasa php   pemrograman webBerkenalan dengan bahasa php   pemrograman web
Berkenalan dengan bahasa php pemrograman web
 
modul pemrograman web dengan dreamweaver, sql & php
modul pemrograman web dengan dreamweaver, sql & phpmodul pemrograman web dengan dreamweaver, sql & php
modul pemrograman web dengan dreamweaver, sql & php
 

Viewers also liked

Tutorial Contoh Penggunaan API Twitter
Tutorial Contoh Penggunaan API TwitterTutorial Contoh Penggunaan API Twitter
Tutorial Contoh Penggunaan API TwitterAryo Luntanglantung
 
Facebook Open Stream API - Facebook Developer Garage Dhaka
Facebook Open Stream API - Facebook Developer Garage DhakaFacebook Open Stream API - Facebook Developer Garage Dhaka
Facebook Open Stream API - Facebook Developer Garage DhakaMohammad Emran Hasan
 
Ebook I - membuat bot telegram dengan php
Ebook I  - membuat bot telegram dengan phpEbook I  - membuat bot telegram dengan php
Ebook I - membuat bot telegram dengan phpHasanudin H Syafaat
 
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...simondschweitzer
 
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"PEMROGRAMAN MOBILE "AJAX PADA JQUERY"
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"melany889
 
Presentasi Ujian Akhir STMIK Amikom Yogyakarta
Presentasi Ujian Akhir STMIK Amikom YogyakartaPresentasi Ujian Akhir STMIK Amikom Yogyakarta
Presentasi Ujian Akhir STMIK Amikom YogyakartaYusuf A.H.
 
Ghost : From Offline to Online
Ghost : From Offline to OnlineGhost : From Offline to Online
Ghost : From Offline to OnlineYusuf A.H.
 
Bliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionBliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionIrfan Maulana
 
Scrum 101: Bahkan Nenek Saya Bisa Mengerti
Scrum 101: Bahkan Nenek Saya Bisa MengertiScrum 101: Bahkan Nenek Saya Bisa Mengerti
Scrum 101: Bahkan Nenek Saya Bisa MengertiScrum Asia Pasifik
 
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterMembangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterBeni Krisbiantoro
 
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap Build
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap BuildPengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap Build
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap BuildWahyu Purnomo
 
PHP CRUD Database Mysql
PHP CRUD Database MysqlPHP CRUD Database Mysql
PHP CRUD Database MysqlYusuf A.H.
 
2015 Google Play Game Category Annual Report_english
2015 Google Play Game Category Annual Report_english2015 Google Play Game Category Annual Report_english
2015 Google Play Game Category Annual Report_englishigaworks
 
Facebook Login & Open Graph Introduction
Facebook Login & Open Graph IntroductionFacebook Login & Open Graph Introduction
Facebook Login & Open Graph IntroductionEric Ping
 
Facebook graph api
Facebook graph apiFacebook graph api
Facebook graph apiFagner Moura
 
Laporan Tugas Akhir - Absensi SMS Gateway
Laporan Tugas Akhir - Absensi SMS GatewayLaporan Tugas Akhir - Absensi SMS Gateway
Laporan Tugas Akhir - Absensi SMS GatewayYusuf Andrias Putra
 

Viewers also liked (20)

Tutorial Contoh Penggunaan API Twitter
Tutorial Contoh Penggunaan API TwitterTutorial Contoh Penggunaan API Twitter
Tutorial Contoh Penggunaan API Twitter
 
Web API Practice Handbook
Web API Practice HandbookWeb API Practice Handbook
Web API Practice Handbook
 
Facebook Open Stream API - Facebook Developer Garage Dhaka
Facebook Open Stream API - Facebook Developer Garage DhakaFacebook Open Stream API - Facebook Developer Garage Dhaka
Facebook Open Stream API - Facebook Developer Garage Dhaka
 
Ebook I - membuat bot telegram dengan php
Ebook I  - membuat bot telegram dengan phpEbook I  - membuat bot telegram dengan php
Ebook I - membuat bot telegram dengan php
 
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...
Möglichkeiten (und Probleme) der Darstellung von Wortfeldern in lexikalischen...
 
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"PEMROGRAMAN MOBILE "AJAX PADA JQUERY"
PEMROGRAMAN MOBILE "AJAX PADA JQUERY"
 
Presentasi Ujian Akhir STMIK Amikom Yogyakarta
Presentasi Ujian Akhir STMIK Amikom YogyakartaPresentasi Ujian Akhir STMIK Amikom Yogyakarta
Presentasi Ujian Akhir STMIK Amikom Yogyakarta
 
Ghost : From Offline to Online
Ghost : From Offline to OnlineGhost : From Offline to Online
Ghost : From Offline to Online
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Ajax and Jquery
Ajax and JqueryAjax and Jquery
Ajax and Jquery
 
Bliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionBliblidotcom - SASS Introduction
Bliblidotcom - SASS Introduction
 
Pengenalan json
Pengenalan jsonPengenalan json
Pengenalan json
 
Scrum 101: Bahkan Nenek Saya Bisa Mengerti
Scrum 101: Bahkan Nenek Saya Bisa MengertiScrum 101: Bahkan Nenek Saya Bisa Mengerti
Scrum 101: Bahkan Nenek Saya Bisa Mengerti
 
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniterMembangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
Membangun Aplikasi SMS dengan Gammu dan PHP Framework CodeIgniter
 
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap Build
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap BuildPengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap Build
Pengembangan Mobile Learning (Android) dengan eXeLearning dan PhoneGap Build
 
PHP CRUD Database Mysql
PHP CRUD Database MysqlPHP CRUD Database Mysql
PHP CRUD Database Mysql
 
2015 Google Play Game Category Annual Report_english
2015 Google Play Game Category Annual Report_english2015 Google Play Game Category Annual Report_english
2015 Google Play Game Category Annual Report_english
 
Facebook Login & Open Graph Introduction
Facebook Login & Open Graph IntroductionFacebook Login & Open Graph Introduction
Facebook Login & Open Graph Introduction
 
Facebook graph api
Facebook graph apiFacebook graph api
Facebook graph api
 
Laporan Tugas Akhir - Absensi SMS Gateway
Laporan Tugas Akhir - Absensi SMS GatewayLaporan Tugas Akhir - Absensi SMS Gateway
Laporan Tugas Akhir - Absensi SMS Gateway
 

Similar to Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY

Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Linda Lestari
 
laporan aplikasi
laporan aplikasilaporan aplikasi
laporan aplikasiFitra Sani
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rplDenny Yahya
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterGeorge Kartutu
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterMuhammad Rais
 
Php dgn framework code ignitier
Php dgn framework code ignitierPhp dgn framework code ignitier
Php dgn framework code ignitierAlbertz Ace-Red
 
Php dgn frame work code ignitier
Php dgn frame work code ignitierPhp dgn frame work code ignitier
Php dgn frame work code ignitierHaswi Haswi
 
Belajar php dengan framework code igniter3
Belajar php dengan framework code igniter3Belajar php dengan framework code igniter3
Belajar php dengan framework code igniter3iimpunya3
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)riarel
 
Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Al-dhimas Purnama
 
E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysqlAlvin Setiawan
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritmaRony BolaNk
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLLusiana Diyan
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrudmales Aja
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ciWira Hul
 
Laravel Basic Development
Laravel Basic Development Laravel Basic Development
Laravel Basic Development ssuser1fd02a1
 

Similar to Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY (20)

Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)Tugas 3 – 0317 (individu)
Tugas 3 – 0317 (individu)
 
Cover
CoverCover
Cover
 
Cover
CoverCover
Cover
 
laporan aplikasi
laporan aplikasilaporan aplikasi
laporan aplikasi
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
 
Php dgn framework code ignitier
Php dgn framework code ignitierPhp dgn framework code ignitier
Php dgn framework code ignitier
 
Php dgn frame work code ignitier
Php dgn frame work code ignitierPhp dgn frame work code ignitier
Php dgn frame work code ignitier
 
Belajar php dengan framework code igniter3
Belajar php dengan framework code igniter3Belajar php dengan framework code igniter3
Belajar php dengan framework code igniter3
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
 
Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Laporan_PHP-MySQL
Laporan_PHP-MySQLLaporan_PHP-MySQL
Laporan_PHP-MySQL
 
E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysql
 
Modul praktikum algoritma
Modul praktikum algoritmaModul praktikum algoritma
Modul praktikum algoritma
 
CRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQL
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Laravel Basic Development
Laravel Basic Development Laravel Basic Development
Laravel Basic Development
 

Hitung Ongkos Kirim Menggunakan API rajaongkir.com dengan PHP+JQUERY

  • 1. S HITUNG ONGKOS KIRIM MENGGUNAKA N API RAJAONGKIR.C OM PHP + Jquery Bahasa Indonesia Apr 11th 2015 Oleh Yusuf Akhsan / @xyussanx Level Intermediate
  • 2. Hello world, Saya adalah Yusuf Akhsan H. , dari Id-More divisi RnD(Research and Development). Id-more is tempat berkumpulnya orang-orang yang peduli dengan perkembangan ilmu pengetahuan dan teknologi di Indonesia, kami melakukan riset dan pengembangan teknologi di disini untuk Indonesia khususnya dan untuk dunia umumnya. Ebook singkat adalah sebagai dokumentasi dari source code yang diberikan di akhir buku, untuk menunjang agar developer juga mengetahui konsep dan cara kerja program tersebut. Ebook ini ditujukan bagi kamu yang sedang membuat sistem untuk perhitungan biaya ongkos kirim dari dan untuk berbagai kota yang ada di Indonesia. Berkat API yang disediakan oelh rajaongkir.com semuanya menjadi mudah dan cepat, mulai dari data provinsi, kota sampai berbagai agen pengirim tersedia disini, so selamat mencoba writer
  • 3. Pengenalan Tentang Raja Ongkir 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. Secara umum, RajaOngkir ditujukan kepada pengguna yang ingin mengetahui dan membandingkan ongkos kirim dari berbagai kurir dan secara khusus bagi pemilik toko online, maupun bagi orang yang sering berbelanja online. Keunikan dari sistem RajaOngkir adalah data yang terpadu. Anda cukup sekali saja menginputkan nama kota asal, kota tujuan, dan berat, sistem RajaOngkir otomatis melakukan pengecekan ke semua kurir yang didukung. RajaOngkir menghemat waktu dan tenaga Anda! RajaOngkir menyediakan API ongkos kirim yang bisa dimanfaatkan oleh para developer untuk mengembangkan aplikasi untuk berbagai platform, seperti Android, BlackBerry, iOS, desktop, dan lain-lain. Silakan klik di sini untuk informasi lebih lanjut mengenai penggunaan API. Catatan: RajaOngkir tidak berafiliasi dengan kurir-kurir yang disediakan. Contact:Jika Anda memiliki pertanyaan, kritik, dan saran, silakan kirim pesan melalui halaman kontak. Disalin dari : http://rajaongkir.com/tentang
  • 4. Preparation What you need before code Mempunyai Akun RajaOngkir.com Ini adalah hal yang paling penting, dengan akun raja ongkir maka kamu akan mendapat secret key yang bisa digunakan untuk mengakses berbagai fitur yang tersedia di API rajaongkir.com. Ada 2 jenis akun raja ongkir yaitu starter dan basic, untuk perbedaannya bisa dilihat dari gambar dibawah ini : untuk keterangan lebih lanjut, silahkan kunjungi halaman berkut :http://rajaongkir.com/dokumentasi Download The Core Pada ebook kali ini implementasi API rajaongkir.com akan dilakukan pada bahasa pemrograman PHP, pastikan webserver lokal kamu berjalan dengan baik. Untuk kemudian menggunakan tambahan JQUERY silahkan download disini : http://code.jquery.com/jquery-2.1.3.min.js . JQUERY digunakan untuk bagian ajax dan DOMnya. Karena moto daari idmore adalah “Bui Beautiful and Powerful”, maka menggunakan skeleton sebagai framework frontendnya silahkan download disini : https://github.com/dhg/Skeleton/releases/download/2.0.4/Skeleton-2.0.4.zip.
  • 5. Directory Structure Agar hasilnya sesuai dengan yang ada di dokumen dan source yang disertakan silahkan buat struktur direktorinya menjadi seperti ini, untuk script.js, example.html, idmore.php dan process.php silahkan buat file baru sendiri.
  • 6. Start Code : 1st Membuat Frontend Copy Paste Pembahasan tentang front-end hanya sebatas file atau sintak yang diubah. Untuk memulai membuat frontendnya silahkan beralih ke file example.html, untuk kemudian masukan semua tag html dibawah ini kedalamnya. File : example.html <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="css/normalize.css"> <link rel="stylesheet" type="text/css" href="css/skeleton.css"> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/script.js"></script> <title>Penggunaan API RajaOngkir | IDMore</title> </head> <body> <div class="container"> <div class="row"> <br/> <div class="twelve columns"><h1>Hitung Ongkos Kirim</h1></div> </div> <div class="row"> <div class="twelve columns"><h5>Masukan Data</h5></div> </div> <div class="row"> <div class="two columns"> Asal<br/> <select id="oriprovince"> <option>Provinsi</option> </select>  </div> <div class="two columns"> <br/> <select id="oricity"> <option>Kota</option> </select>  </div> <div class="two columns"> Tujuan<br/> <select id="desprovince"> <option>Provinsi</option> </select>  </div> <div class="two columns"> <br/> <select id="descity">
  • 8.
  • 9. Start Code : 2nd Membuat backend Class Utama Untuk memudahkan pemanggilan data dan agar kode lebih ramping maka dibuatkah kelas utama yang akan digunakan untuk menjalankan berbagai fungsi yang berhubungan dengan raja ongkir. Didalam file idmore.php buat class baru bernama IdmoreRO, jika belum paham konsep dari class silahkan baca dokumentasi dari PHP.net di link ini : http://php.net/language.oop5. Didalam class IdmoreRO isi beberapa fungsi sesuai dengan fitur yang disediakan pada percobaan kali ini : file : idmore.php <?php /* * Rajaongkir cek harga * Code by @xyussanx :: idmore */ class IdmoreRO{ public function __construct() { } //menampilkan data provinsi public function showProvince() { } //menampilkan data kabupaten/kota berdasarkan id provinsi public function showCity($province) { } //hitung ongkir public function hitungOngkir($origin,$destination,$weight,$courier) { } } 3 fungsi yang dibuat pada class tersebut mempunyai tujuan masing : showProvince() Menampilkan semua provinsi yang ada di Indonesia, karena sebelum user memilih kota tujuan/asal sebelumnya user akan memilih provonso asal kota tersebut. showCity($province) Dari provinsi yang telah terpilih, maka diambil id provinsi yang terpilih tersebut untuk dijadikan parameter pada fungsi showCity sehingga returnnya hanya menampilkan daftar kota berdasarkan id parameter prvonsinya.
  • 10. hitungOngkir($origin,$destination,$weight,$courier) Merupakan fitur utama yaitu untuk menghitung ongkos kirim berdasarkan kota asal, kota tujua, berat kiriman dan kurir yang digunakan.
  • 11. Start Code : 3th Provinsi Menampilkan Data Provinsi Konsep awal adalah provinsi diload secara otomatis ketika halaman selesai diload, pada step 3 ini ada 3 fle yang diubah yaitu : script.js,idmore.php dan process.php. Pastikan kamu sudah mempunyai akun di rajaongkir.com, untuk kemudian mendapatkan secret key yang akan digunakan untuk menggunakan APInya. Untuk selanjutnya adalah membuat fungsi pemanggilan data provinsi di kelas IdMoreRO. Untuk memanggil data dari rajaonmgkir.com pada bahasa PHP menggunakan curl(Client URL Library). Inti dari Curl adalah mengirimkan request/ mendapat responses dari method POST tanpa menggunakan form dari tag HTML. Untuk lebih detailnya silahkan baca disini : http://php.net/manual/en/book.curl.php. Jika menggunakan paket dari XAMPP biasanya curl sudah include didalamnya dan siap untuk digunakan, tapi jika belum untuk pengguna Linux terutama Keluarga debian, curl bisa diinstal menggunakan $sudo apt-get install php5-curl untuk pengguna Mac / Windows silahkan cari di internet. Buat Fungsi Menampilkan Data Provinsi File : idmore.php , function :showProvince() public function showProvince() { $curl = curl_init();
  • 12. curl_setopt_array($curl, array( CURLOPT_URL => "http://rajaongkir.com/api/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( "xxxAPIKEYxxx" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { $result = 'error'; return 'error'; } else { return $response; } } Pada bagian “CURLOPT_HTTPHEADER ...”, sialhkan ganti “xxxAPIKEYxxx” dengan “key: API KEY” yang sudah didapatkan di akun rajaongkir.com. Cara kerjanya adalah user mengirimkan request ke url http://rajaongkir.com/api/starter/province dengan api key masing-masing. Karena tanpa tambahan parameter sehingga result JSONnya akan menampilkan seluruh data provinsi yang tercatat di rajaongkir. Membuat File Process File : process.php <?php require_once('idmore.php'); $IdmoreRO = new IdmoreRO(); if(isset($_GET['act'])): switch ($_GET['act']) { case 'showprovince': # code... break; default: # code... break; } endif; Require_once file idmore yang didalamnya tersedia class IdmoreRO. Instanisasi dilakukan pada variabel $IdmoreRo = new IdmoreR0(). Untuk memanggil data provinsi yang telah dibuat pada kelas sebelumnya, pada case 'showprovince' tambahkan beberapa line dibawah ini. case 'showprovince': $province = $IdmoreRO­>showProvince();
  • 13. echo $province; break; Silahkan cek dengan menggunakan browser, apakah result berupa json berisi data provinsi bisa sukses terpanggil sesuai dengan contoh dibawah. Ada kemungkinan result json tidak rapi seperti contoh, agar bisa rapi silahkan install json viewer untuk beberapa browser di link berikut : http://jsonview.com. Membuat AJAX dan DOM Menampilkan Data Provinsi Setelah response json berhasil didapatkan langkah berikutnya adalah sisi JavaScript untuk membuat AJAX dan DOMnya. file:script.js $(document).ready(function(){ loadProvinsi('#oriprovince'); loadProvinsi('#desprovince'); $('#oriprovince').change(function(){ alert('yussan'); }); $('#desprovince').change(function(){ alert('yussan'); }); }); function loadProvinsi(id){ $('#oricity').hide(); $('#descity').hide(); $(id).html('loading...');
  • 14. $.ajax({ url:'process.php?act=showprovince', dataType:'json', success:function(response){ $(id).html(''); province = ''; $.each(response['rajaongkir']['results'], function(i,n){ province = '<option  value=”'n['province_id']”>'+n['province']+'</option>'; province = province + ''; $(id).append(province); }); }, error:function(){ $(id).html('ERROR'); } }); } untuk kemudian jika dicek pada halaman example.html akan menampilkan data provinsi sebagai berikut. $(document).ready(function(){ adalah fungsi bawaan dari jquery yang artinya fungsi didalamnya baru dijalankan setelah halaman berhasil diload dengan sempurna. Fungsi yang otomatis dijalankan adalah loadProvinsi(id), dan yang menjadi parameternya adalah id dari id select input milik oriprovince dan desprovince. Fungsi loadProvince(id) Ketika eksekusi fungsi ini maka secara otomatis select kota akan disembunyikan, menggunakan hide(). Proses utama adalah penggunakan fungsi ajax() bawaan dari jquery, silahkan pelajari lebih lanjut di http://api.jquery.com/jquery.ajax/. $.each() dan append() Response berupa JSON melalui proses looping(perulangan), dimasukan kedalam variabel province untuk kemudian menggunakan fungsi append() dari jquery digunakan untuk menambah option baru didalam input select. Tes halaman example.html, maka mendapatkan data provinsi didalam input select sebagai berikut.
  • 15. Menampilkan Data Kota/Kabupaten Berdasarkan Provinsi Konsep untuk menampilkan data kota berdsarkan provinsi sama dengan menampilkan data provinsi, sehingga penjelasan tidak terlalu mendalam. Kembali ke class utama, tujuan utamanya adalah membuat fungsi untuk menampilkan kota berdasarkan id province. Pada fungsi showCity(), sialahkan uabh seperti contoh dibawah ini. Jangan lupa untuk mengubah keynya sesuai dengan key masing-masing. File : idmore.php public function showCity($province) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://rajaongkir.com/api/starter/city? province=$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: xxx" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) {
  • 16. $result = 'error'; return 'error'; } else { return $response; } } untuk editing selanjutnya pada file proses.php, dengan menambahkan action untuk show city, menjadi sebagai berikut. file : process.php case 'showcity': $idprovince = $_GET['province']; $city = $IdmoreRO­>showCity($idprovince); echo $city; break; default: sehingga jika dites menggunakan browser, sebagai contoh menampilkan kota-kota untuk provinsi dengan id 13, menghasilkan response seperti ini.
  • 17. Dan url siap digunakan untuk ajax. Sekarang adalah tahap pembuatan AJAX dan DOMnya, kembali ke script.js, ada 2 perubahan yang akan dilakukan disini.pertama adalah merubah isi on document readinya. File : script.js $(document).ready(function(){ loadProvinsi('#oriprovince'); loadProvinsi('#desprovince'); $('#oriprovince').change(function(){ $('#oricity').show(); var idprovince = $('#oriprovince').val(); loadCity(idprovince,'#oricity') }); $('#desprovince').change(function(){ $('#descity').show(); var idprovince = $('#desprovince').val(); loadCity(idprovince,'#descity') }); }); baris $('#oriprovince').change(...) dan $('#desprovince').change(...) dimaksudkan fungsi baru dieksekusi ketika user melakukan pemilihan pada data provinsi. Fungsi yang diekseskusi adalah sebagai berikut. File : script.js function loadCity(idprovince,id){ $.ajax({ url:'process.php?act=showcity', dataType:'json', data:{province:idprovince}, success:function(response){ $(id).html(''); city = ''; $.each(response['rajaongkir']['results'], function(i,n){ city = '<option value="'+n['city_id'] +'">'+n['city_name']+'</option>'; city = city + ''; $(id).append(city); }); }, error:function(){ $(id).html('ERROR'); } }); } Jika di tes di browser maka akan menghasilkan sebagai berikut:
  • 18.
  • 19. Start Code : 4th Hitung Ongkir Tahap Hitung Ongkir Merupakan tahap akhir dari pembuatan sistem ini. Tahap pembuatannya masih sama, dimulai dengan membuat fungsi diclass utama, manajemen proses di proses.php, dan membuat AJAX dan DOM di script.js, serta perubahan sedikit pada file example.html. Ubah example.html Tujuannya adalah menambah input untuk berat kiriman, cukup edit pada bagian layanan menjadi seperti ini. File : example.html <div class="two columns"> Layanan<br/> <select id="service" <option>JNE</option> <option>POS</option> <option>TIKI</option> </select>  <br/> Berat (gram)<br/> <input  style="width:100px" id="berat" type="number"> </div> Dan menghasilkan tampilan sebagai berikut Fungsi hitungOngkir() Parameter untuk menjalankan fungsi ini adalah idkota asal, idkotatujuan, id kurir, dan berat paket.
  • 20. Pada fungsi hitungOngkir(), ubah menjadi seperti berikut : *)jangan lupa memasukan api key masing-masing file : idmore.php //hitung ongkir public function hitungOngkir($origin,$destination,$weight,$courier) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://rajaongkir.com/api/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=$origin&destination=$destination&weight=$weight&courier=$courier", CURLOPT_HTTPHEADER => array( "key: $this­>key" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { $result = 'error'; return 'error'; } else { return $response; } } Selanjutnya beralih ke bagian manajemen process, pindah ke file process.php, dan tambahkan kondisi baru sebagai berikut. File : process.php case 'cost': $origin = $_GET['origin']; $destination = $_GET['destination']; $weight = $_GET['weight']; $courier = $_GET['courier']; $cost = $IdmoreRO­>hitungOngkir($origin,$destination,$weight, $courier); echo $cost; break; untuk kemudian tes do browser, apakah mendapatkan response yang sesuai.
  • 21. Pembuatan AJAX dan DOM Untuk Hitung Ongkir Metode kali ini berbeda, untuk parsing JSON yang didapat dari raja ongkit, tidak menggunakan javascript melaninkan menggunakan php. Hasil parsing dari PHP dijadikan response dari AJAX yang telah dibuat. Untuk itu kita kembali lagi ke process.php ubah pada bagian case 'cost' nya menjadi seperti dibawah ini. file:process.php case 'cost': $origin = $_GET['origin']; $destination = $_GET['destination']; $weight = $_GET['weight']; $courier = $_GET['courier']; $cost = $IdmoreRO­>hitungOngkir($origin,$destination,$weight, $courier); //parse json $costarray = json_decode($cost); $results = $costarray­>rajaongkir­>results; if(!empty($results)): foreach($results as $r): foreach($r­>costs as $rc): foreach($rc­>cost as $rcc): echo "<tr><td>$r­>code</td><td>$rc­ >service</td><td>$rc­>description</td><td>$rcc­ >etd</td><td>".number_format($rcc­>value)."</td></tr>";
  • 22. endforeach; endforeach; endforeach; endif; //end of parse json break; Json hasil dari request ke API rajaongkir untuk kemudian di decode menjadi array di PHP menggunakan json_encode() untuk mempelajari lebih lanjut silahkan cek link berikut http://php.net/manual/en/ref.json.php . Setelah menjadi array proses berikutnya menjadi lebih muda menggunakan foreach(). Array yang dihasilkan dari hasil encode_json() terdiri dari 3 lapisan sehingga membutuhkan 3 kali foreach, seperti inilah lapisan array tersebut. Rajaongkir->results results->costs (kurir) costs->detail (seperti paket kirim,lama hari dan total biaya) Untuk tes apakah encoding dan looping berhasil dijalankan tes menggunakan url secara langsung. Jika hasilnya sudah sesuai dengan gambar diatas berarti AJAX dan DOMnya siap dibuat. Untuk selanjutnya kembali ke file script.js untuk dibuat AJAX dan DOMnya. Pada function cekHarga() yang sudah dibuat sebelumnya, silahkan edit menjadi seperti ini. File : script.js function cekHarga(){ var origin = $('#oricity').val(); var destination = $('#descity').val(); var weight = $('#berat').val(); var courier = $('#service').val(); $.ajax({ url:'process.php?act=cost', data: {origin:origin,destination:destination,weight:weight,courier:courier}, success:function(response){ $('#resultsbox').html(response); }, error:function(){ $('#resultsbox').html('ERROR'); } }); }  yang menjadi perbedaan adalah dihilangkannya data:'jsonfile' dan response on success nya. Maksud dari line adalah semua tampilan yang dihasilkan oleh url akan menjadi response bagi fungsi ini.
  • 23. Agar tampilan lebih rapi lakukan sedikir perubahan pada file example.html pada line table menjadi seperti dibawah ini. <table class="twelve columns"> <thead> <tr> <th>Kurir</th> <th>Servis</th> <th>Deskripsi Servis</th> <th>Lama Kirim (hari)</th> <th>Total Biaya (Rp)</th> </tr> </thead> <tbody id="resultsbox"></tbody> </table>
  • 24. Testing Hitung Ongkir Test aplikasi Langsung saja buka example.html, masukan provinsi dan kota asal dan tujuan, kurir dan berat,klik tombol cek harga, maka data yang diminta akan tampil dibawahnya. Cukup sekian dan ebook ini ditutup sampai sini.
  • 25. Link Hitung Ongkir Source Code https://github.com/idmore/rajaongkir.com/tree/master/hitung%20biaya%20-%20jquery. More info https://twitter.com/xyussanx 3th Party http://rajaongkir.com http://api.jquery.com http://skeleton.com http://php.net