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ébito OnlineDebitTransactionResult.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ébito OnlineDebitTransactionResult.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 (Status NotPaid).

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 para NotPaid

👍

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.

Language