API BION
PHP 8.x + MySQL Docs
Admin Dashboard
Dokumentasi Resmi API BION

Unified Gateway & Logistics Middleware

API BION adalah platform pintu middleware internal terpusat berbasis PHP 8.x + MySQL. Berfungsi menghubungkan toko online, WooCommerce, aplikasi web, dan mobile app ke berbagai vendor pengiriman (Orderia Logistics API) dan WhatsApp Gateway dengan cukup 1 buah API Key tanpa mengekspos kredensial vendor rahasia.

Kredensial Aman

Partner ID & Token Orderia disuntikkan secara otomatis di sisi server.

Multi-Ekspedisi

Cek tarif & booking JNE, SiCepat, J&T, Lion, POS, Anteraja, Wahana, dsb.

Zero Node.js Daemon

Mudah di-deploy di ServerAvatar, VPS, atau CPanel dengan native PHP.

Autentikasi Request

Setiap request ke endpoint gateway /v1/* wajib menyertakan API Key aktif melalui salah satu header HTTP berikut:

Metode 1: Header X-API-Key (Rekomendasi)
X-API-Key: bion_live_8f3a9b1c7e2d4f5a6b0c1d2e
Metode 2: Authorization Bearer
Authorization: Bearer bion_live_8f3a9b1c7e2d4f5a6b0c1d2e

Rate Limiting & Status Code

BION Gateway menerapkan Token Bucket rate limiter per API Key (default: 120 request / menit).

HTTP Status Penyebab Solusi Developer
200 OK Request berhasil diproses -
400 Bad Request Format body JSON tidak valid atau parameter wajib tidak ada Periksa payload body dan format kode wilayah
401 Unauthorized API Key kosong atau tidak terdaftar Sertakan header X-API-Key yang valid
403 Forbidden API Key tidak memiliki akses ke service tersebut Aktifkan permission layanan di menu API Key Manager
429 Too Many Requests Melebihi batas rate limit per menit Perbesar rate limit di Dashboard Bion
502 Bad Gateway Gagal menjangkau server Orderia Logistics Periksa Partner ID dan Token di Provider Settings

Referensi Endpoint Gateway

POST /v1/orderia/ongkir

Menghitung tarif ongkos kirim real-time dari multi-kurir (JNE, SiCepat, J&T, Lion, POS, dsb).

Request Body Parameters (JSON)
Field Tipe Wajib? Deskripsi
origin Object / String Wajib Kode wilayah asal, misal: {"code": "34.04.07"} atau 501
destination Object / String Wajib Kode wilayah tujuan, misal: {"code": "31.71.01"} atau 1205
weight Number Wajib Berat barang (dalam KG atau Gram, auto-convert)
packagePrice Integer Opsional Nilai barang dalam rupiah (untuk asuransi/COD)
logistics Array Opsional Filter kurir: ["jne", "sicepat", "jnt"] (kosong = semua)
isCod Boolean Opsional True jika opsi Cash on Delivery diaktifkan
Contoh Request Kode

                    
Contoh Response (HTTP 200 OK) application/json
{
  "code": 200,
  "status": "success",
  "data": [
    {
      "logistic": "JNE",
      "service": "REG",
      "service_name": "Reguler Service",
      "tariff": 22000,
      "estimated_days": "1-2",
      "is_cod_available": true,
      "logo": "/assets/couriers/jne.png"
    },
    {
      "logistic": "SICEPAT",
      "service": "SIUNT",
      "service_name": "SiUntung",
      "tariff": 20000,
      "estimated_days": "1-2",
      "is_cod_available": true,
      "logo": "/assets/couriers/sicepat.png"
    }
  ]
}
POST /v1/orderia/order

Booking order pengiriman, generate nomor resi (AWB), dan jadwalkan pickup/dropoff.

Contoh Request (PHP cURL)

                    
Contoh Response Sukses
{
  "code": 200,
  "status": "success",
  "message": "Order pengiriman berhasil dibuat",
  "data": {
    "order_id": "ORD-20260824-88912",
    "reference_id": "ORDER-WOO-100234",
    "waybill_no": "JNE01928374619",
    "logistic": "JNE",
    "service": "REG",
    "shipping_cost": 22000,
    "status": "waiting_pickup",
    "created_at": "2026-08-24 08:30:00"
  }
}
GET /v1/orderia/order/{id_atau_resi}/track

Lacak posisi dan riwayat perjalanan paket secara real-time berdasarkan nomor resi.

Contoh cURL CLI

                    
POST /v1/orderia/order/print

Menghasilkan file PDF label pengiriman thermal 100x150mm atau A4 siap cetak printer bluetooth / thermal.

// Payload POST:
{
  "order_ids": ["ORD-20260824-88912"],
  "format": "thermal" // atau "a4"
}

// Response:
{
  "code": 200,
  "status": "success",
  "pdf_url": "https://api.bion.id/assets/labels/print_batch_89234.pdf"
}
GET /v1/orderia/district/search?q={keyword}

Pencarian kecamatan instan untuk fitur autosearch autocomplete di form checkout.

// Request: GET /v1/orderia/district/search?q=sleman
// Response:
{
  "code": 200,
  "data": [
    {
      "code": "34.04.07",
      "district_name": "Depok",
      "city_name": "Kab. Sleman",
      "province_name": "D.I. Yogyakarta",
      "postal_code": "55281"
    }
  ]
}
POST /v1/wa/send-message

Kirim notifikasi otomatis nomor resi & update pesanan langsung ke WhatsApp pelanggan.

{
  "phone": "081234567890",
  "message": "Halo Budi! Pesanan Anda telah dikirim via JNE REG. Resi: JNE01928374619. Lacak: https://api.bion.id/widget-ongkir.html"
}

Official PHP SDK Helper (BionClient.php)

Class PHP native siap pakai tanpa dependency eksternal untuk semua project PHP.

Cara Penggunaan Cepat:
<?php
require_once __DIR__ . '/src/BionClient.php';

use App\BionClient;

// 1. Buat Instance Client
$bion = new BionClient(
    apiKey: 'bion_live_8f3a9b1c7e2d4f5a6b0c1d2e',
    baseUrl: 'https://api.bion.id'
);

// 2. Hitung Ongkir Multi-Kurir
$rates = $bion->calculateOngkir(
    originDistrictCode: '34.04.07',      // Sleman
    destinationDistrictCode: '31.71.01', // Gambir Jakarta
    weightKgOrGrams: 1.0,
    itemValue: 150000,
    couriers: ['jne', 'sicepat', 'jnt']
);

print_r($rates);

// 3. Lacak Resi
$track = $bion->trackOrder('JNE01928374619');
print_r($track);
?>

Integrasi WordPress / WooCommerce Plugin

Tambahkan snippet ini ke file functions.php tema Anda untuk kalkulasi ongkir Orderia otomatis.


            

Panduan Embed Widget Cek Ongkir

Pasang widget cek ongkir interaktif ke website HTML, WordPress, Shopify, atau Landing Page Anda.

Buka Widget Fullscreen
HTML Iframe Embed Code:
<!-- Embed Widget Cek Ongkir API BION -->
<iframe 
    src="https://api.bion.id/widget-ongkir.html" 
    width="100%" 
    height="680px" 
    frameborder="0" 
    style="border: none; border-radius: 16px; box-shadow: 0 10px 30px rgba(0,0,0,0.15);"
    loading="lazy">
</iframe>