sholihin / rajaongkirprolaravel
Raja Ongkir API Laravel 5
v2.1
2020-08-01 05:01 UTC
Requires
This package is auto-updated.
Last update: 2024-09-09 09:23:59 UTC
README
此API用于(新可用)起始账户类型
安装
使用composer下载包
composer require sholihin/rajaongkirprolaravel
或者
{
"require": {
"sholihin/rajaongkirprolaravel": "^2.1",
}
}
将服务提供者添加到config/app.php
'providers' => [ .... sholihin\rajaongkirprolaravel\RajaOngkirServiceProvider::class, ]
并将别名也添加到config/app.php
'aliases' => [ .... 'RajaOngkir' => sholihin\rajaongkirprolaravel\RajaOngkirFacade::class, ]
手动在config文件夹中创建rajaongkir.php文件或运行命令 artisan
php artisan vendor:publish
如果您使用上面的命令 artisan,将在config文件夹中创建rajaongkir.php文件
在.env文件中添加以下代码以配置rajaongkir API
RAJAONGKIR_ENDPOINTAPI=isi_base_url_api_akun_anda_disini
RAJAONGKIR_APIKEY=isi_api_key_anda_disini
或者您也可以直接在config文件夹中的rajaongkir.php文件中进行配置,如下所示。
'end_point_api' => 'isi_base_url_api_akun_anda_disini', 'api_key' => 'isi_api_key_anda_disini',
路由示例
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');
控制器示例
<?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; } }
数据库扩展
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;
使用说明
获取省份数据
$data = RajaOngkir::Provinsi()->all();
获取省份数量
$data = RajaOngkir::Provinsi()->count();
根据省份ID获取省份数据
$data = RajaOngkir::Provinsi()->find($id);
根据省份名称获取省份数据
$data = RajaOngkir::Provinsi()->search('province', $name = "ja")->get();
获取城市数据
$data = RajaOngkir::Kota()->all();
获取城市数量
$data = RajaOngkir::Kota()->count();
根据城市ID获取城市数据
$data = RajaOngkir::Kota()->find($id);
根据城市名称获取城市数据
$data = RajaOngkir::Kota()->search('city_name', $name = "banyu")->get();
根据省份获取城市数据
$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->get();
根据省份获取城市数量
$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->count();
根据省份名称获取某省份的城市数据
$data = RajaOngkir::Kota()->byProvinsi($provinsi_id)->search('city_name', $name)->get();
根据城市获取区县数据
$data = RajaOngkir::Kecamatan()->byCity($city_id)->get();
获取运费
$data = RajaOngkir::Cost([ 'origin' => 501, 'originType' => 'subdistrict', 'destination' => 574, 'destinationType' => "subdistrict", 'weight' => 1700, 'courier' => 'jne' ])->get();
访问 rajaongkir
pro账户文档 pro