Layang Docs

KiriminAja Integration Guide

Panduan lengkap untuk mengintegrasikan KiriminAja Mitra API ke dalam aplikasi Amoura Skin

KiriminAja Integration Guide

Panduan lengkap untuk mengintegrasikan KiriminAja Mitra API ke dalam aplikasi Amoura Skin.

KiriminAja adalah aggregator logistik yang mendukung berbagai ekspedisi seperti JNE, J&T, SiCepat, AnterAja, dan lainnya dengan fitur COD dan Non-COD.



Daftar Isi

  1. Mendapatkan API Key
  2. Konfigurasi Environment
  3. Existing Service Implementation
  4. API Endpoints
  5. Flow Integrasi
  6. Webhook Setup
  7. Next Steps

1. Mendapatkan API Key

Copy API Key

Buka menu Integrasi dan copy API Key Anda.

Base URLs

EnvironmentBase URL
Sandbox/UAThttps://lokal-api-uat.kiriminaja.com
Productionhttps://lokal-api.kiriminaja.com

2. Konfigurasi Environment

File .env

KIRIMINAJA_API_KEY=your_api_key_here
KIRIMINAJA_MODE=staging  # atau 'production' untuk live

File config/services.php

'kiriminaja' => [
    'api_key' => env('KIRIMINAJA_API_KEY'),
    'mode' => env('KIRIMINAJA_MODE', 'staging'),
],

3. Existing Service Implementation

Project ini sudah memiliki service dasar di KiriminAjaService.php:

<?php

namespace App\Services;

use Illuminate\Support\Facades\Http;

class KiriminAjaService
{
    protected $baseUrl;
    protected $apiKey;
    protected $mode;

    public function __construct()
    {
        $this->mode = config('services.kiriminaja.mode', 'staging');
        $this->baseUrl = $this->mode === 'production'
            ? 'https://lokal-api.kiriminaja.com'
            : 'https://lokal-api-uat.kiriminaja.com';
        $this->apiKey = config('services.kiriminaja.api_key');
    }

    // Methods: getProvinces(), getCities(), getDistricts(), checkRates()
}

Methods yang Tersedia

MethodEndpointDeskripsi
getProvinces()/api/mitra/v2/provincesDaftar provinsi
getCities($provinceId)/api/mitra/v2/citiesDaftar kota/kabupaten
getDistricts($cityId)/api/mitra/v2/districtsDaftar kecamatan
checkRates(...)/api/mitra/v2/shipping_priceCek ongkos kirim

4. API Endpoints

4.1 Coverage Area

GET /api/mitra/v2/provinces
Authorization: Bearer {api_key}

Response:

{
  "status": true,
  "method": "provinsis",
  "text": "Berhasil",
  "datas": [
    { "id": 1, "provinsi_name": "Bali" },
    { "id": 2, "provinsi_name": "Bangka Belitung" }
  ]
}
GET /api/mitra/v2/cities?province_id={id}
Authorization: Bearer {api_key}
GET /api/mitra/v2/districts?city_id={id}
Authorization: Bearer {api_key}

4.2 Check Shipping Rate

POST /api/mitra/v2/shipping_price
Authorization: Bearer {api_key}
Content-Type: application/json

Request Body:

{
  "origin": "district_id_origin",
  "destination": "district_id_destination",
  "weight": 1000,
  "items": [
    {
      "name": "Product Name",
      "qty": 1,
      "price": 100000
    }
  ]
}

4.3 Create Order

POST /api/mitra/v2/order
Authorization: Bearer {api_key}
Content-Type: application/json

Request Body:

{
  "courier": "jne",
  "service": "REG",
  "origin": 123,
  "destination": 456,
  "weight": 1000,
  "sender_name": "Amoura Skin",
  "sender_phone": "08123456789",
  "sender_address": "Jl. Contoh No. 1",
  "receiver_name": "Customer Name",
  "receiver_phone": "08198765432",
  "receiver_address": "Jl. Tujuan No. 2",
  "item_name": "Skincare Product",
  "item_value": 150000,
  "item_qty": 1,
  "is_cod": false,
  "cod_value": 0
}

4.4 Tracking

GET /api/mitra/v2/tracking?awb={no_resi}
Authorization: Bearer {api_key}

4.5 Request Pickup

POST /api/mitra/v2/pickup/schedule
Authorization: Bearer {api_key}
Content-Type: application/json

5. Flow Integrasi

Flow Integrasi KiriminAja


6. Webhook Setup

KiriminAja akan mengirim update status pengiriman ke callback URL Anda.

Register Callback

POST /api/mitra/v2/callback
Authorization: Bearer {api_key}
Content-Type: application/json

Request Body:

{
  "url": "https://yourdomain.com/api/webhook/kiriminaja"
}

Response:

{
  "status": true,
  "method": "set_callback",
  "text": "Callback di set ke https://yourdomain.com/api/webhook/kiriminaja"
}

Webhook Controller (Laravel)

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class KiriminAjaWebhookController extends Controller
{
    public function handle(Request $request)
    {
        $payload = $request->all();
        
        // Log for debugging
        \Log::info('KiriminAja Webhook', $payload);
        
        // Update order status based on payload
        // Example: $order->update(['shipping_status' => $payload['status']]);
        
        return response()->json(['status' => 'ok']);
    }
}

Webhook Events

EventStatusDeskripsi
PICKEDpickedPaket sudah dipickup
IN_TRANSITon_progressDalam perjalanan
DELIVEREDdeliveredTerkirim
RETURNEDreturnedDikembalikan

7. Next Steps

✅ Yang Sudah Ada

  • KiriminAjaService.php dengan method dasar
  • Config di services.php

📝 Yang Perlu Ditambahkan

Extend KiriminAjaService dengan method:

  • createOrder() – Buat pesanan pengiriman
  • getTracking() – Cek status pengiriman
  • requestPickup() – Request pickup kurir
  • registerCallback() – Set webhook URL

Create Webhook Controller:

  • Handle status update dari KiriminAja
  • Update order status di database

Frontend Integration:

  • Dropdown provinsi/kota/kecamatan di checkout
  • Pilihan kurir dengan harga
  • Tracking page untuk customer

Database:

  • Tambah kolom awb_number di orders table
  • Tambah kolom shipping_status
  • Simpan shipping cost

Sebelum go-live, pastikan:

  • Ganti mode dari staging ke production
  • Update API key dengan production key
  • Register production callback URL
  • Test semua flow dengan transaksi real

Referensi

On this page