main.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
try:
import requests
except ImportError:
print('[!] Please install the requests library')
print('[!] Example: pip install requests')
exit(1)
CHECKOUT_URL = 'https://checkout.developers.ar.ua.la'
PAYMENT_URL = f'{CHECKOUT_URL}/v2/api/checkout'
class Checkout:
def __init__(self, amount: str, description: str, notification_url: str, callback_fail: str, callback_success: str, external_reference: str):
"""
Constructor para inicializar los datos de un checkout.
:param amount: Monto del checkout.
:param description: Descripción de la venta.
:param notification_url: URL para notificaciones.
:param callback_fail: URL en caso de fallo.
:param callback_success: URL en caso de éxito.
:param external_reference: Referencia externa única.
"""
self.amount = amount
self.description = description
self.notification_url = notification_url
self.callback_fail = callback_fail
self.callback_success = callback_success
self.external_reference = external_reference
def to_dict(self) -> dict:
"""
Convierte el objeto Checkout en un diccionario.
:return: Diccionario con los datos del checkout.
"""
return vars(self)
def to_json(self) -> str:
"""
Convierte el objeto Checkout en un JSON.
:return: JSON con los datos del checkout.
"""
return json.dumps(self.to_dict())
def checkout(self, access_token: str):
"""
Realiza el checkout llamando a la API con los datos.
:param access_token: Token de acceso para la API.
:return: Respuesta de la API como diccionario.
:raises Exception: En caso de errores durante la solicitud.
"""
try:
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': f'Bearer {access_token}',
}
response = requests.post(
PAYMENT_URL,
data=self.to_json(),
headers=headers,
)
if response.status_code != 200:
raise Exception(f'[!] HTTP error {response.status_code}: {response.text}')
return response.json()
except requests.exceptions.RequestException as e:
raise Exception(f'[!] Checkout error: {e}')
if __name__ == '__main__':
# Reemplaza estos valores con los reales
checkout = Checkout(
amount='10.90',
description='Venta',
notification_url='your-notification-url',
callback_fail='your-fail-url',
callback_success='your-success-url',
external_reference='your-external-reference',
)
token = 'your-access-token' # Reemplaza con tu token de acceso
try:
response = checkout.checkout(token)
print('Success:', response)
except Exception as e:
print('Error:', str(e))