Tutorial Rajaongkir dengan Laravel, Vue Js dan Tailwind CSS#2 : Integrasi Laravel dengan RajaOngkir


Tutorial Rajaongkir dengan Laravel, Vue Js dan Tailwind CSS#2 : Integrasi Laravel dengan RajaOngkir

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 :


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami