Transferência bancária entre contas, também tida como opção de débito online nos sites, é um meio de pagamento que possibilita ao lojista receber o pagamento direto em sua conta bancária com o crédito acontecendo no momento em que o pagamento é feito pelo comprador.
<?php
try
{
// Load Dependencies
require_once(dirname(__FILE__) . '\vendor\autoload.php');
// Load configuration file with URL and Merchant Key
require_once(dirname(__FILE__) . '\config.php');
// Define the used URL
\Gateway\ApiClient::setBaseUrl(Config::URL);
// Define the Merchant Key
\Gateway\ApiClient::setMerchantKey(Config::MERCHANT_KEY);
// Create request object
$request = new \Gateway\One\DataContract\Request\CreateSaleRequest();
// Online Debit transaction data
$onlineDebitTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\OnlineDebitTransaction();
$request->addOnlineDebitTransaction($onlineDebitTransaction);
$onlineDebitTransaction
->setAmountInCents(100)
->setBank("Itau")
->getOptions()
->setNotificationUrl("URL")
->setIsCashTransaction("true");
$request
->getBuyer()
->setName("Luke Skywalker")
->getOrder()
->setOrderReference("NumeroDoPedido");
// Create new ApiClient object
$client = new Gateway\ApiClient();
// Make the call
$response = $client->createSale($request);
print json_encode($response, JSON_PRETTY_PRINT);
// Print the response
print "<pre>";
print json_encode(array('success' => $response->isSuccess(), 'data' => $response->getData()), JSON_PRETTY_PRINT);
print "</pre>";
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
// Print JSON
print "<pre>";
print json_encode($error, JSON_PRETTY_PRINT);
print "</pre>";
}
catch (Exception $ex)
{
// Print JSON
print "<pre>";
print json_encode($ex, JSON_PRETTY_PRINT);
print "</pre>";
}
#region Monta a requisicao
// Creates the online debit transaction.
var transaction = new OnlineDebitTransaction() {
AmountInCents = 100,
Bank = BankEnum.Itau,
Options = new OnlineDebitTransactionOptions() {
NotificationUrl = @"TESTE URL"
}
};
#endregion
{
"Buyer": {
"Name": "Luke Skywalker"
},
"OnlineDebitTransaction":
{
"AmountInCents": 100,
"Bank": "Itau",
"Options":{
"NotificationUrl": "URL"
}
},
"Order": {
"OrderReference": "NumeroDoPedido"
}
}
Atualização das SDKs em desenvolvimento
A MundiPagg disponibilizará em breve as SDKs atualizadas para transações de débito.
Apesar de ser um campo não obrigatório, o OrderReference
é uma informação importante para a sua gestão. Assim, aconselhamos que você sempre nos envie esse campo.
Redirecionando o comprador para o pagamento
A Mundi oferece algumas formas para que o comprador seja redirecionado para tela de pagamento do banco escolhido:
- Opção 1: JavaScript
Lojista utiliza o nosso "Mundipagg.one.onlindedebit.js" para oferecer uma experiência sem telas intermediárias entre o site dele e o internet banking do comprador.
Endereço do Javascript em sandbox:
https://onlinedebitsandbox.mundipaggone.com:4443/Scripts/mundipagg.one.onlinedebit.js
Ao utilizar o Javascript em Sandbox é necessário passar como parâmetro para o método init() o valor 'Sandbox' para que o redirecionamento para o banco aconteça para o Banco Simulador.
(function () {
MundipaggOnlineDebit.init('Sandbox');
})();
Endereço do Javascript em produção:
https://onlinedebitv2.mundipaggone.com/Scripts/mundipagg.one.onlinedebit.js
(function () {
MundipaggOnlineDebit.init('Production');
})();
Para isso, é necessário atribuir o TransactionKey da transação ao atributo "data-MundiOnlineDebit-transaction"
Para que a navegação comece, o lojista deve chamar a função "MundipaggOnlineDebit.init()" do nosso script;
<div style="align-self:center; text-align:center; vertical-align:central; border:solid; width: 320px; height: 400px; margin:0 auto;">
Seu pagamento está sendo processado. <br />Ao terminar a transação, no seu internet banking, e fechar a janela do pagamento você será redirecionado para o site da loja. <br />
<div style="text-align:center; vertical-align:central; " data-MundiOnlineDebit-message>< / div>
< / div>
<script src="https://onlinedebitv2.mundipaggone.com/Scripts/mundipagg.one.onlinedebit.js" data-MundiOnlineDebit-transaction="TransactionKey"></script>
<script>
//
// Qualquer 'trigger' p/ iniciar a aplicação
//
(function () {
MundipaggOnlineDebit.init();
})();
< / script>
Tratamento de bloqueio de pop-up
Caso o bloqueador de pop-up do browser do cliente esteja ativo, nosso script irá identificar e tornar visível a div marcada com o atributo "data-MundiOnlineDebit-message" que possui um aviso sobre a Pop-up e um link para que o cliente continue o pagamento sem a necessidade de desbloquear Pop-up.
- Opção 2: Redirecionamento
Lojista irá redirecionar o Browser do cliente para a URL que veio na resposta da criação da transação de débitoOnlineDebitTransactionResult.PaymentUrl
<a href="https://onlinedebit.mundipaggone.com:4443/OnlineDebit/Checkout/d33a0b3d-cafc-4e65-b7a9-5f3e72259388"> Clique Aqui< / a>para continuar com o pagamento.
- Opção 3: Nova Aba
Lojista irá abrir uma nova janela com a Url que veio na resposta da criação da transação de débitoOnlineDebitTransactionResult.PaymentUrl
<FORM ACTION="https://onlinedebit.mundipaggone.com:4443/OnlineDebit/Checkout/d33a0b3d-cafc-4e65-b7a9-5f3e72259388" method="get" target="_blank" id="paymentForm">
< / FORM>
<script>
document.getElementById('paymentForm').submit();
< / script>
Finalização da Transação
Após o fechamento da tela do banco, a Mundipagg irá redirecionar o cliente para a página de sucesso ou falha cadastrada junto a Mundi:
-
Pagina de falha: Será chamada quando identificarmos qualquer inconsistência na transação que impeça ela de ter sido paga corretamente. Dando ao lojista a chance de oferecer outro meio de pagamento para o cliente concluir a compra.
-
Pagina de sucesso: será chamada quando a Mundi não identificar inconsistência na transação e a mesma esteja em um estado de espera pela confirmação do pagamento junto ao banco. Recomendamos que esta seja uma tela de agradecimento pela compra com um aviso de "Aguarde enquanto seu pagamento está sendo processado".
Tratamento do Status da transação
A transação só deve ser considerada finalizada pelo lojista após recebimento do post de notificação da Mundi informando que a mesma está Paga (status
Paid
) ou Não Paga (StatusNotPaid
).No caso de status Paid, o fluxo normal de liberação do pedido deve ser seguido. Sendo o Status NotPaid ou WithError, caso o cliente acesse a URL de pagamento posteriormente ele será redirecionado para a página de falha. Sugerimos, assim, que sua página de falha apresente pro cliente uma nova opção de pagamento para o pedido.
A transação permanecerá com o Status
OpenedPendingPayment
até que o cliente efetue o pagamento ou a mesma seja marcada paraNotPaid
Aceitando débito online em mais de um banco
A transferência bancária só pode ser feita entre duas contas de um mesmo banco. Oferecendo débito online do Itaú em seu ecommerce, por exemplo, somente clientes Itaú poderão utilizá-lo. Se você deseja aceitar esta forma de pagamento em mais de um banco é preciso abrir uma conta em cada um deles e cadastrá-los separadamente na Mundi.