Este SDK foi abandonado e não será mais mantido. Para utilizar o iPag em sua loja, utilize através do projeto oficial do iPag: ipag-sdk-php.
Não há necessidade de migrar seu projeto atual para o novo SDK, pois este ainda ficará disponível para uso. Mas se for iniciar um novo projeto, utilize o SDK oficial.
Índice
require
require-dev
Execute em seu shell:
composer require jhernandes/ipag-sdk-php
require 'vendor/autoload.php';
use Ipag\Ipag;
use Ipag\Classes\Authentication;
use Ipag\Classes\Endpoint;
$ipag = new Ipag(new Authentication('my_id_ipag', 'my_ipag_key'), Endpoint::SANDBOX);
$customer = $ipag->customer()
->setName('Fulano da Silva')
->setTaxpayerId('799.993.388-01')
->setPhone('11', '98888-3333')
->setEmail('fulanodasilva@gmail.com')
->setBirthdate('1989-03-28')
->setAddress($ipag->address()
->setStreet('Rua Júlio Gonzalez')
->setNumber('1000')
->setNeighborhood('Barra Funda')
->setCity('São Paulo')
->setState('SP')
->setZipCode('01156-060')
);
$creditCard = $ipag->creditCard()
->setNumber('4066553613548107')
->setHolder('FULANO')
->setExpiryMonth('10')
->setExpiryYear('2025')
->setCvc('123')
->setSave(true); //True para gerar o token do cartão (one-click-buy)
// ...
$products = [
// Nome do Produto, Valor Unitário, Quantidade, SKU (Código do Produto)
['Produto 1', 5.00, 1, 'ABDC1'],
['Produto 2', 3.50, 2, 'ABDC2'],
['Produto 3', 5.50, 1, 'ABDC3'],
['Produto 4', 8.50, 5, 'ABDC4']
];
// Deve-se usar o `splat operator`
$cart = $ipag->cart(...$products);
// ...
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setPayment($ipag->payment()
->setMethod(Method::VISA)
->setCreditCard($creditCard)
)->setCustomer($customer)
);
$response = $transaction->execute();
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setPayment($ipag->payment()
->setMethod(Method::VISA)
->setCreditCard($ipag->creditCard()
->setToken('ABDC-ABCD-ABCD-ABDC')
)
)->setCustomer($customer)
);
$response = $transaction->execute();
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setExpiry('10/10/2017')
->setPayment($ipag->payment()
->setMethod(Method::BANKSLIP_ZOOP)
)->setCustomer($customer)
);
$response = $transaction->execute();
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setPayment($ipag->payment()
->setMethod(Method::PIX)
->setPixExpiresIn(60)
)->setCustomer($customer)
);
$response = $transaction->execute();
// PIX LINK DE PAGAMENTO (Usando o Checkout do iPag para finalizar)
$linkDePagamento = $response->pix->link;
// PIX Copia e Cola | QRCode (Utilizar a string retornada ou gerar um QrCode)
$qrCodeString = $response->pix->qrCode;
$response = $ipag->transaction()->setTid('123456789')->consult();
$response = $ipag->transaction()->setTid('123456789')->capture();
$response = $ipag->transaction()->setTid('123456789')->setAmount(1.00)->capture();
$response = $ipag->transaction()->setTid('123456789')->cancel();
$response = $ipag->transaction()->setTid('123456789')->setAmount(1.00)->cancel();
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl(getenv('CALLBACK_URL'))
->setAmount(10.00)
->setInstallments(1)
->setPayment($ipag->payment()
->setMethod(Method::VISA)
->setCreditCard($creditCard)
)->setCustomer($customer)
)->setSubscription($ipag->subscription()
->setProfileId('1000000')
->setFrequency(1)
->setInterval('month')
->setStart('10/10/2018')
);
$response = $transaction->execute();
<?php
require 'vendor/autoload.php';
use Ipag\Ipag;
use Ipag\Classes\Authentication;
use Ipag\Classes\Endpoint;
use Ipag\Classes\Enum\PaymentStatus;
try {
$ipag = new Ipag(new Authentication('my_id_ipag', 'my_ipag_key'), Endpoint::SANDBOX);
$customer = $ipag->customer()
->setName('Fulano da Silva')
->setTaxpayerId('799.993.388-01')
->setPhone('11', '98888-3333')
->setEmail('fulanodasilva@gmail.com')
->setAddress($ipag->address()
->setStreet('Rua Júlio Gonzalez')
->setNumber('1000')
->setNeighborhood('Barra Funda')
->setCity('São Paulo')
->setState('SP')
->setZipCode('01156-060')
);
$products = [
['Produto 1', 5.00, 1, 'ABDC1'],
['Produto 2', 2.50, 2, 'ABDC2']
];
$cart = $ipag->cart(...$products);
$creditCard = $ipag->creditCard()
->setNumber('4066553613548107')
->setHolder('FULANO')
->setExpiryMonth('10')
->setExpiryYear('2025')
->setCvc('123');
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setPayment($ipag->payment()
->setMethod(Method::VISA)
->setCreditCard($creditCard)
)
->setCustomer($customer)
->setCart($cart);
$response = $transaction->execute();
//Retornou algum erro?
if (!empty($response->error)) {
throw new \Exception($response->errorMessage);
}
//Pagamento Aprovado (5) ou Aprovado e Capturado(8) ?
if (in_array($response->payment->status, [
PaymentStatus::PRE_AUTHORIZED, PaymentStatus::CAPTURED
]) {
//Faz alguma coisa...
return $response;
}
} catch(\Exception $e) {
print_r($e->__toString());
}
<?php
require 'vendor/autoload.php';
use Ipag\Ipag;
use Ipag\Classes\Authentication;
use Ipag\Classes\Endpoint;
use Ipag\Classes\Enum\PaymentStatus;
try {
$ipag = new Ipag(new Authentication('my_id_ipag', 'my_ipag_key'), Endpoint::SANDBOX);
$customer = $ipag->customer()
->setName('Fulano da Silva')
->setTaxpayerId('799.993.388-01')
->setPhone('11', '98888-3333')
->setEmail('fulanodasilva@gmail.com')
->setAddress($ipag->address()
->setStreet('Rua Júlio Gonzalez')
->setNumber('1000')
->setNeighborhood('Barra Funda')
->setCity('São Paulo')
->setState('SP')
->setZipCode('01156-060')
);
$products = [
['Produto 1', 5.00, 1, 'ABDC1'],
['Produto 2', 2.50, 2, 'ABDC2']
];
$cart = $ipag->cart(...$products);
$creditCard = $ipag->creditCard()
->setNumber('4066553613548107')
->setHolder('FULANO')
->setExpiryMonth('10')
->setExpiryYear('2025')
->setCvc('123');
$payment = $ipag->payment()
->setMethod(Method::VISA)
->setCreditCard($creditCard);
//Regra de Split 1 (com porcentagem %)
$payment->addSplitRule($ipag->splitRule()
->setSellerId('c66fabf44786459e81e3c65e339a4fc9')
->setPercentage(15)
->setLiable(1)
);
//Regra de Split 2 (com valor absoluto R$)
$payment->addSplitRule($ipag->splitRule()
->setSellerId('c66fabf44786459e81e3c65e339a4fc9')
->setAmount(5.00)
->setLiable(1)
);
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setPayment($payment)
->setCustomer($customer)
->setCart($cart);
$response = $transaction->execute();
//Retornou algum erro?
if (!empty($response->error)) {
throw new \Exception($response->errorMessage);
}
//Pagamento Aprovado (5) ou Aprovado e Capturado(8) ?
if (in_array($response->payment->status, [
PaymentStatus::PRE_AUTHORIZED, PaymentStatus::CAPTURED
]) {
//Faz alguma coisa...
return $response;
}
} catch(\Exception $e) {
print_r($e->__toString());
}
<?php
require 'vendor/autoload.php';
use Ipag\Ipag;
use Ipag\Classes\Authentication;
use Ipag\Classes\Endpoint;
use Ipag\Classes\Enum\PaymentStatus;
try {
$ipag = new Ipag(new Authentication('my_id_ipag', 'my_ipag_key'), Endpoint::SANDBOX);
$customer = $ipag->customer()
->setName('Fulano da Silva')
->setTaxpayerId('799.993.388-01')
->setPhone('11', '98888-3333')
->setEmail('fulanodasilva@gmail.com')
->setAddress($ipag->address()
->setStreet('Rua Júlio Gonzalez')
->setNumber('1000')
->setNeighborhood('Barra Funda')
->setCity('São Paulo')
->setState('SP')
->setZipCode('01156-060')
);
$products = [
['Produto 1', 5.00, 1, 'ABDC1'],
['Produto 2', 2.50, 2, 'ABDC2']
];
$cart = $ipag->cart(...$products);
$transaction = $ipag->transaction();
$transaction->getOrder()
->setOrderId($orderId)
->setCallbackUrl('https://minha_loja.com.br/ipag/callback')
->setAmount(10.00)
->setInstallments(1)
->setExpiry('10/07/2021')
->setPayment($ipag->payment()
->setMethod(Method::BANKSLIP_ZOOP)
)->setCustomer($customer)
);
$response = $transaction->execute();
//Retornou algum erro?
if (!empty($response->error)) {
throw new \Exception($response->errorMessage);
}
//Pagamento de Boleto Criado (1) ou Boleto Impresso (2) ?
if (in_array($response->payment->status, [
PaymentStatus::CREATED,
PaymentStatus::PRINTED_BOLETO
])) {
// Boleto Link
//echo $response->urlAuthentication;
return $response;
}
} catch(\Exception $e) {
print_r($e->__toString());
}
<?php
require_once 'vendor/autoload.php';
use Ipag\Classes\Services\CallbackService;
use Ipag\Classes\Enum\PaymentStatus;
$postContent = file_get_contents('php://input');
$callbackService = new CallbackService();
// $response conterá os dados de retorno do iPag
// $postContent deverá conter o XML enviado pelo iPag
$response = $callbackService->getResponse($postContent);
// Verificar se o retorno tem erro
if (!empty($response->error)) {
echo "Contem erro! {$response->error} - {$response->errorMessage}";
}
// Verificar se a transação foi aprovada e capturada:
if ($response->payment->status == PaymentStatus::CAPTURED) {
echo 'Transação Aprovada e Capturada';
// Atualize minha base de dados ...
}
Estrutura do Transaction Response:
Os Tests Unitários são realizados contra o Sandbox do iPag, o arquivo de configuração (phpunit.xml) já vem preenchido com um acesso limitado ao Sandbox.
É necessário a instalação do PHPUnit para a realização dos testes.
Em caso de dúvida ou sugestão para o SDK abra uma nova Issue.