betalabs / vindi-php
SDK Vindi para PHP.
Requires
- php: ^7.2.5|^8.0
- guzzlehttp/guzzle: ^7.0.1
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: 3.*
README
Vindi - SDK PHP
Descrição
Este pacote consiste em um SDK em PHP para a API de Recorrência da Vindi.
Requisitos
- PHP versão 5.6.x ou superior.
- cURL habilitado para o PHP.
- Certificado SSL.
- Conta ativa na Vindi.
Instalação
Via Composer
composer require vindi/vindi-php
Métodos de Autenticação
Variável de ambiente
Esse método de autenticação utiliza-se de inserção de variáveis de ambiente.
require __DIR__.'/vendor/autoload.php'; // Coloca a chave da Vindi (VINDI_API_KEY) na variável de ambiente do PHP. putenv('VINDI_API_KEY=SUA_CHAVE_DA_API'); // Coloca a chave da Vindi (VINDI_API_URI) na variável de ambiente do PHP. putenv('VINDI_API_URI=https://sandbox-app.vindi.com.br/api/v1/'); // Instancia o serviço de Customers (Clientes) $customerService = new Vindi\Customer;
Argumento de instância
Esse método de autenticação utiliza-se de inserção de um array como argumento na primeira instância de uma classe filha de Resource, sendo ignorada uma nova tentativa de inserir o argumento em uma outra instância.
require __DIR__.'/vendor/autoload.php'; // Declara em um array os valores de VINDI_API_KEY e VINDI_API_URI $arguments = array( 'VINDI_API_KEY' => 'SUA_CHAVE_DA_API', 'VINDI_API_URI' => 'https://sandbox-app.vindi.com.br/api/v1/' ); // Instancia o serviço de Customers (Clientes) com o array contendo VINDI_API_KEY e VINDI_API_URI $customerService = new Vindi\Customer($arguments);
Exemplo de implementação
Exemplo de código após autenticação (uma das duas formas existentes descritas acima), seguindo a sequência de instanciação de Customer.
// Cria um novo cliente: $customer = $customerService->create([ 'name' => 'Teste da Silva', 'email' => 'contato@vindi.com.br', ]); echo "Novo cliente criado com o id '{$customer->id}'.<br />"; // Busca todos os clientes, ordenando pelo campo 'created_at' descendente. $customers = $customerService->all([ 'sort_by' => 'created_at', 'sort_order' => 'desc' ]); // Para cada cliente da array de clientes foreach ($customers as $customer) { $customerService->update($customer->id, [ 'notes' => 'Este cliente foi atualizado pelo SDK PHP.', ]); echo "O cliente '{$customer->name}' foi atualizado!<br />"; } // Instancia o serviço de Product que não requer argumentos, pois já foi configurado em Customer ou foi configurado nas variáveis de ambiente. $productService = new Vindi\Product; // Cria um novo produto: $product = $productService->create([ 'name' => 'Teste de Produto', 'pricing_schema' => [ 'price' => 150, 'schema_type' => 'flat', ] ]); echo "Novo produto criado com o id '{$product->id}'.<br />";
Para mais detalhes sobre quais serviços existem, quais campos enviar e demais informações, verifique nossa página interativa de uso da API.
Response:
Caso precise de mais detalhes sobre a resposta de cada request, utilize o método getLastResponse
. Se nenhum request foi efetuado anteriormente, este método retornará NULL
.
// Retorna os dados da última resposta recebida dos servidores da Vindi $lastResponse = $customerService->getLastResponse(); // Retorna o corpo da requisição $body = (string) $customerService->getLastResponse()->getBody(); // Retorna o HTTP Status Code $lastResponse->getStatusCode(); // Retorna o todos os headers $lastResponse->getHeaders(); // Retorna um único header $lastResponse->getHeader('Header-Name');
Webhooks
Este pacote torna possível a interpretação dos webhooks enviados pela Vindi.
Para tal, disponibilize uma URL/rota que será acessível pela web e nela utilize a classe Vindi\WebhookHandler
para a interpretação dos eventos:
require __DIR__.'/vendor/autoload.php'; // Instancia o objeto que irá lidar com os Webhooks. $webhookHandler = new Vindi\WebhookHandler(); // Pega o evento interpretado pelo objeto. $event = $webhookHandler->handle(); // Decide a ação com base no evento switch ($event->type) { case 'subscription_canceled': // Lidar com o evento de Assinatura cancelada. break; case 'subscription_created': // Lidar com o evento de Assinatura efetuada break; case 'charge_rejected': // Lidar com o evento de Cobrança rejeitada break; case 'bill_created': // Lidar com o evento de Fatura emitida break; case 'bill_paid': // Lidar com o evento de Fatura paga break; case 'period_created': // Lidar com o evento de Período criado break; case 'test': // Lidar com o evento de Teste da URL break; default: // Lidar com falhas e eventos novos ou desconhecidos break; }
Dúvidas
Caso necessite de informações sobre a plataforma ou API, por favor acesse o Atendimento Vindi.
Contribuindo
Por favor, leia o arquivo CONTRIBUTING.md. Caso tenha alguma sugestão ou bug para reportar, por favor nos comunique através das issues.
Segurança
Se você descobrir qualquer questão relacionada a segurança, por favor, envie um e-mail para seguranca@vindi.com.br ao invés de utilizar os issues.
Changelog
Todas as informações sobre cada release podem ser consultadas em CHANGELOG.md.
Créditos
Licença
GNU GPLv3. Por favor, veja o Arquivo de Licença para mais informações.