Instalasi

Jalankan perintah di bawah di folder aplikasi:

mim app install lib-courier

Penggunaan

Module ini menambahkan satu library dengan nama LibCourier\Library\Courier yang bisa digunakan untuk bekerja dengan library courier:

use LibCourier\Library\Courier;

$delivery_cost = Courier::cost([
    'origin' => [
        'id' => 1,
        'type' => 'city'
    ],
    'destination' => [
        'id' => 1,
        'type' => 'city'
    ],
    'weight' => 1000, // in gram
    'courier' => ['jne'], // courier code
    'length' => 100, // package length in cm
    'width' => 100, // package width in cm
    'height' => 100, // package height in cm
    'diameter' => 100, // package diameter in cm
]);

$tracking = Courier::track($courier, $courier_receipt);

Implementasi Courier

Masing-masing courier handler harus mengimplementasikan interface LibCourier\Iface\Handler, sehingga masing-masing handler harus memiliki method sebagai berikut:

cost(array $data): ?array

Mengambil harga pengiriman berdasarkan data pengiriman. Fungsi ini harus mengembalikan data null jika error atau array sebagai berikut jika berhasil:

[
    [
        'courier' => [
            'name' => 'Jalur Nugraha Ekakurir (JNE)',
            'code' => 'jne'
        ],
        'packages' => [
            [
                'name' => 'OKE',
                'info' => 'Ongkos Kirim Ekonomis',
                'cost' => '26000',
                'etd'  => '6-7',
                'note' => '...'
            ],
            // ...
        ]
    ],
    // ...
]

track(string $courier, string $courier_receipt): ?array

Mengambil tracking pengiriman. Fungsi ini harus mengembalikan data null jika terjadi error, atau array sebagai berikut jika berhasil:

[
    // 1 pending
    // 2 receiped from sender
    // 3 on the way
    // 4 delivered
    // 5 on return way
    // 6 returned
    'status' => ::int,
    'tracks' => [
        [
            'desc' => 'Manifested',
            'date' => '2015-03-04 03:41:00',
            'place' => 'SOLO',
            'status' => 2,
            'info' => '...'
        ],
        // ...
        [
            'desc' => 'Received On Destination',
            'date' => '2015-03-05 08:57:00',
            'note' => 'PALEMBANG',
            'status' => 4,
            'info' => 'RISKA VIVI'
        ]
    ]
]

lastError(): ?string

Konfigurasi

Setelah selesai membuat library handler untuk kurir, pastikan mendaftarkan library tersebut sebagai handler untuk suatu kurir sebagai berikut:

<?php

return [
    'libCourier' => [
        'handler' => [
            'courier-code' => 'Class\\Handler',
            'jne' => 'LibCourierRajaOngkir\\Library\\Handler'
        ]
    ]
];