Introdução
MultiPayment permite gerenciar pagamentos de diversos gateways da pagamento. Atualmente suporta o Iugu e Moip.
Instalação
Instale esse pacote pelo composer:
composer require potelo/multi-payment
Agora, configure as variáveis necessárias para cada gateway que deseja usar no seu .env
:
MULTIPAYMENT_DEFAULT=iugu
#iugu
IUGU_ID=
IUGU_APIKEY=
#moip
MOIP_APITOKEN=
MOIP_APIKEY=
php artisan vendor:publish --provider="Potelo\MultiPayment\Providers\MultiPaymentServiceProvider"
Verifique se o arquivo multi-payment.php
foi criado no diretório config/app
.
Opcionalmente você pode configurar o Trait, para facilitar o uso do metodo charge
junto a um usuário.
use Potelo\MultiPayment\MultiPaymentTrait;
class User extends Authenticatable
{
use MultiPaymentTrait;
}
Utilização
Utilize o método charge
para criar uma transação de pagamento.
Usando a classe MultiPayment
:
$payment = new \Potelo\MultiPayment\MultiPayment(); // gateway default será usado
$payment->charge($options);
// ou
$payment = new \Potelo\MultiPayment\MultiPayment('iugu');
$payment->charge($options);
// ou
$payment = new \Potelo\MultiPayment\MultiPayment();
$payment->gateway('moip')->charge($options);
Usando o Facade:
\Potelo\MultiPayment\MultiPayment::charge($options);
Usando o Trait:
$usuario->charge(10000, $options, 'moip');
Documentação
charge
de MultiPayment
recebe apenas o parâmetro $options
:
Método $options = [
'amount' => 10000,
'customer' => [
'name' => 'Nome do cliente',
'email' => '[email protected]',
'cpf' => '12345678901',
'phone_number' => '11 99999-9999',
'address' => [
'street' => 'Rua do cliente',
'number' => '123',
'complement' => 'Apto. 123',
'district' => 'Bairro do cliente',
'city' => 'Cidade do cliente',
'state' => 'SP',
'zip_code' => '12345-678',
],
],
'items' => [
[
'description' => 'Produto 1',
'quantity' => 1,
'price' => 10000,
],
[
'description' => 'Produto 2',
'quantity' => 2,
'price' => 5000,
],
],
'payment_method' => 'credit_card',
'credit_card' => [
'number' => '1234567890123456',
'month' => '12',
'year' => '2022',
'cvv' => '123',
'first_name' => 'João',
'last_name' => 'Maria'
],
];
atributo | obrigatório | tipo | descrição | exemplo |
---|---|---|---|---|
amount |
obrigatório caso items não seja informado |
int | valor em centavos | 10000 |
customer |
obrigatório | array | array com os dados do cliente | ['name' => 'Nome do cliente'...] |
customer.name |
obrigatório | string | nome do cliente | 'Nome do cliente' |
customer.email |
obrigatório | string | email do cliente | '[email protected]' |
customer.tax_document |
obrigatório no gateway moip | string | cpf ou cnpj do cliente | '12345678901' |
birth_date |
string formato yyyy-mm-dd |
data de nascimento | '01/01/1990' |
|
customer.phone_number |
string | telefone | '999999999' |
|
customer.phone_area |
string | DDD | '999999999' |
|
customer.address |
obrigatório para o método de pagamento bank_slip |
array | array com os dados do endereço do cliente | ['street' => 'Rua do cliente'...] |
customer.address.street |
obrigatório | string | nome da rua | 'Nome da rua' |
customer.address.number |
obrigatório | string | número da casa | '123' |
customer.address.district |
obrigatório | string | bairro | 'Bairro do cliente' |
customer.address.city |
obrigatório | string | cidade | 'Salvador' |
customer.address.state |
obrigatório | string | estado | 'Bahia' |
customer.address.complement |
obrigatório | string | complemento | 'Apto. 123' |
customer.address.zip_code |
obrigatório | string | cep | '12345678' |
items |
obrigatório caso amount não tenha sido informado |
array | array com os itens da compra | [['description' => 'Produto 1',... |
items.description |
obrigatório | string | descrição do item | 'Produto 1' |
items.quantity |
obrigatório | int | quantidade do item | 1 |
items.price |
obrigatório | int | valor do item | 10000 |
payment_method |
obrigatório | 'credit_card' ,'bank_slip' |
método de pagamento | 'credit_card' |
credit_card |
obrigatório caso payment_method seja 'credit_card' |
array | array com os dados do cartão de crédito | ['number' => '1234567890123456',... |
credit_card.token |
string | token do cartão para o gateway escolhido | 'abcdefghijklmnopqrstuvwxyz' |
|
credit_card.number |
obrigatório caso token não tenha sido informado |
string | número do cartão de crédito | '1234567890123456' |
credit_card.month |
obrigatório caso token não tenha sido informado |
string | mês de expiração do cartão de crédito | '12' |
credit_card.year |
obrigatório caso token não tenha sido informado |
string | ano de expiração do cartão de crédito | '2022' |
credit_card.cvv |
obrigatório caso token não tenha sido informado |
string | código de segurança do cartão de crédito | '123' |
credit_card.first_name |
string | primeiro nome no cartão de crédito | 'João' |
|
credit_card.last_name |
string | último nome no cartão de crédito | 'Maria' |
|
bank_slip |
array | array com os dados do boleto | ['expiration_date' => '2022-12-31',... |
|
bank_slip.expiration_date |
string no formato yyyy-mm-dd |
data de expiração do boleto | 2021-10-10 |