pagos360 / sdk
SDK for integrating to Pagos360.com
Requires
- php: >=7.1
- ext-curl: *
- ext-json: *
- doctrine/collections: ^1.6
- guzzlehttp/guzzle: ^7.2
- psr/log: ^1.1
Requires (Dev)
- monolog/monolog: ^1.24
- neronmoon/scriptsdev: ^0.1.6
- phpstan/phpstan: ^0.11.8
- phpunit/phpunit: ^8.2
- slevomat/coding-standard: ^5.0
- squizlabs/php_codesniffer: ^3.4
- vimeo/psalm: ^3.9
This package is auto-updated.
Last update: 2025-03-01 00:28:09 UTC
README
SDK para realizar transacciones por medio de Pagos360
-
-
Solicitud de Pago (
PaymentRequest
) -
Solicitud de Débito en CBU (
DebitRequest
) -
Adhesion en CBU (
Adhesion
) -
Solicitud de Débito en Tarjeta (
CardDebitRequest
) -
Adhesion en Tarjeta (
CardAdhesion
) -
Reporte de Cobranza (
CollectionReport
) -
Reporte de Reversiones (
ChargebackReport
) -
Reporte de Rendicion (
SettlementReport
) -
Cuenta (
Account
)
-
Instalación
La instalación se debe hacer mediante Composer con el siguiente comando:
composer require pagos360/sdk-php
Introducción
Este SDK actúa de forma similar a un ORM, usando un diseño similar a los repositorios para generar objetos nativos en base de las respuestas JSON de la API.
Si bien el objetivo del SDK es simplificar el proceso de integración, no es un reemplazo de la Documentación para Desarrolladores.
Inicialización
Para empezar a utilizar el SDK desde su código, se provee una clase \Pagos360\Sdk
, la cual toma como único parámetro una API KEY generada desde el menú de Integraciones desde el portal web de Pagos360.
$sdk = new \Pagos360\Sdk('API_KEY_VALUE');
O si tenes una variable de entorno configurada
$sdk = new \Pagos360\Sdk(getenv('API_KEY_VAR_NAME'));
Para comprobar que la API KEY esté configurada correctamente, se puede utilizar el repositorio de cuenta.
$account = $sdk->account->get(); var_dump($account);
En caso que todo sea correcto, $account
debería ser una instancia de la clase \Pagos360\Models\Account
.
Modelos
Solicitud de Pago
Crear
$paymentRequest = new \Pagos360\Models\PaymentRequest(); $paymentRequest ->setFirstTotal(13.53) ->setFirstDueDate(new DateTimeImmutable('tomorrow')) ->setDescription('Creada por SDK') ->setPayerName('Matias Pino') ; $paymentRequest = $sdk->paymentRequests->create($paymentRequest);
Excluir canales
Para facilitar la exclusión de canales, se proveen constantes dentro de la clase \Pagos360\Constants
. Como la plataforma de Pagos360 se encuentra en desarrollo activo, es probable que en el futuro se agreguen más tipos de canales que aun no estén soportados en el SDK. En ese caso, se puede usar una string representando el nuevo valor.
$paymentRequest->setExcludedChannels([ \Pagos360\Constants::CHANNEL_CREDIT_CARD, 'tipo_de_canal_nuevo', ]);
Excluir cuotas
Números de las cuotas que serán omitidas de las opciones al pagador (Solo aplica para el medio de pago Tarjeta de Crédito).
$paymentRequest->setExcludedInstallments([1, 3, 6]);
Excluir marcas de tarjetas
Códigos de las tarjetas que serán omitdas de las opciones al pagador. Valores posibles: campo code del endpoint Obtener Planes y Cuotas (Solo aplica para el medio de pago Tarjeta de Crédito).
$paymentRequest->setExcludedCardBrands([1, 5, 10]);
Buscar por id
$paymentRequest = $sdk->paymentRequests->get(179960);
Resultados
Los resultados de una Solicitud de Pago estan encapsulados en un objeto de tipo \Doctrine\Common\Collections\ArrayCollection
, el cual contiene una colección de instancias del modelo \Pagos360\Models\Result
. En caso que la solicitud no tenga ningun resultado, este metodo devolvera null
.
$paymentRequest = $sdk->paymentRequests->get(234741); $collectedResult = $sdk->paymentRequests->findCollectedResult($paymentRequest); echo sprintf( 'Solicitud de Pago %s pagada mediante %s. Monto: $%s.%s', $paymentRequest->getId(), $collectedResult->getChannel(), $collectedResult->getAmount(), PHP_EOL ); $metadata = $collectedResult->getPaymentMetadata(); if (!empty($metadata)) { echo sprintf( 'Pagada con tarjeta terminada en %s. Cuotas: %s ($%s).%s', $metadata->getCardLastFourDigits(), $metadata->getInstallments(), $metadata->getInstallmentAmount(), PHP_EOL ); }
Funciones de utilidad
Verificar que la solicitud haya sido pagada
$paymentRequest = $sdk->paymentRequests->get(179960); $isPaid = $sdk->paymentRequests->isPaid($paymentRequest);
Alternativamente, se puede usar esta funcion que tira una excepcion en caso que no haya sigo pagada.
$paymentRequest = $sdk->paymentRequests->get(179960); $sdk->paymentRequests->assertIsPaid($paymentRequest);
Solicitud de Débito en CBU
Crear
$request = new \Pagos360\Models\DebitRequest(); $request ->setAdhesion($adhesion) ->setFirstDueDate(new DateTimeImmutable('+1 month')) ->setFirstTotal(13.53) ; $sdk->debitRequests->create($request);
Si bien es recomendable obtener la adhesion y verificar que siga en el estado firmada, es posible generar un mock de una Adhesion de la siguiente forma:
$request->setAdhesion(new \Pagos360\Models\Adhesion(['id' => 25]))
Buscar por id
$debitRequest = $sdk->debitRequests->get(182760);
Resultados
Los resultados de una Solicitud de Débito estan encapsulados en un objeto de tipo \Doctrine\Common\Collections\ArrayCollection
, el cual contiene una colección de instancias del modelo Result
. En caso que la solicitud no tenga ningun resultado, este metodo devolvera null
.
$debitRequest = $sdk->debitRequests->get(185027); $collectedResult = $sdk->debitRequests->findCollectedResult($debitRequest); echo sprintf( 'Solicitud de Debito %s pagada. Monto: $%s.%s', $paymentRequest->getId(), $collectedResult->getAmount(), PHP_EOL );
Cancelar
$originalDebitRequest = $sdk->debitRequests->get($debitRequestId); $debitRequest = $sdk->debitRequests->cancel($originalDebitRequest);
Adhesion en CBU
Crear
$adhesion = new \Pagos360\Models\Adhesion(); $adhesion ->setAdhesionHolderName('Matias Pino') ->setExternalReference('8354') ->setCbuNumber('0000000000000000000000') ->setCbuHolderIdNumber(11111111) ->setCbuHolderName('Matias Pino') ->setEmail('pagos360@example.com') ->setDescription('Creada por SDK') ->setShortDescription('P360') ; $adhesion = $sdk->adhesions->create($adhesion);
Buscar por id
$adhesion = $sdk->adhesions->get(25);
Cancelar
$adhesion = $sdk->adhesions->get(25); $adhesion = $sdk->adhesions->cancel($adhesion);
Solicitud de Débito en Tarjeta
Crear
$cardAdhesion = $sdk->cardAdhesions->get(1488); $cardDebitRequest = new \Pagos360\Models\CardDebitRequest(); $cardDebitRequest ->setCardAdhesion($cardAdhesion) ->setMonth(4) ->setYear(2021) ->setAmount(13.53) ; $cardDebitRequest = $sdk->cardDebitRequests->create($cardDebitRequest);
Buscar por id
$cardDebitRequest = $sdk->cardDebitRequests->get(652641);
Resultados
Cancelar
$cardDebitRequest = $sdk->cardDebitRequests->get(652641); $cardDebitRequest = $sdk->cardDebitRequests->cancel($cardDebitRequest);
Adhesion en Tarjeta
Crear
$cardAdhesion = new \Pagos360\Models\CardAdhesion(); $cardAdhesion ->setAdhesionHolderName('Matias Pino') ->setEmail('pagos360@example.com') ->setDescription('Creada por SDK') ->setExternalReference('210000013847') ->setCardNumber() ->setCardHolderName('Matias Pino') ; $cardAdhesion = $sdk->cardAdhesions->create($cardAdhesion);
Buscar por id
$cardAdhesion = $sdk->cardAdhesions->get(1467);
Cancelar
$cardAdhesion = $sdk->cardAdhesions->get(1467); $sdk->cardAdhesions->cancel($ad);
Reporte de Cobranza
Buscar por fecha
$collectionReport = $sdk->collectionReports->get( new DateTimeImmutable('2018-11-29') );
Datos
Los datos de un Reporte de Cobranza estan encapsulados en un objeto de tipo \Doctrine\Common\Collections\ArrayCollection
, el cual contiene una colección de instancias del modelo \Pagos360\Models\CollectionData
.
foreach ($collectionReport->getData() as $data) { /** @var \Pagos360\Models\CollectionData $data */ $paymentDate = $data->getPaymentDate(); }
Reporte de Reversiones
Buscar por fecha
$chargebackReport = $sdk->chargebackReports->get( new DateTimeImmutable('2018-11-29') );
Datos
Los datos de un Reporte de Cobranza estan encapsulados en un objeto de tipo \Doctrine\Common\Collections\ArrayCollection
, el cual contiene una colección de instancias del modelo \Pagos360\Models\ChargebackData
.
foreach ($chargebackReport->getData() as $data) { /** @var \Pagos360\Models\ChargebackData $data */ $requestId = $data->getRequestId(), ); }
Reporte de Rendicion
Buscar por fecha
$settlementReport = $sdk->settlementReports->get( new DateTimeImmutable('2019-04-16') );
Datos
Los datos de un Reporte de Cobranza estan encapsulados en un objeto de tipo \Doctrine\Common\Collections\ArrayCollection
, el cual contiene una colección de instancias del modelo \Pagos360\Models\SettlementData
.
foreach ($settlementReport->getData() as $data) { /** @var \Pagos360\Models\SettlementData $data */ $requestId = $data->getRequestId(), ); }
Cuenta
Obtener
$account = $sdk->account->get();
Otros
Logs
La clase SDK, RestClient, y los repositorios implementan la interfaz LoggerAwareInterface
del PSR-3.
$logger = new \Monolog\Logger('Pagos360 SDK'); $logger->pushHandler(new \Monolog\Handler\StreamHandler(STDOUT)); $sdk->setLogger($logger);
En caso de querer usar distintos loggers para las distintas partes, se puede especificar de la siguiente forma:
$restClientLogger = new \Monolog\Logger('Pagos360 RestClient'); $sdk->getRestClient()->setLogger($restClientLogger); $paymentRequestLogger = new \Monolog\Logger('Pagos360 PaymentRequest'); $sdk->paymentRequests->setLogger($paymentRequestLogger);
Tambien existe el metodo setLoggerAndPropagate
en el SDK que replica el logger al RestClient y todos los repositorios.
$logger = new \Monolog\Logger('Pagos360 SDK'); $logger->pushHandler(new \Monolog\Handler\StreamHandler(STDOUT)); $sdk->setLoggerAndPropagate($logger);
En estos ejemplos se usa la libreria Monolog
, pero se puede usar cualquier libreria que implemente los metodos declarados en LoggerInterface
de dicho PSR.