A better implementation of Transbank's SOAP services
This package's canonical repository appears to be gone and the package has been frozen as a result.
Requires
- php: >=7.2
- ext-dom: *
- ext-json: *
- ext-openssl: *
- ext-soap: *
- better-transbank/certificates: ^1.0
- oo-php/openssl: ^0.1.0
- psr/event-dispatcher: ^1.0
- psr/log: ^1.1
- symfony/console: ^3.4|^4.0|^5.0
Requires (Dev)
- adlawson/vfs: ^0.12.1
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^8.5
- vimeo/psalm: ^3.8
This package is auto-updated.
Last update: 2022-05-07 21:49:04 UTC
README
Un SDK no oficial (¡pero mejor!) de los servicios de pago de Transbank.
Instalación
Puedes instalar este SDK de manera sencilla con composer
composer require better-transbank/sdk
PROMESA DE ESTABILIDAD:
Esta librería adhiere a versionamiento semántico por lo que prometemos mantener la estabilidad de la api en versiones minor y patch desde
1.0.0
en adelante.
Inicio Rápido
Crear una transacción normal y mostrar el formulario de pago de WebpayPlus es extremadamente sencillo:
use BetterTransbank\SDK\Config; use BetterTransbank\SDK\Html\PaymentForm; use BetterTransbank\SDK\Services\WebpayPlus\Transaction; use BetterTransbank\SDK\TestingCredentials; use BetterTransbank\SDK\Transbank; $config = Config::fromCredentials(TestingCredentials::forWebpayPlusNormal()); $transbank = Transbank::create($config); $transaction = Transaction::normal( '12345', 10000, 'http://localhost:8000/return', 'http://localhost:8000/final' ); $result = $transbank->webpayPlus()->register($transaction); PaymentForm::prepare($result)->send();
NOTA: Evita usar el método
PaymentForm::send()
ya que presupone que usas PHP con CGI y que tienes múltiples scripts php en tu codebase. En vez de eso, recomendamos usar buenas abstracciones HTTP comosymfony/http-foundation
o cualquier implementación depsr/http-message
y contar con un solo entrypoint.
¿Por qué un nuevo SDK?
Por mucho tiempo he usado el SDK oficial de Webpay y he encontrado diversos problemas con él.
- El protocolo SOAP se derrama sobre la insipiente abstracción de los diferentes servicios
- La firma WSSE del XML se realiza con un set de clases arcanas que ya no tienen soporte (y que no tienen licencia MIT)
- Carece de buenas prácticas de programación orientada a objetos (encapsulamiento, coding to an interface, patrones de diseño)
- Carece de tipado estricto en casi todos los lugares
- Tiene una api verbose y compleja
- Carece de suficientes pruebas unitarias
- No documenta las posibles excepciones en el DocBlock
- No utiliza las nuevas funcionalidades y estándares presentes en PHP 7+
Por estas razones decidí desarrollar un nuevo SDK que se ajustara a mis necesidades y que fuera muchísimo más confiable y fácil de usar.
Para saber más en detalle las razones que me llevaron a desarrollar este SDK, puedes ver la entrada de mi blog donde también explico todo el proceso de desarrollo en detalle.
NOTA: Freshwork Studio desarrolló un SDK que soluciona algunos de estos problemas, pero en esencia es un wrapper con un poco de funcionalidad extra sobre la misma lógica del SDK oficial. Esta, en cambio, es una implementación desde cero.
Servicios de Transbank Implementados
- Webpay Plus (Transacciones Normales, Mútiples y de Subscripción)
- Commerce Integration (Captura Diferida y Anulación)
- Webpay OneClick
Documentación
Esta libreria dispone de una documentación detallada que puedes consultar para conocer la librería en profundidad.
Contribuye
Puedes leer la guía para contribuir a este repositorio, en donde se explica cómo contribuir con código o reportando issues.
Además, si esta librería o alguna otra de las que he desarrollado te ha servido y sacado de un apuro, puedes comprame una cervecita o un café por Github Sponsors.