Halo teman-teman semuanya, di artikel kali ini kita semua akan belajar bagaimana cara mengintegrasikan Laravel dengan RajaOngkir untuk mendapatkan biaya ongkos kirim secara otomatis.
RajaOngkir merupakan salah satu provider penyedia layanan integrasi kurir paling lengkap dan populer di Indonesia, di dalam RajaOngkir terdapat beberapa jasa kurir, seperti : JNE, J&T, POS dan lain-lain. Di dalam RajaOngkir ada 3 jenis paket yang bisa kita coba dan tentu saja ada beberapa perbedaan diantara ketiga paket tersebut, kurang lebih seperti berikut ini :
Fitur |
Starter |
Basic |
Pro |
Periksa ongkos kirim JNE |
Ya |
Ya |
Ya |
Periksa ongkos kirim POS Indonesia |
Ya |
Ya |
Ya |
Periksa ongkos kirim TIKI |
Ya |
Ya |
Ya |
Periksa ongkos kirim PCP |
Tidak |
Ya |
Ya |
Periksa ongkos kirim ESL |
Tidak |
Ya |
Ya |
Periksa ongkos kirim RPX |
Tidak |
Ya |
Ya |
Periksa ongkos kirim internasional |
Tidak |
Ya |
Ya |
Lacak paket (resi) JNE |
Tidak |
Ya |
Ya |
Lacak paket selain JNE |
Tidak |
Tidak |
Ya |
Periksa ongkir sampai kecamatan |
Tidak |
Tidak |
Ya |
Periksa ongkir berat lebih dari 30kg |
Tidak |
Tidak |
Ya |
Server terpisah* |
Tidak |
Tidak |
Ya |
Tambahan fitur lain** |
Tidak |
Tidak |
Ya |
Untuk Tipe Package dari RajaOngkir ada 3 macam, yaitu :
- Starter - Gratis
- Basic - Rp. 200.000*
- Pro - Rp. 500.000*
Di dalam tutorial kali ini, kita semua akan menggunakan jenis paket yang Starter
, karena paket ini adalah versi GRATIS dari RajaOngkir.
Langkah 1 - Daftar Akun RajaOngkir
Untuk bisa menggunakan layanan dari RajaOngkir tentu saja kita harus memiliki yang namanya API Key
, untuk teman-teman yang ingin mendapatkan API Key
tersebut, silahkan daftar akun di situs resmi dari RajaOngkir : https://rajaongkir.com/
Atau bisa melalui link berikut ini https://rajaongkir.com/akun/daftar, setelah berhasil mendaftar, silahkan masuk dan teman-teman bisa klik di menu API Key
, kurang lebih tampilannya seperti berikut ini :
Di atas, kita sudah berhasil mendapatkan API Key
dari RajaOngkir, selanjutnya kita akan gunakan API Key
tersebut di dalam Laravel.
Langkah 2 - Membuat Controller RajaOngkir
Sekarang, kita lanjutkan untuk membuat sebuah controller yang akan digunakan untuk memanggil endpoint dari RajaOngkir. Silahkan Jalankan perintah berikut ini di dalam terminal/CMD :
php artisan make:controller RajaOngkirController
Jika perintah di atas berhasil, maka kita akan mendapat 1 file baru di dalam app/Http/Controllers/RajaOngkirController.php
, silahkan buka file tersebut dan ubah kodenya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class RajaOngkirController extends Controller
{
/**
* API_KEY
*
* @var string
*/
protected $API_KEY = 'paste_disini_API_KEY_RajaOngkir';
/**
* getProvinces
*
* @return void
*/
public function getProvinces()
{
$response = Http::withHeaders([
'key' => $this->API_KEY
])->get('https://api.rajaongkir.com/starter/province');
$provinces = $response['rajaongkir']['results'];
return response()->json([
'success' => true,
'message' => 'Get All Provinces',
'data' => $provinces
]);
}
/**
* getCities
*
* @param mixed $id
* @return void
*/
public function getCities($id)
{
$response = Http::withHeaders([
'key' => $this->API_KEY
])->get('https://api.rajaongkir.com/starter/city?&province='.$id.'');
$cities = $response['rajaongkir']['results'];
return response()->json([
'success' => true,
'message' => 'Get City By ID Provinces : '.$id,
'data' => $cities
]);
}
/**
* checkOngkir
*
* @param mixed $request
* @return void
*/
public function checkOngkir(Request $request)
{
$response = Http::withHeaders([
'key' => $this->API_KEY
])->post('https://api.rajaongkir.com/starter/cost', [
'origin' => $request->origin,
'destination' => $request->destination,
'weight' => $request->weight,
'courier' => $request->courier
]);
$ongkir = $response['rajaongkir']['results'];
return response()->json([
'success' => true,
'message' => 'Result Cost Ongkir',
'data' => $ongkir
]);
}
}
Di atas, pertama kita import Facades Http
atau Guzzle
, karena kita akan menggunakan ini untuk melakukan request ke dalam endpoint RajaOngkir nantinya.
use Illuminate\Support\Facades\Http;
Selanjutnya, kita buat 1 properti dengan nama $API_KEY
, ini akan berisi API Key
yang sudah kita dapatkan dari website RajaOngkir.
/**
* API_KEY
*
* @var string
*/
protected $API_KEY = 'paste_disini_API_KEY_RajaOngkir';
Kemudian, di dalam RajaOngkirController
kita tambahkan 3 method/function yaitu :
- getProvinces
- getCities
- checkOngkir
getProvinces
Function ini akan digunakan untuk mendapatkan data semua provinsi yang ada di Indonesia. Disini kita akan mengembalikan data berupa format JSON.
Disini kita melakukan request dengan method GET
ke endpoint RajaOngkir : https://api.rajaongkir.com/starter/province dimana kita juga menggunakan Header
untuk mengirimkan Api Key
sebagai authorization.
$response = Http::withHeaders([
'key' => $this->API_KEY
])->get('https://api.rajaongkir.com/starter/province');
Jika data berhasil di dapatkan, kita akan tampung dulu di dalam variable $provinces
.
$provinces = $response['rajaongkir']['results'];
Setelah itu, kita return dengan format JSON, kurang lebih seperti berikut ini :
return response()->json([
'success' => true,
'message' => 'Get All Provinces',
'data' => $provinces // <-- data provinces
]);
getCities
Function ini akan digunakan untuk menadapatkan data kota/kabupaten berdasarkan ID provinsi, jika kita perhatikan di dalam parameter function getCities, kita menggunakan $id
, dimana variable tersebut nanti akan berupa ID dari provinsi.
Disini kita akan melakukan request dengan method GET
ke dalam endpoint RajaOngkir : https://api.rajaongkir.com/starter/city?&province=. Disini kita juga menggunakan Header
untuk mengirimkan Api Key
RajaOngkir untuk proses Authorization.
$response = Http::withHeaders([
'key' => $this->API_KEY
])->get('https://api.rajaongkir.com/starter/city?&province='.$id.'');
Setelah data kota/kabupaten berdasarkan ID provinsi sudah di dapatkan, maka kita akan simpan terlebih dahulu di dalam variable $cities
.
$cities = $response['rajaongkir']['results'];
Kemudian kita return ke dalam format JSON, kurang lebih seperti berikut ini :
return response()->json([
'success' => true,
'message' => 'Get City By ID Provinces : '.$id,
'data' => $cities
]);
checkOngkir
Function ini akan digunakan untuk proses menghitung biaya ongkos kirim, disini kita melakukan request dengan method POST
ke dalam endpoint RajaOngkir : https://api.rajaongkir.com/starter/cost. Sama seperti sebelumnya, kita juga menggunakan Header
yang berisi Api Key
untuk proses Authorization.
Dan di dalam method POST
, kita juga mengirimkan beberapa data untuk proses menghitung biaya ongkos kirim, yaitu :
-
origin
- berisi ID kota/kabupate asal
-
destination
- berisi ID kota/kabupaten tujuan
-
weight
- berisi berat produk/barang (dalam satuan Gram)
-
courier
- berisi nama kuris, seperti : jne, pos, tiki
$response = Http::withHeaders([
'key' => $this->API_KEY
])->post('https://api.rajaongkir.com/starter/cost', [
'origin' => $request->origin,
'destination' => $request->destination,
'weight' => $request->weight,
'courier' => $request->courier
]);
Jika berhasil, maka hasil dari response akan di simpan di dalam variable $ongkir
.
$ongkir = $response['rajaongkir']['results'];
Setelah itu, kita lakukan return ke dalam format JSON, kurang lebih seperti berikut ini :
return response()->json([
'success' => true,
'message' => 'Result Cost Ongkir',
'data' => $ongkir
]);
Langkah 3 - Menambahkan Route
Sekarang, kita lanjutkan untuk menambahkan route untuk controller yang sudah kita buat di atas, silahkan buka file routes/api.php
kemudian tambahkan kode berikut ini :
Route::get('/provinces', [App\Http\Controllers\RajaOngkirController::class, 'getProvinces']);
Route::get('/cities/{id}', [App\Http\Controllers\RajaOngkirController::class, 'getCities']);
Route::post('/checkOngkir', [App\Http\Controllers\RajaOngkirController::class, 'checkOngkir']);
Langkah 4 - Uji Coba Raja Ongkir
Sekarang, kita akan lakukan uji coba untuk mendapatkan data provinsi. Dan untuk tools untuk testing kita akan menggunakan Postman
, jika teman-teman belum memilikinya, silahkan untuk mengunduhnya di halaman berikut ini : https://www.postman.com/downloads/.
Uji Coba Data Provinsi
Sekarang, silahkan buka Postman, kemudian masukkan URL berikut ini : http://localhost:8000/api/provinces dan untuk method-nya silahkan pilih GET
. Kemudian klik Send
, jika berhasil maka kita akan mendapatkan list data provinsi di seluruh Indonesia.
Uji Coba Data Kota/Kabupaten Berdasarkan Provinsi
Sekarang, kita lanjutkan untuk mencari data kota/kabupaten berdasarkan ID provinsi, dalam contoh kali ini, kita akan menggunakan provinsi Bali, dimana untuk provinsi Bali jika kita lihat memiliki ID provinsi 1.
Sekarang, silahkan buka Postman, dan masukkan URL berikut ini : http://localhost:8000/api/cities/1. dan untuk method-nya silahkan pilih GET
. Kemudian klik Send
.
Jika berhasil, maka kurang lebih kita akan mendapatkan list data kota/kabupaten di dalam provinsi Bali.
Uji Coba Menghitung Biaya Ongkos Kirim
Sekarang, kita akan lakukan uji coba untuk proses menghitung biaya ongkos kirim, disini kita akan simulasikan untuk mengirim dari kota/kabupaten Bandung dari provinsi Bali ke kota/kabupaten Demak dari provinsi Jawa Tengah.
Silahkan buka Postman, dan masukkan URL berikut ini : http://localhost:8000/api/checkOngkir. Dan untuk method-nya silahkan pilih POST
. Kemudian klik tab Body
dan masukkan beberapa key
dan value
berikut ini di dalam form-data
:
KEY |
VALUE |
origin |
17 |
destination |
113 |
weight |
1000 |
courier |
jne |
KETERANGAN : berikut ini penjelasan dari table diatas.
- origin : merupakan ID kota/kabupaten asal, dalam contoh di atas adalah 17.
- destination : merupakan ID kota/kabupaten tujuan, dalam contoh di atas aalah 113
- weight : merupakan berat barang yang dikirim, ini dalam satuan Gram.
- courier : merupakan jasa kurir yang di gunakan, dalam contoh di atas adalah jne
Setelah semua sudah benar, silahkan klik Send
, jika berhasil kurang lebih tampilannya seperti berikut ini :
Di atas, kita berhasil mendapatkan response dalam bentuk format JSON, dengan membawa beberapa data, seperti layanan kurir, harga, estimasi hari dan lain-lain.
Sampai disini pembahasan bagaimana cara mengintegrasikan RajaOngkir dengan Laravel, di artikel selanjutnya kita akan belajar bagaimana cara menggunakan API tersebut di dalam project Vue Js.
Terima Kasih
INFO :