Giter Site home page Giter Site logo

vindi-php's Introduction

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 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' => '[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.

vindi-php's People

Contributors

ravanscafi avatar talesgalvao avatar lyoncesar avatar rtakauti avatar st3llaris avatar wagner avatar asagalo avatar havennow avatar laerte-guimaraes avatar rodrigo avatar tauanlemos avatar marcosfreitas avatar rafaelyanagui avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.