main.php
class CheckoutClient {
    private $url;
    private $accessToken;
 
    /**
     * Constructor de CheckoutClient
     *
     * @param string $accessToken Token de acceso para la API.
     */
    public function __construct($accessToken) {
        $this->url = 'https://checkout.developers.ar.ua.la/v2/api/checkout';
        $this->accessToken = $accessToken;
    }
 
    /**
     * Crea un checkout en la API.
     *
     * @param string $amount Monto del checkout.
     * @param string $description Descripción de la venta.
     * @param string $notificationUrl URL de notificación.
     * @param string $callbackFail URL de fallo.
     * @param string $callbackSuccess URL de éxito.
     * @param string $externalReference Referencia externa.
     * @return array Respuesta de la API como un array.
     * @throws Exception En caso de error en la solicitud o respuesta HTTP.
     */
    public function createCheckout($amount, $description, $notificationUrl, $callbackFail, $callbackSuccess, $externalReference) {
        $payload = json_encode([
            'amount' => $amount,
            'description' => $description,
            'notification_url' => $notificationUrl,
            'callback_fail' => $callbackFail,
            'callback_success' => $callbackSuccess,
            'external_reference' => $externalReference,
        ]);
 
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->accessToken,
        ];
 
        $ch = curl_init($this->url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
 
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 
        if ($response === false || $httpCode !== 200) {
            throw new Exception('HTTP error! Status: ' . $httpCode . ' Response: ' . $response);
        }
 
        curl_close($ch);
 
        return json_decode($response, true);
    }
}
 
// Uso del constructor
$accessToken = 'your-access-token'; // Reemplaza con tu token de acceso
$checkoutClient = new CheckoutClient($accessToken);
 
try {
    $result = $checkoutClient->createCheckout(
        '10.90',                  // Monto
        'Venta',                  // Descripción
        'your-notification-url',  // URL de notificación
        'your-fail-url',          // URL de fallo
        'your-success-url',       // URL de éxito
        'your-external-reference' // Referencia externa
    );
 
    echo 'Success: ' . print_r($result, true);
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}