sholihin/rajaongkirprolaravel 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sholihin/rajaongkirprolaravel

Composer 安装命令:

composer require sholihin/rajaongkirprolaravel

包简介

Raja Ongkir API Laravel 5

README 文档

README

API ini digunakan ( baru tersedia ) untuk type akun starter

Instalasi

Download package dengan composer

composer require sholihin/rajaongkirprolaravel

atau

{
	"require": {
		"sholihin/rajaongkirprolaravel": "^2.1",
	}
}

Tambahkan service provider ke config/app.php

'providers' => [
	....
	
	sholihin\rajaongkirprolaravel\RajaOngkirServiceProvider::class,
]

Tambahkan juga aliasnya ke config/app.php

'aliases' => [
	....
	
	'RajaOngkir' => sholihin\rajaongkirprolaravel\RajaOngkirFacade::class,
]

Buat file rajaongkir.php di folder config secara manual atau jalankan command artisan

php artisan vendor:publish

jika anda menggunakan command artisan diatas, anda akan dibuatkan file rajaongkir.php di folder config

Tambahkan kode berikut di file .env untuk konfigurasi API rajaongkir

RAJAONGKIR_ENDPOINTAPI=isi_base_url_api_akun_anda_disini
RAJAONGKIR_APIKEY=isi_api_key_anda_disini

atau anda juga dapat langsung melakukan konfigurasi di file rajaongkir.php di folder config seperti kode berikut.

'end_point_api' => 'isi_base_url_api_akun_anda_disini',
'api_key' => 'isi_api_key_anda_disini',

Contoh Route

Route::get('/get-provinces', 'ShippingController@getProvinces')->name('get.province');
Route::get('/generate-provinces', 'ShippingController@generateProvinces')->name('generate.province');
Route::get('/get-cities', 'ShippingController@getCities')->name('get.cities');
Route::get('/generate-cities', 'ShippingController@generateCities')->name('generate.cities');
Route::get('/get-city-by-province/{id}', 'ShippingController@getCityByProvince')->name('get.city.by.province');
Route::get('/get-subdistrict-by-city/{id}', 'ShippingController@getSubdistrictByID');
Route::get('/get-subdistrict-by-name/{name}', 'ShippingController@getSubdistrictByName');
Route::get('/generate-subdistrict', 'ShippingController@generateSubdistricts')->name('generate.subdistrict');
Route::get('/get-cost/{origin}/{destination}/{weight}/{courier}', 'ShippingController@getCost')->name('get.cost');

Contoh Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use RajaOngkir;
use Illuminate\Support\Facades\DB;
use App\Models\Province;
use App\Models\City;
use App\Models\Subdistrict;

class ShippingController extends Controller
{
    public function getProvinces(){
        $data = RajaOngkir::Provinsi()->all();
        return $data;
    }

    public function getProvinceByName($param){
        $data = RajaOngkir::Provinsi()->search('province', $name = $param)->get();
        return $data;
    }

    public function generateProvinces(){
        $datas = RajaOngkir::Provinsi()->all();
        foreach($datas as $x){
            DB::table('provinces')->insert(
                ['province_id' => $x['province_id'], 'province' => $x['province']]
            );
            echo $x['province'].'<br>';
        }
    }

    public function getCities(){
        $data = RajaOngkir::Kota()->all();
        return $data;
    }

    public function getCityByName($param){
        $data = RajaOngkir::Kota()->search('city_name', $name = $param)->get();
        return $data;
    }

    public function getCityByProvince($id){
        $data = City::where('province_id', $id)->get();
        return $data;
    }
    
    //Jika ingin menyalin ke database lokal (perlu membuat tabel `cities`)
    public function generateCities(){
        $datas = RajaOngkir::Kota()->all();
        foreach($datas as $x){
            DB::table('cities')->insert([
                'city_id' => $x['city_id'],
                'province_id' => $x['province_id'], 
                'type' => $x['type'], 
                'city_name' => $x['city_name'], 
                'postal_code' => $x['postal_code']
            ]);
            echo $x['city_name'].'<br>';
        }
    }

    public function getSubdistrictByName($nama){
        $query = Subdistrict::where('subdistrict_name','like', '%' . $nama . '%')->get();
        $data = array();
        foreach($query as $x){
            $original_data = array('id'=>$x->subdistrict_id, 'value'=>$x->subdistrict_name.', '.$x->type.' '.$x->city.' - '.$x->province);
            array_push($data, $original_data);
        }
        return $data;
    }

    public function getSubdistrictByID($id){
        $data = RajaOngkir::Kecamatan()->byCity($id)->get();
        return $data;
    }

    //Jika ingin menyalin ke database lokal (perlu membuat tabel `subdistricts`)
    public function generateSubdistricts(){
        $datas = City::all();
        foreach($datas as $x){
            $dataDis = $this->getSubdistrictByID($x->city_id);
            foreach($dataDis as $insDis){
                DB::table('subdistricts')->insert([
                    'subdistrict_id' => $insDis['subdistrict_id'],
                    'province_id' => $insDis['province_id'],
                    'province' => $insDis['province'],
                    'city_id' => $insDis['city_id'],
                    'city' => $insDis['city'],
                    'type' => $insDis['type'],
                    'subdistrict_name' => $insDis['subdistrict_name']
                ]);

                // echo $insDis['subdistrict_name'].'<br>';
            }
            echo $x['city_name'].'<br>';
        }
    }
    
    public function getCost($origin, $destination, $weight, $courier){
        $data = RajaOngkir::Cost([
            'origin' 		    => $origin,
            'originType' 	    => 'subdistrict',
            'destination' 	    => $destination,
            'destinationType'   => 'subdistrict',
            'weight' 		    => $weight,
            'courier' 		    => $courier,
        ])->get();

        return $data;
    }
}

Tambahan Database

provinces

CREATE TABLE `provinces` (
  `province_id` int(11) NOT NULL,
  `province` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

cities

CREATE TABLE `cities` (
  `city_id` int(20) NOT NULL,
  `province_id` int(50) NOT NULL,
  `type` varchar(30) DEFAULT NULL,
  `city_name` varchar(255) NOT NULL,
  `postal_code` int(191) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

subdistricts

CREATE TABLE `subdistricts` (
  `subdistrict_id` int(191) NOT NULL,
  `province_id` int(191) NOT NULL,
  `province` varchar(255) NOT NULL,
  `city_id` int(191) NOT NULL,
  `city` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `subdistrict_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Penggunaan

Ambil data provinsi

$data = RajaOngkir::Provinsi()->all();

Ambil jumlah provinsi

$data = RajaOngkir::Provinsi()->count();

Ambil data provinsi berdasarkan id provinsi

$data = RajaOngkir::Provinsi()->find($id);

Ambil data provinsi berdasarkan nama provinsi

$data = RajaOngkir::Provinsi()->search('province', $name = "ja")->get();

Ambil data kota

$data = RajaOngkir::Kota()->all();

Ambil jumlah kota

$data = RajaOngkir::Kota()->count();

Ambil data kota berdasarkan id kota

$data = RajaOngkir::Kota()->find($id);

Ambil data kota berdasarkan nama kota

$data = RajaOngkir::Kota()->search('city_name', $name = "banyu")->get();

Ambil data kota berdasarkan provinsi

$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->get();

Ambil jumlah kota berdasarkan provinsi

$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->count();

Ambil data kota berdasarkan nama kota di suatu provinsi

$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->search('city_name', $name)->get();

Ambil data kecamatan berdasarkan kota

$data = RajaOngkir::Kecamatan()->byCity($city_id)->get();

Ambil Biaya Pengiriman

$data = RajaOngkir::Cost([
	'origin' 		=> 501,
	'originType' 		=> 'subdistrict',
	'destination' 		=> 574,
	'destinationType'	=> "subdistrict",
	'weight'		=> 1700,
	'courier'		=> 'jne'
])->get();

Kunjungi rajaongkir

Documentasi akun pro

sholihin/rajaongkirprolaravel 适用场景与选型建议

sholihin/rajaongkirprolaravel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 40 次下载、GitHub Stars 达 1, 最近一次更新时间为 2019 年 11 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「laravel」 「rajaongkir」 「application programming interface」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 sholihin/rajaongkirprolaravel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sholihin/rajaongkirprolaravel 我们能提供哪些服务?
定制开发 / 二次开发

基于 sholihin/rajaongkirprolaravel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 40
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-11-26