Skip to content
logo

Kotak Kode Pemograman

Sharing tentang bahasa pemograman

  • WordPress
    • Plugin
  • Tutorial
    • PHP
  • Laravel
  • Tools Webbsite
  • Desain
  • Source Code
  • Web Developer
  • Toggle search form

RajaOngkir di laravel tanpa package/library

Posted on 08/08/202408/08/2024 By kotakkode No Comments on RajaOngkir di laravel tanpa package/library

buat file di App/Services/Rajaongkir/Rajaongkir.php

<?php

namespace App\Services\Rajaongkir;

use Illuminate\Support\Facades\Http;

class RajaongkirService
{

    public const BASE_URL = [
        'starter' => 'https://api.rajaongkir.com/starter',
        'basic' => 'https://api.rajaongkir.com/basic',
        'pro' => 'https://pro.rajaongkir.com/api',
    ];

    protected string $url;

    protected array $config = [];

    public function __construct()
    {
        $this->config = config('rajaongkir');
        $this->url = self::BASE_URL[$this->config['package']];
        return $this;
    }

    protected function apiCall(string $urlPath, string $field = "", string $method = 'GET')
    {
        try {
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => $this->url . $urlPath,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => $method,
                CURLOPT_POSTFIELDS => $field,
                CURLOPT_HTTPHEADER => array(
                    "key: " . $this->config['api_key']
                ),
            ));

            $response = curl_exec($curl);
            $err = curl_error($curl);

            curl_close($curl);
            $data = json_decode($response,true);
            return $data['rajaongkir']['results'];
        } catch (\Throwable $th) {
            dd($th->getMessage());
        }
        
    }

    public function getProvince()
    {
        return $this->apiCall('/province');
    }

    public function getCity($province_id)
    {
        return $this->apiCall('/city?province=' . $province_id);
    }

    public function cost($origin,$destination,$weight,$courier)
    {  
        $field = 'origin='.$origin.'&destination='.$destination.'&weight='.$weight.'&courier=' . $courier;
        return $this->apiCall('/cost',$field,'POST');
    }
}

Cara menggunkannya contoh pada controller RajaongkirController.php

<?php

namespace App\Http\Controllers\Rajaongkir;

use App\Http\Controllers\Controller;
use App\Models\RajaOngkir\City;
use App\Services\Rajaongkir\RajaongkirService;
use Illuminate\Http\Request;

class RajaongkirController extends Controller
{
    public function __construct(protected RajaongkirService $rajaongkirService)
    {
        $this->rajaongkirService = $rajaongkirService;
    }

    public function getCity($province_id)
    {
        return $this->rajaongkirService->getCity($province_id);
    }

    public function cost(Request $request)
    {
        return $this->rajaongkirService->cost($request->origin,$request->destination,$request->weight,$request->courier);
    }
}
Controller, Laravel

Post navigation

Previous Post: Package Rajaongkir laravel
Next Post: Login sebagai user lain di laravel

Related Posts

Membuat Seeder Laravel dari File JSON Laravel
Mendapatkan ID dari data yang baru saja disisipkan di Laravel Controller
.htaccess laravel untuk menganti php version di cpanel Laravel
Cara Membuat Role User di Laravel 12 Tanpa Menggunakan Package dan Menampilkan Menu di Blade Sesuai Role User Laravel
Menjalankan composer install di cpanel dengan beda php Laravel
Ecommerce Laravel Laravel

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Copyright © 2026 Kotak Kode Pemograman.

Powered by PressBook Grid Blogs theme