File: /var/www/middleware-citas/app/Services/TokuCheckoutService.php
<?php
namespace App\Services;
use App\Models\Appointment;
use Illuminate\Support\Facades\Log;
class TokuCheckoutService
{
public function createCheckout(Appointment $appointment, $amount)
{
$accountKey = env('TOKU_ACCOUNT_KEY', '');
$successUrl = route('pago-exitoso') . '?code=' . $appointment->code;
$failureUrl = route('pago-fallido') . '?code=' . $appointment->code;
$payload = [
'redirection_data' => [
'success_url' => $successUrl,
'failure_url' => $failureUrl,
'activation_url' => $failureUrl,
],
'flow_name' => '0',
'billing_data' => [
'amount' => (int) $amount,
'currency' => 'CLP',
'id_account' => $accountKey,
],
'mode' => 'PAYMENT',
'expiration_datetime' => now()->addMinutes(10)->utc()->format('Y-m-d\TH:i:s\Z'),
'external_id' => $appointment->code,
];
Log::info("[TokuCheckout] Payload", [
'appointment_id' => $appointment->id,
'code' => $appointment->code,
'payload' => $payload,
]);
$apiToku = new ApiTokuService();
$response = $apiToku->createCheckoutSession($payload);
Log::info("[TokuCheckout] Respuesta Toku", [
'appointment_id' => $appointment->id,
'code' => $appointment->code,
'response' => $response,
]);
return $response;
}
}