michelmelo / payments-gateway
A payment gateway SDK for various payment methods including MBWay, Multibanco, and international options.
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^7.0
- symfony/var-dumper: ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^9.0
README
O Payment Gateway SDK é uma biblioteca PHP que permite integrar diversos métodos de pagamento, como MBWay, Multibanco, Cartão de Crédito, XPay, Blik e Pay By Link, em aplicações PHP e frameworks populares como WordPress, PrestaShop, Laravel e Magento.
Requisitos
- PHP 7.4 ou superior
- Composer
- Extensão
curl
habilitada no PHP
Instalação
Você pode instalar o SDK via Composer:
composer require michelmelo/payments-gateway
Configuração
Certifique-se de carregar o autoloader do Composer no seu projeto:
require 'vendor/autoload.php';
Uso
Inicializando o SDK
Para começar, crie uma instância da classe PaymentGateway
:
use MichelMelo\PaymentGateway\PaymentGateway; $paymentGateway = new PaymentGateway( 'your-bearer-token', 'your-client-id', 'your-terminal-id', 'PURS', // ou 'AUTH' 'https://api.paymentgateway.com' );
Processando Pagamentos
O método processPayment
permite processar pagamentos com base no método de pagamento desejado. Aqui está um exemplo para cada método:
MBWay
<?php $customer = [ 'customerInfo' => [ 'customerName' => 'John Smith', 'customerEmail' => 'john@email.com', 'customerPhone' => '+351-912345678', 'shippingAddress' => [ 'street1' => 'Shipping street1', 'street2' => 'Shipping street2', 'city' => 'Lisbon', 'postcode' => '1700-123', 'country' => 'PT', ], 'billingAddress' => [ 'street1' => 'Billing street1', 'street2' => 'Billing street2', 'city' => 'Lisbon', 'postcode' => '1700-123', 'country' => 'PT', ], ], ]; $data = [ 'amount' => 10.00, 'currency' => 'EUR', ]; $response = $paymentGateway->processPayment('mbway', $data, $customer);
Exibindo o Widget ou Formulário de Pagamento
Após processar o pagamento, você pode usar a classe PaymentWidget
para exibir o widget ou o formulário de pagamento.
Exibindo o Widget
Use o método widget
para gerar o script do widget de pagamento:
use MichelMelo\PaymentGateway\Helpers\PaymentWidget; echo PaymentWidget::widget($response['transactionId'], 'https://example.com');
Saída esperada:
<script src="https://example.com/assets/js/widget.js?id=123456789"></script>
Exibindo o Formulário
Use o método form
para gerar o formulário de pagamento:
echo PaymentWidget::form('checkout', '{"key":"value"}');
Saída esperada:
<form class='paymentSPG' spg-context='checkout' spg-config='{"key":"value"}'></form>
Multibanco
<?php $customer = [ 'customerInfo' => [ 'customerName' => 'John Smith', 'customerEmail' => 'John@email.com', 'customerPhone' => '+351-912345678', 'shippingAddress' => [ 'street1' => 'Shipping street1', 'street2' => 'Shipping street2', 'city' => 'Lisbon', 'postcode' => '1700-123', 'country' => 'PT', ], 'billingAddress' => [ 'street1' => 'Billing street1', 'street2' => 'Billing street2', 'city' => 'Lisbon', 'postcode' => '1700-123', 'country' => 'PT', ], ], ]; $data = [ 'entity' => '12345', 'reference' => '123456789', 'amount' => 10.00, ]; $response = $paymentGateway->processPayment('multibanco', $data, $customer);
Cartão de Crédito
$data = [ 'card_number' => '4111111111111111', 'expiry_date' => '12/25', 'cvv' => '123', 'amount' => 10.00, ]; $response = $paymentGateway->processPayment('card', $data);
XPay
$data = [ 'xpay_token' => 'your-xpay-token', 'amount' => 10.00, ]; $response = $paymentGateway->processPayment('xpay', $data);
Blik
$data = [ 'blik_code' => '123456', 'amount' => 10.00, ]; $response = $paymentGateway->processPayment('blik', $data);
Pay By Link
$data = [ 'email' => 'customer@example.com', 'amount' => 10.00, ]; $response = $paymentGateway->processPayment('paybylink', $data);
Tratamento de Exceções
Se um método de pagamento não for suportado ou ocorrer um erro, uma exceção PaymentException
será lançada. Certifique-se de tratar as exceções adequadamente:
use MichelMelo\PaymentGateway\Exceptions\PaymentException; try { $response = $paymentGateway->processPayment('mbway', $data); echo "Pagamento processado com sucesso!"; } catch (PaymentException $e) { echo "Erro ao processar pagamento: " . $e->getMessage(); }
Testes
Para executar os testes, use o seguinte comando:
composer test
Contribuição
Sinta-se à vontade para contribuir com melhorias para este SDK. Faça um fork do repositório, crie uma branch para sua funcionalidade ou correção e envie um pull request.
Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE
para mais detalhes.