From 15c329736b747d235e68385ddd08db2929e0a739 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Wed, 24 Jun 2026 15:34:55 +0800 Subject: [PATCH] Add API error handling to Billplz Transaction Review --- .../BillplzTransactionReviewController.php | 41 ++++++++++++++++--- .../index.blade.php | 1 + 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/BillplzTransactionReviewController.php b/app/Http/Controllers/BillplzTransactionReviewController.php index c9958b2..1ec4064 100644 --- a/app/Http/Controllers/BillplzTransactionReviewController.php +++ b/app/Http/Controllers/BillplzTransactionReviewController.php @@ -4,6 +4,9 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Carbon\Carbon; +use Illuminate\Support\Facades\Log; + + class BillplzTransactionReviewController extends Controller { @@ -11,19 +14,47 @@ class BillplzTransactionReviewController extends Controller { $date = request()->selectedDate ?? Carbon::now()->toDateString(); - [$pkbTransactionsReview, $kopkbTransactionsReview] = Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review', ['date' => $date])->json(); + try { + $response = Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review', ['date' => $date]); + + if ($response->failed()) { + throw new \Exception('ArrahnPay portal returned ' . $response->status()); + } + + [$pkbTransactionsReview, $kopkbTransactionsReview] = $response->json(); + } catch (\Exception $e) { + Log::error('Billplz transaction review index failed', [ + 'date' => $date, + 'error' => $e->getMessage(), + ]); + + return redirect()->back()->with('errormessage', 'Portal ArrahnPay kemungkinan tidak beroperasi. Waktu Operasi Portal ArrahnPay adalah dari 7.30 AM hingga 11.30 PM'); + } return view('online.billplz-transaction-review.index', compact('pkbTransactionsReview', 'kopkbTransactionsReview', 'date')); } - public function show($bill_id) { - $billPlzTransactionReview = Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review/'. $bill_id)->json(); + try { + $response = Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review/' . $bill_id); - $billPlzTransactionReview = array_filter($billPlzTransactionReview, fn($x) => $x[0]['billplz_latest_transaction'] !== null); + if ($response->failed()) { + throw new \Exception('ArrahnPay portal returned ' . $response->status()); + } - $billPlzTransactionReview = array_pop($billPlzTransactionReview); + $billPlzTransactionReview = $response->json(); + $billPlzTransactionReview = array_filter($billPlzTransactionReview, fn($x) => $x[0]['billplz_latest_transaction'] !== null); + $billPlzTransactionReview = array_pop($billPlzTransactionReview) ?? []; + } catch (\Exception $e) { + Log::error('Billplz transaction review show failed', [ + 'bill_id' => $bill_id, + 'error' => $e->getMessage(), + ]); + + return redirect()->back()->with('errormessage', 'Portal ArrahnPay kemungkinan tidak beroperasi. Waktu Operasi Portal ArrahnPay adalah dari 7.30 AM hingga 11.30 PM'); + } return view('online.billplz-transaction-review.show', compact('billPlzTransactionReview', 'bill_id')); } + } diff --git a/resources/views/online/billplz-transaction-review/index.blade.php b/resources/views/online/billplz-transaction-review/index.blade.php index 3612990..021a635 100644 --- a/resources/views/online/billplz-transaction-review/index.blade.php +++ b/resources/views/online/billplz-transaction-review/index.blade.php @@ -9,6 +9,7 @@ + @if (Session::has('errormessage'))