Skip to content

vindi/vindi-php

Repository files navigation

Vindi - SDK PHP

Licença do Software Última Versão no Packagist Status de Build Status de Coverage Nota de Qualidade Downloads no Total

Descrição

Este pacote consiste em um SDK em PHP para a API de Recorrência da Vindi.

Requisitos

  • PHP versão 7.2.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' => '[email protected]',
]);

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 [email protected] 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.