Locale is in early access
The first localization platform specifically built for Laravel. Your team and translators will be able to enjoy a next-level localization workflow built for productivity.

Una biblioteca i un paquet per integrar pagaments de Redsys a la vostra aplicació

David
3 February 2022

Avui, publiquem un paquet anomenat creagia/laravel-redsys i una biblioteca anomenada [creagia/redsys-php](https://github.com/creagia /redsys-php). No només un nou paquet Laravel, sinó també una biblioteca PHP per integrar millor la vostra aplicació amb la plataforma de pagaments Redsys. El principal processador de pagaments a Espanya.

Quan treballem per als nostres clients, sovint ens trobem integrant aplicacions amb serveis com Stripe o Paddle que disposen de biblioteques modernes i paquets per PHP i Laravel que ens permeten fer-ho de manera ràpida i elegant. Però quan ho hem de fer amb un banc espanyol, no disposem d'aquest codi modern i actualitzat per treballar amb els estàndards als quals estem acostumats.

Per això hem creat aquest paquet per a Laravel carregat amb algunes funcions addicionals. Més detalls a continuació. Juntament amb això, publiquem la biblioteca PHP que alimenta aquest paquet (https://github.com/creagia/laravel-redsys) internament.

Característiques del paquet

Laravel Redsys és un paquet que intenta facilitar la integració de la vostra aplicació Laravel amb aquesta plataforma de pagament. Està carregat de funcions com una relació més fàcil amb els vostres models Eloquent, la gestió automàtica de les notificacions de Redsys, les visualitzacions de confirmació predeterminades i una passarel·la de pagament local útil per provar al vostre entorn local.

Podeu llegir a la documentació amb quina facilitat s'integra amb els vostres models Eloquent i com es gestiona automàticament la notificació de Redsys un cop el client l'ha autoritzat. pagament.

Una de les nostres funcions preferides és la passarel·la de pagament local. És una passarel·la falsa que només s'executa al vostre entorn de desenvolupament local i us permet simular una resposta de Redsys sense utilitzar el seu entorn de prova o producció, que requereix que exposeu el vostre lloc a Internet.

Laravel Redsys local gateway

Per què una altra biblioteca per a Redsys

Podeu trobar moltes altres biblioteques i paquets que us permeten integrar-vos amb Redsys, però hem decidit crear-ne un de nou. De fet, fa temps que utilitzem eusonlito/redsys-TPV als nostres projectes (gràcies!). Tot i així, mentre PHP avança amb noves funcions avançades que ens permeten escriure un codi més modern, segur i robust, hem trobat que les solucions existents no s'havien modernitzat de la mateixa manera.

Si llegiu la documentació de creagia/redsys-php i navegueu pel codi, veureu que hem utilitzat enumeracions, propietats amb nom, DTO i altres estratègies pròpies de PHP modern.

Mentre desenvolupem el paquet Laravel, vam trobar que també necessitàvem tot això a la biblioteca de Redsys, així que ens va portar a aquest desenvolupament.

Amb l'exemple de creació de pagaments, podeu veure què volem dir amb això:

use Creagia\Redsys\Enums\Currency;
use Creagia\Redsys\Enums\TransactionType;
use Creagia\Redsys\RedsysClient;
use Creagia\Redsys\RedsysRequest;

$redsysClient = new RedsysClient(
    merchantCode: env('redsys.merchantCode'),
    secretKey: env('redsys.key'),
    terminal: env('redsys.terminal'),
    environment: \Creagia\Redsys\Enums\Environment::Test,
);

$redsysRequest = new RedsysRequest($redsysClient);
$redsysRequest->createPaymentRequest(
    amount: 123.45,
    orderNumber: '22013100005',
    currency: Currency::EUR,
    transactionType: TransactionType::Autorizacion,
);

Full de ruta

Aquestes dues versions resulten de desenvolupaments adaptats a les nostres necessitats i casos d'ús, però esperem que també puguin servir a molts altres desenvolupadors.

Hem limitat l'abast als pagaments de redirecció simples per a aquestes primeres versions, però ens agradaria tenir en compte tots els altres tipus de pagaments que permet Redsys en versions futures. No dubteu a col·laborar, discutir o sol·licitar qualsevol funció nova a Github.