Home Projects Portfolio Dashboard Export PDF Log in

Arquitectura de pagos escalable: Integración de Flow y Paddle en Reimpact Platform

En Reimpact platform, hemos dado un paso crítico para nuestra estrategia SaaS: hemos sustituido nuestra simulación de pagos por una pasarela de suscripciones real y robusta. El objetivo fue implementar un sistema flexible, capaz de manejar múltiples proveedores de pago sin acoplar la lógica de negocio al SDK específico de cada uno.

Diseño del Sistema de Pagos

Para lograr esto, adoptamos un enfoque basado en contratos y el patrón Gateway. Nuestra arquitectura central reside en app/Services/Payments/, donde definimos interfaces para estandarizar la comunicación:

interface PaymentGateway {
    public function process(SubscriptionRequest $request): PaymentResult;
    public function getDescriptor(): GatewayDescriptor;
}

Cada pasarela, ya sea Flow o Paddle, implementa esta interfaz. Esto nos permite añadir nuevos métodos de pago simplemente creando una clase y registrándola en la configuración, manteniendo el controlador de pagos completamente agnóstico respecto a la implementación subyacente.

Manejo de Divisas y Webhooks

Dado que operamos con precios en UF y cobros en CLP, implementamos un servicio de conversión con caché diaria utilizando un proveedor externo. Además, centralizamos el manejo de eventos en un controlador unificado:

class PaymentWebhookController extends Controller {
    public function handle(Request $request, string $gateway) {
        $provider = GatewayManager::resolve($gateway);
        return $provider->verifySignature($request) 
            ? $provider->handleWebhook($request) 
            : response()->json(['error' => 'Invalid signature'], 403);
    }
}

Administración y Observabilidad

La integración incluye recursos de Filament para la gestión de clientes, suscripciones y transacciones, permitiendo a nuestro equipo administrativo tener visibilidad total sin intervención directa en la base de datos. La infraestructura de pruebas, utilizando Pest, asegura que tanto el flujo de registro como las conversiones de moneda funcionen correctamente antes de llegar a producción.

Este diseño nos permite escalar, garantizando que añadir un nuevo proveedor, como Stripe o MercadoPago, sea una tarea de configuración mínima y no una refactorización mayor.

Arquitectura de pagos escalable: Integración de Flow y Paddle en Reimpact Platform
Gerardo Ruiz

Gerardo Ruiz

Author

Share: