PHP code example of devaspid / safi-laravel-client
1. Go to this page and download the library: Download devaspid/safi-laravel-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
devaspid / safi-laravel-client example snippets
use App\Http\Controllers\Api\SafiSyncExportController;
use Illuminate\Support\Facades\Route;
Route::get('/safi/sync', [SafiSyncExportController::class, 'export']);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Branch;
use App\Models\Order;
use Devaspid\Safi\Facades\Safi;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SafiSyncExportController extends Controller
{
/**
* Opsi A (Super Ringkas): Menggunakan Safi::pullResponder()
* Otomatis memvalidasi X-API-KEY, membaca filter branch_code / date,
* serta mengagregasi daily_summary & hourly_summary.
*/
public function export(Request $request): JsonResponse
{
$date = $request->query('date', now()->format('Y-m-d'));
return Safi::pullResponder($request)
->branches(Branch::where('is_active', true)->get())
->orders(Order::whereDate('created_at', $date)->get())
->respond();
}
}
use App\Http\Controllers\Api\SafiBranchExportController;
use Illuminate\Support\Facades\Route;
Route::get('/safi/channels', [SafiBranchExportController::class, 'index']);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Branch; // Sesuai entitas cabang/toko/mitra di sistem Anda
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SafiBranchExportController extends Controller
{
public function index(Request $request): JsonResponse
{
$providedKey = $request->header('X-API-KEY');
if (empty($providedKey) || $providedKey !== config('safi.api_key')) {
return response()->json(['success' => false, 'message' => 'Unauthorized'], 401);
}
$branches = Branch::where('is_active', true)
->get()
->map(fn($branch) => [
'id' => $branch->id,
'code' => $branch->code ?? 'USR-'.$branch->id,
'name' => $branch->name,
'is_active' => (bool) $branch->is_active,
]);
return response()->json([
'success' => true,
'channels' => $branches,
]);
}
}