thiagobueno/zoop-sdk

SDK de pagamentos Zoop

1.5.1 2023-03-14 17:39 UTC

This package is auto-updated.

Last update: 2024-05-20 00:20:31 UTC


README

alt text

Introdução - Zoop SDK - PHP 🐘

SDK Não oficial Zoop PHP, para realizar integração com o gateway de pagamento.

Você pode acessar a documentação oficial da Zoop acessando esse link.

Índice

Instalação

Instale a biblioteca utilizando o comando

composer require thiagobueno/zoop-sdk

Configuração

Para incluir a biblioteca em seu projeto, basta fazer o seguinte:

<?php
use Zoop\Core\ZoopConfig;
use Zoop\ZoopClient;

require("vendor/autoload.php");

$token = 'zpk_test_Xxxxxx'; /* Token gerado ADM Mkt Zoop */
$marketplace = 'd0024d3f01ea4xxxxxxxxxx'; /* ID do Marketplace */
$vendedor = '38e0c71e9c7c465080bxxxxxxxxx'; /** ID do vendedor do marketplace */

$client = new ZoopClient(
    ZoopConfig::configure($token, $marketplace, $vendedor)
);

Transações

Criando pagamento com cartão de credito.

O segundo parâmetro passado para SDK é opcional e pode ser utilizado para guardar na zoop (e recuperar posteriormente via webhook) o id do pagamento local na sua aplicação.

SEU_ID_VENDA é um ID gerado pela sua aplicação.

O valor deve ser um número inteiro positivo em centavos, por exemplo, 4950 para R$ 49,50

try {
    $pagamento = $client->payCreditCard(array(
        'description' => 'Plano Nitro',
        'amount' => 4950,
        'card' => array(
            'card_number' => '5201561050024014',
            'holder_name' => 'João Silva',
            'expiration_month' => '03',
            'expiration_year' => '2018',
            'security_code' => '123',
        )
    ), 'SEU_ID_VENDA');
    print_r($pagamento);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Criando pagamento com boleto.

Para gerar um Boleto primeiro você deve registrar um comprador e adicioná-lo no lugar de ID_DO_COMPRADOR

SEU_ID_VENDA é um ID gerado pela sua aplicação.

O valor deve ser um número inteiro positivo em centavos, por exemplo, 4950 para R$ 49,50

Aplicando multa, juros e descontos, você pode verificar todas as opções e regras em https://docs.zoop.co/docs/multa-juros-e-descontos

try {
    $boleto = $client->generateTicket(array(
        'amount' => 4950,
        'logo' => 'https://dashboard.zoop.com.br/assets/imgs/logo-zoop.png',
        'description' => 'Pagamento Zoop',
        'top_instructions' => 'Instruções de pagamento',
        'body_instructions' => 'Não receber após a data de vencimento.',
        'expiration_date' => (string)date('Y-m-d'),
        'payment_limit_date' => (string)date('Y-m-d'),
        'late_fee' => [
            'mode' => 'PERCENTAGE',
            'percentage' => 2
        ],
        'interest' => [
            'mode' => 'MONTHLY_PERCENTAGE',
            'percentage' => 1,
            'start_date' => (string)date('Y-m-d'),
        ],
        'discount' => [
            'mode' => 'FIXED',
            'amount' => 100,
            'limit_date' => (string)date('Y-m-d'),
        ],
    ),  'ID_DO_COMPRADOR', 'SEU_ID_VENDA');
    print_r($boleto);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Listando e tratando trasações da Zoop.

Listando todas as transações do marketplace, caso algo esteja errado a Exception irá realizar um split diretamente da mensagem enviada pela propria Zoop, facilitando manutenção e entendimento do ocorrido.

try {
    $transactions = $client->getAllTransactions();
    print_r($transactions);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Obtendo dados de uma transação.

Esse método retorna os dados detalhados de uma transação.

try {
    $transactions = $client->getTransaction('454543534543');
    print_r($transactions);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Vendedores

Recuperando detalhes de todo os vendedores do Marketplace

try {
    $vendedores = $client->getAllSellers();
    print_r($vendedores);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Recuperando detalhes do vendedor

try {
    $vendedor = $client->getSeller('5345634635');
    print_r($vendedor);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Compradores

Criando o comprador dentro do marketplace configurado.

try {
    $comprador = $client->createBuyer([
        'first_name' => 'João das Neves',
        'taxpayer_id' => '30621143049', /* CPF */
        'email' => 'joaoneves@norte.com',
        'address' => [
            'line1' => 'Rua Lobo, 999',
            'line2' => 'Vento Cinzento',
            'neighborhood' => 'Vila Carrao',
            'city' => 'São Paulo',
            'state' => 'SP',
            'postal_code' => '03424030',
            'country_code' => 'BR'
        ],
    ]);
    print_r($comprador);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Listando todos os compradores do Markeplace

try {
    $compradores = $client->getAllBuyers();
    print_r($compradores);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Recuperando detalhes do comprador

try {
    $comprador = $client->getBuyer('5345634635');
    print_r($comprador);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Atualizando dados do comprador

try {
    $comprador = $client->updateBuyer('5345634635', [
        'first_name' => 'João Das Neves'
    ]);
    print_r($comprador);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Deletando comprador do Marketplace

try {
    $response = $client->deleteBuyer('5345634635');
    print_r($response);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Transferências

Listar transferências por seller

try {
    $transactions = $client->getTransfers($sellerId);
    print_r($transactions);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Listar transferências por marketplace

try {
    $transactions = $client->getAllTransfers();
    print_r($transactions);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Recuperar detalhes de transferência

try {
    $transactions = $client->getTransfer($transferId);
    print_r($transactions);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Listar transações associadas a transferência

try {
    $transactions = $client->getTransactions($transferId);
    print_r($transactions['transactions']);
} catch(\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

WebHook

Instanciando seu cliente

<?php
use Zoop\Core\ZoopConfig;
use Zoop\ZoopClient;

require("vendor/autoload.php");

$token = 'zpk_test_Xxxxxx'; /* Token gerado ADM Mkt Zoop */
$marketplace = 'd0024d3f01ea4xxxxxxxxxx'; /* ID do Marketplace */
$vendedor = '38e0c71e9c7c465080bxxxxxxxxx'; /** ID do vendedor do marketplace */

$client = new ZoopClient(
    ZoopConfig::configure($token, $marketplace, $vendedor)
);

Criando o Webhook (POST)

Retorna o status, se o webhook foi criado com sucesso.

try {
    $webhook = $client->createWebHook('https://webhook.seusite.com.br', 'WebHook da SDK');
    print_r($webhook);
} catch (\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Retornando as chamadas da Zoop (POST)

Precisamos entender como iremos utilizar o Webhook da zoop no nosso projeto, após criarmos alguma transação como por exemplo com cartão de crédito, essa ação cria um Evento dentro da Zoop, esse evento envia para uma URL sua, como por exemplo: https://seusite.com.br/webhook a SDK ajuda você a pegar os dados enviador para seu Webhook.

try {
    $webHookAlert = $client->webHookListen();
    if (isset($webHookAlert) && !empty($webHookAlert) && is_array($webHookAlert)) {
        $log = fopen('webhook.json', 'a+');
        fwrite($log, json_encode($webHookAlert));
        fclose($log);
    } else {
        echo 'o evento recebido não é valido';
    }
} catch (\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Listando todos WebHooks

Retorna uma lista com todos os webhooks criados dentro do marketplace.

try {
    $webhooks = $client->getAllWebHooks();
    print_r($webhooks);
} catch (\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}

Deletando WebHook

Deleta o webhook com id passado por parametro e retorna o status, se o mesmo foi deletado ou não.

try {
    $webhook = $client->deleteWebHook('45345345');
    print_r($webhook);
} catch (\Exception $e){
    echo $e->getMessage() . PHP_EOL;
}