Klien API RajaOngkir untuk PHP
Paket pustaka PHP untuk mengakses API RajaOngkir dengan mudah.
Fitur
- Daftar semua provinsi.
- Ambil provinsi berdasarkan ID.
- Pencarian provinsi berdasarkan nama.
- Daftar semua kota/kabupaten.
- Daftar kota/kabupaten berdasarkan ID provinsinya.
- Ambil kota/kabupaten berdasarkan ID.
- Pencarian kota/kabupaten berdasarkan nama.
- (Pro) Daftar kecamatan berdasarkan ID Kota.
- (Pro) Ambil kecamatan berdasarkan ID.
- (Pro) Pencarian kecamatan berdasarkan nama.
- Ambil biaya pengiriman (ongkos kirim/ongkir).
To Do
- Fitur di tipe akun Basic dan Pro.
- Pencarian fuzzy (menggunakan Fuse).
Persyaratan Sistem
- PHP 7.0 (direkomendasikan untuk menggunakan PHP 7.1 atau lebih tinggi).
Instalasi
Gunakan Composer untuk menginstal pustaka ini.
$ composer require kavist/rajaongkir:^1.1
Anda juga bisa menambahkan dependensi ke composer.json
.
{
"require": {
"kavist/rajaongkir": "^1.1"
}
}
Integrasi ke Laravel
Bagi pengguna Laravel 5.5 atau lebih tinggi, paket ini akan tersedia secara otomatis berkat fitur auto-discovery. Anda bisa langsung lanjut ke bagian konfigurasi untuk Laravel di bawah.
Bagi pengguna Laravel sebelum versi 5.5, kode dalam proyek ini tidak dites di versi Laravel dibawah 5.5. Jadi, dimohon pengertiannya jika pustaka ini tidak dapat berjalan dengan semestinya.
Konfigurasi
Untuk pengguna PHP native, deklarasikan kunci API sebagai parameter ketika Anda
menginstansiasi class Kavist\RajaOngkir\RajaOngkir
.
$rajaOngkir = new RajaOngkir('isi_API_key_Anda_disini');
Konfigurasi untuk Laravel
Anda cukup mengatur nilai RAJAONGKIR_API_KEY
yang berisi kunci API ke environment variable.
RAJAONGKIR_API_KEY=isi_API_key_Anda_disini
Anda juga bisa menerbitkan berkas konfigurasi paket ini untuk konfigirasi lebih jauh.
$ php artisan vendor:publish --provider="Kavist\RajaOngkir\Providers\LaravelServiceProvider"
Penggunaan
Provinsi
Daftar provinsi
Untuk mendapatkan daftar provinsi, gunakan metode provinsi()->all()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarProvinsi = $rajaOngkir->provinsi()->all();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarProvinsi = RajaOngkir::provinsi()->all();
Ambil provinsi berdasarkan ID
Untuk mendapatkan provinsi berdasarkan ID, gunakan metode provinsi()->find(int|string $id)
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarProvinsi = $rajaOngkir->provinsi()->find(11);
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarProvinsi = RajaOngkir::provinsi()->find(11);
Pencarian provinsi berdasarkan nama
Untuk mencari provinsi berdasarkan nama, gunakan metode provinsi()->search(string $searchTerm)->get()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarProvinsi = $rajaOngkir->provinsi()->search('ja')->get();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarProvinsi = RajaOngkir::provinsi()->search('ja')->get();
Kota/Kabupaten
Daftar kota/kabupaten
Untuk mendapatkan daftar kota/kabupaten, gunakan metode kota()->all()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$$daftarKota = $rajaOngkir->kota()->all();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKota = RajaOngkir::kota()->all();
Ambil kota/kabupaten berdasarkan ID
Untuk mendapatkan kota/kabupaten berdasarkan ID, gunakan metode kota()->find(int|string $id)
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarKota = $rajaOngkir->kota()->find(80);
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKota = RajaOngkir::kota()->find(80);
Daftar kota/kabupaten berdasarkan ID provinsinya
Untuk mendapatkan kota/kabupaten berdasarkan ID provinsinya, gunakan metode kota()->dariProvinsi(int|string $provinceId)->get()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarKota = $rajaOngkir->kota()->dariProvinsi(11)->find(80);
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKota = RajaOngkir::kota()->dariProvinsi(11)->find(80);
Pencarian kota/kabupaten berdasarkan nama
Untuk mencari kota/kabupaten berdasarkan nama, gunakan metode kota()->search(string $searchTerm)->get()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarKota = $rajaOngkir->kota()->search('su')->get();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKota = RajaOngkir::kota()->search('su')->get();
Anda juga bisa mencari kota/kabupaten dari provinsi tertentu dengan memanggil
metode dariProvinsi()
sebelum memanggil metode search()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$daftarKota = $rajaOngkir->kota()->dariProvinsi(11)->search('su')->get();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKota = RajaOngkir::kota()->dariProvinsi(11)->search('su')->get();
Kecamatan
API ini hanya tersedia untuk paket
Pro
. Periksa dokumentasi untuk melihat perbandingan fitur yang tersedia
Ambil Kecamatan Berdasarkan ID
Untuk mendapatkan kecamatab berdasarkan ID, gunakan metode kecamatan()->find(int|string $id)
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey, 'pro');
$daftarKecamatan = $rajaOngkir->kecamatan()->find(80);
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKecamatan = RajaOngkir::kecamatan()->find(80);
Daftar Kecamatan Berdasarkan ID Kota
Rajaongkir tidak menyediakan API untuk menarik semua data kecamatan, melainkan harus difilter berdasarkan ID kotanya. Untuk mendapatkan kecamatan berdasarkan ID kotanya, gunakan metode kecamatan()->dariKota(int|string $cityId)->get()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey, 'pro');
$daftarKecamatan = $rajaOngkir->kecamatan()->dariKota(39)->get();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKecamatan = RajaOngkir::kota()->dariKota(39)->get();
Pencarian Kecamatan Berdasarkan Nama
Anda bisa mencari kecamatan dari kota tertentu dengan memanggil
metode dariKota()
sebelum memanggil metode search()
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey, 'pro');
$daftarKecamatan = $rajaOngkir->kecamatan()->dariKota(39)->search('ban')->get();
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$daftarKecamatan = RajaOngkir::kecamatan()->dariKota(39)->search('ban')->get();
Pencarian biaya pengiriman
Untuk mengambil biaya pengiriman, gunakan metode ongkosKirim(array $payload)
.
// Native PHP
use Kavist\RajaOngkir\RajaOngkir;
$rajaOngkir = new RajaOngkir($apiKey);
$ongkir = $rajaOngkir->ongkosKirim([
'origin' => 155, // ID kota/kabupaten asal
'destination' => 80, // ID kota/kabupaten tujuan
'weight' => 1300, // berat barang dalam gram
'courier' => 'jne' // kode kurir pengiriman: ['jne', 'tiki', 'pos'] untuk starter
]);
// untuk paket Pro perlu ditambahkan tipe origin dan tipe destination karena mendukung pencarian sampai kecamatan
$ongkir = $rajaOngkir->ongkosKirim([
'origin' => 501, // ID kota/kabupaten asal
'originType' => 'city', // tipe asal city atau subdistrict
'destination' => 574, // ID kota/kabupaten tujuan
'destinationType' => 'subdistrict', // tipe tujuan city atau subdistrict
'weight' => 1300, // berat barang dalam gram
'courier' => 'jne:pos:tiki' // kode kurir pengiriman, bisa digabungkan dengan pemisah tanda ":" untuk pencarian lebih dari satu kurir
]);
// Laravel
use Kavist\RajaOngkir\Facades\RajaOngkir;
$ongkir = RajaOngkir::ongkosKirim([
'origin' => 155, // ID kota/kabupaten asal
'destination' => 80, // ID kota/kabupaten tujuan
'weight' => 1300, // berat barang dalam gram
'courier' => 'jne' // kode kurir pengiriman: ['jne', 'tiki', 'pos'] untuk starter
]);
// untuk paket Pro perlu ditambahkan tipe origin dan tipe destination karena mendukung pencarian sampai kecamatan
$ongkir = RajaOngkir::ongkosKirim([
'origin' => 501, // ID kota/kabupaten asal
'originType' => 'city', // tipe asal city atau subdistrict
'destination' => 574, // ID kota/kabupaten tujuan
'destinationType' => 'subdistrict', // tipe tujuan city atau subdistrict
'weight' => 1300, // berat barang dalam gram
'courier' => 'jne:pos:tiki' // kode kurir pengiriman, bisa digabungkan dengan pemisah tanda ":" untuk pencarian lebih dari satu kurir
]);
Selain metode ongkosKirim()
, juga tersedia metode ongkir()
dan biaya()
sebagai
alias dari metode ongkosKirim()
.
Pengujian
Jalankan pengujian dengan perintah berikut.
$ vendor/bin/phpunit
Log Perubahan
Silakan membaca log perubahan untuk informasi lengkap.
Ingin berkontribusi?
Silakan membaca tata cara berkontribusi untuk informasi lengkap.
Kontributor
Lisensi
The MIT License (MIT). Silakan membaca berkas lisensi untuk informasi lengkap.