1
0
Files
services_core/app/Http/Controllers/Payment/PaymentGatewayController.php
T
2026-07-31 13:57:11 +07:00

53 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Payment;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Payment\IndexPaymentRequest;
use App\Http\Requests\Payment\SaveTenantPaymentSettingRequest;
use App\Http\Requests\Payment\StoreGatewayAccountRequest;
use App\Http\Resources\Payment\PaymentTransactionResource;
use App\Models\PaymentGatewayAccount;
use App\Services\Payment\PaymentGatewayService;
use Illuminate\Http\Request;
class PaymentGatewayController extends ApiController
{
public function __construct(protected PaymentGatewayService $service) {}
public function providers()
{
return $this->success($this->service->providers(), 'Daftar provider berhasil diambil');
}
public function settings(Request $request)
{
return $this->success($this->service->settings($request->user(), $this->tenantId($request)), 'Pengaturan payment gateway berhasil diambil');
}
public function storeAccount(StoreGatewayAccountRequest $request)
{
return $this->created($this->service->saveAccount($request->validated(), $request->user(), $this->tenantId($request)), 'Akun gateway berhasil dibuat');
}
public function updateAccount(StoreGatewayAccountRequest $request, PaymentGatewayAccount $account)
{
return $this->updated($this->service->saveAccount($request->validated(), $request->user(), $this->tenantId($request), $account), 'Akun gateway berhasil diperbarui');
}
public function saveSetting(SaveTenantPaymentSettingRequest $request)
{
return $this->updated($this->service->saveTenantSetting($request->validated(), $request->user(), $this->tenantId($request)), 'Mode pembayaran tenant berhasil disimpan');
}
public function transactions(IndexPaymentRequest $request)
{
return $this->successPaginated($this->service->transactions($request->validated(), $request->user(), $this->tenantId($request)), PaymentTransactionResource::class, 'Log pembayaran berhasil diambil');
}
private function tenantId(Request $request): ?int
{
return $request->attributes->get('tenant_id');
}
}