Skip to content

valdeirpsr/pagseguro-sdk

Repository files navigation

SDK em PHP para integração com o PagSeguro Checkout Transparente 🐘

License MIT Test SDK with PHPUnit Total Issue Last  Version

Inicialmente, este SDK foi criado para utilização com a extensão de pagamento criada para OpenCart, no entanto, para melhor manutenção e melhorias, foi resolvido torná-lo independente.

Este projeto é open-source e não tem relação direta com a empresa PagSeguro

⚙️ Instalação

Instale o projeto via composer

PHP 7.3+

composer require valdeirpsr/pagseguro-sdk

PHP 8.0+

composer require valdeirpsr/pagseguro-sdk --ignore-platform-req php

📚 Requisitos

  • PHP 7.3 ou superior
  • PHP Curl (Extensão)
  • PHP Json (Extensão)
  • PHP Xml
  • PHP SimpleXml (Extensão)

📖 Documentação

Documentação completa

Crie transações com o uso de cartões de crédito. É necessário usar o JavaScript do PagSeguro para obter o token do cartão de crédito. Isto porque os dados do cartão não são transferidos entre o client-side e o server-side

<?php

require_once "vendor/autoload.php";

use ValdeirPsr\PagSeguro\Constants\Shipping\Type as ShippingTypes;
use ValdeirPsr\PagSeguro\Exception\{
    Auth as AuthException,
    PagSeguroRequest as PagSeguroRequestException
};
use ValdeirPsr\PagSeguro\Domains\{
    Payment,
    CartItem,
    Shipping,
    Address,
    Document,
    User\Factory as FactoryUser,
    PaymentMethod\CreditCard
};
use ValdeirPsr\PagSeguro\Request\Sale;

/**
 * Gera a sessão para autorização da requisição
 */
$sessionHash = $this->model_extension_payment_pagseguro->generateSession();

/**
 * Informa os dados do cliente
 */
$sender = FactoryUser::sender(
    'Valdeir Psr',
    'teste@valdeir.dev',
    '71912345678',
    Document::cpf('000.000.000-00'),
    $sessionHash
);

/**
 * Define os produtos que o cliente comprou
 */
$products = [];

foreach ($this->cart->getProducts() as $product) {
    $product = new CartItem();
    $product->setId('123');
    // Limite de 80 caracteres
    $product->setDescription('Teatro Completo de Ariano Suassuna');
    $product->setQuantity(1);
    $product->setAmount(349.91);
    $products[] = $item;
}

$payment = new Payment();
$payment->setMode('default');
$payment->setSender($sender);
$payment->setCurrency('BRL');
$payment->setReference('Comentário do cliente / Referência do Pedido');
$payment->setCartItems($products);
// Defina a URL que receberá os alertas do WebHook
$payment->setNotificationUrl('https://example.com/callback?order_id=123');
// Define um valor de desconto (valor negativo) ou acréscimo (valor positivo)
$payment->setExtraAmount(-9.91);

/**
 * Define os dados de endereço
 */
$address = new Address();
$address->setStreet('Avenida Brasil');
$address->setNumber('44878');
$address->setDistrict('Campo Grande');
$address->setCity('Rio de Janeiro');
$address->setState('RJ');
$address->setPostalCode('23078001');
$address->setComplement('Mar Mil');

/**
 * Dados do titular do cartão
 */
$holder = FactoryUser::holder(
    'Titular do cartão',
    'customer@example.com',
    '71912345678',
    Document::cpf('000.000.000-00')
);
$holder->setBirthdate(DateTime::createFromFormat('Y-m-d', '1993-07-13'));

/**
 * Define os dados do cartão de crédito
 */
$creditCard = new CreditCard();
$creditCard->setToken('token gerado pelo JavaScript do PagSeguro');
$creditCard->setInstallmentQuantity(7); // Número de parcelas
$creditCard->setInstallmentValue(69.98); // Valor gerado pelo JavaScript
$creditCard->setBillingAddress($address); //
$creditCard->setHolder($holder);

/**
 * Caso tenha definido juros, utilize o método abaixo para informar
 * o número de parcelas sem juros; caso contrário, deixa-a comentada.
 */
//$creditCard->setNoInterestInstallmentQuantity(1);

/**
 * Define os dados de entrega
 */
$shipping = new Shipping();
$shipping->setAddressRequired(true);
$shipping->setType(ShippingTypes::UNKNOWN); // Utilize UNKNOWN, PAC ou SEDEX
$shipping->setCost(10.00);
$shipping->setAddress($address);

/**
 * Define o ambiente. Caso esteja usando em produção, utilize
 * ```Environment::production```
 */
$env = Environment::sandbox('seu e-mail', 'seu token');

/**
 * Realiza a requisição e obtém o ID da transação
 */
$sale = new Sale($env);
$response = $sale->create($payment);

echo $response->getCode(); // Imprime o código de identificação da transação

Documentação completa

🔖 Referência API

Acessar página

🤝 Comunidade

Obtenha suporte registrando issues, acessando a área de discurssões (em breve) ou através da documentação.

👮 Problemas de Segurança

Se você achar algo que comprometa a segurança, por favor, não reporte publicamente. Envie um e-mail para contact@valdeir.dev.

📃 Licença

Este projeto é livre sob a Licença MIT.