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.
Instale a biblioteca utilizando o comando
composer require thiagobueno/zoop-sdk
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)
);
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;
}
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;
}
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
Você precisa passar 'bolepix' depois do SEU_ID_VENDA, no retornon não terá url, e com barcode, digitable_line e pix você consegue montar seu boleto.
Saiba mais sobre Boleto com Pix
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'),
'due_at' => (string)date('Y-m-d'),
'payment_limit_at' => null,
'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', 'bolepix');
print_r($boleto);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
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;
}
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;
}
try {
$vendedores = $client->getAllSellers();
print_r($vendedores);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$vendedor = $client->getSeller('5345634635');
print_r($vendedor);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
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;
}
try {
$compradores = $client->getAllBuyers();
print_r($compradores);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$comprador = $client->getBuyer('5345634635');
print_r($comprador);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$comprador = $client->updateBuyer('5345634635', [
'first_name' => 'João Das Neves'
]);
print_r($comprador);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$response = $client->deleteBuyer('5345634635');
print_r($response);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$transactions = $client->getTransfers($sellerId);
print_r($transactions);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$transactions = $client->getAllTransfers();
print_r($transactions);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$transactions = $client->getTransfer($transferId);
print_r($transactions);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
try {
$transactions = $client->getTransactions($transferId);
print_r($transactions['transactions']);
} catch(\Exception $e){
echo $e->getMessage() . PHP_EOL;
}
<?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)
);
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;
}
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;
}
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;
}
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;
}