HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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;
    }
}