Enviando uma requisição de transação de cartão de crédito

// Cria a transação.
var transaction = new CreditCardTransaction() {
    AmountInCents = 10000,
    CreditCard = new CreditCard() {
        CreditCardBrand = CreditCardBrandEnum.Visa,
        CreditCardNumber = "4111111111111111",
        ExpMonth = 10,
        ExpYear = 22,
        HolderName = "LUKE SKYWALKER",
        SecurityCode = "123"
    },
		CreditCardOperation = CreditCardOperationEnum.AuthOnly,
    InstallmentCount = 1
};

// Cria requisição.
var createSaleRequest = new CreateSaleRequest() {
    // Adiciona a transação na requisição.
    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction }),
    Order = new Order() {
        OrderReference = "NumeroDoPedido"
    }
};

// Coloque a sua MerchantKey aqui.
Guid merchantKey = Guid.Parse("00000000-0000-0000-0000-000000000000");

// Cria o client que enviará a transação.
var serviceClient = new GatewayServiceClient(merchantKey, new Uri("https://sandbox.mundipaggone.com"));

// Autoriza a transação e recebe a resposta do gateway.
var httpResponse = serviceClient.Sale.Create(createSaleRequest);

Console.WriteLine("Código retorno: {0}", httpResponse.HttpStatusCode);
Console.WriteLine("Chave do pedido: {0}", httpResponse.Response.OrderResult.OrderKey);
if (httpResponse.Response.CreditCardTransactionResultCollection != null) {
    Console.WriteLine("Status da transação: {0}", httpResponse.Response.CreditCardTransactionResultCollection.FirstOrDefault().CreditCardTransactionStatus);
}
<?php

try
{
    // Carrega dependências
    require_once(dirname(__FILE__) . '/vendor/autoload.php');

    // Define a url utilizada
    \Gateway\ApiClient::setBaseUrl("https://sandbox.mundipaggone.com");

    // Define a chave da loja
    \Gateway\ApiClient::setMerchantKey("85328786-8BA6-420F-9948-5352F5A183EB");

    // Cria objeto requisição
    $createSaleRequest = new \Gateway\One\DataContract\Request\CreateSaleRequest();

    // Cria objeto do cartão de crédito
    $creditCard = \Gateway\One\Helper\CreditCardHelper::createCreditCard("4111 1111 1111 1111", "LUKE SKYWALKER", "10/2022", "123");

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setPaymentMethodCode(\Gateway\One\DataContract\Enum\PaymentMethodEnum::SIMULATOR)
        ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_ONLY)
        ->setCreditCard($creditCard);
        ;

    //Define dados do pedido
    $createSaleRequest->getOrder()
    ->setOrderReference('NumeroDoPedido');

    // Cria um objeto ApiClient
    $apiClient = new \Gateway\ApiClient();

    // Faz a chamada para criação
    $response = $apiClient->createSale($createSaleRequest);

    // Mapeia resposta
    $httpStatusCode = $response->isSuccess() ? 201 : 401;
    
}
catch (\Gateway\One\DataContract\Report\CreditCardError $error)
{
    $httpStatusCode = 400;
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $httpStatusCode = $error->errorCollection->ErrorItemCollection[0]->ErrorCode;
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $httpStatusCode = 500;
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    // Devolve resposta
    http_response_code($httpStatusCode);
    header('Content-Type: application/json');
    print json_encode($response->getData());
}
?>
require 'mundipagg_sdk'

# variable with merchant key
merchantKey = '85328786-8BA6-420F-9948-5352F5A183EB'

# instantiate class with request methods
# :sandbox for sandbox ambient 
# :production for production ambient
gateway = Gateway::Gateway.new(:sandbox, merchantKey)

# creates credit card transaction object
creditCardTransaction = Gateway::CreditCardTransaction.new

# 100 reais in cents
creditCardTransaction.AmountInCents = 10000
creditCardTransaction.CreditCard.CreditCardBrand = 'Visa'
creditCardTransaction.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransaction.CreditCard.ExpMonth = 10
creditCardTransaction.CreditCard.ExpYear = 22
creditCardTransaction.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransaction.CreditCard.SecurityCode = '123'
creditCardTransaction.CreditCardOperation = 'AuthOnly'
creditCardTransaction.InstallmentCount = 1

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction
createSaleRequest.Order.OrderReference = 'NumeroDoPedido'

# make the request and returns a response hash
response = gateway.CreateSale(createSaleRequest)

# prints the response
puts response
# -*- coding: utf-8 -*-

from uuid import UUID
from data_contracts import creditcard, creditcard_transaction, creditcard_transaction_options, create_sale_request, order
from mundipaggOnePython import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum

#Coleta os dados do cartão.
creditcard_data = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2018,
                             security_code='123', holder_name='LUKE SKYWALKER')

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data, 'AuthOnly')]

#Cria o numero do pedido
options_request = order(order_reference='NumeroDoPedido')

#Cria a request.
request = create_sale_request(creditcard_transaction_collection=transaction_collection, order=options_request)

merchant_key = UUID('85328786-8BA6-420F-9948-5352F5A183EB')
end_point = "https://sandbox.mundipaggone.com"

service_client = GatewayServiceClient(merchant_key, PlatformEnvironment.sandbox, HttpContentTypeEnum.json, end_point)

http_response = service_client.sale.create_with_request(request)

json_response = http_response.json()
// Define loja
UUID merchantKey = UUID.fromString("85328786-8BA6-420F-9948-5352F5A183EB"); // Chave da Loja - MerchantKey

// Cria um cartão de crédito e define endereço de cobrança
CreditCard creditCard = new CreditCard();
creditCard.setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCard.setCreditCardNumber("4111111111111111");
creditCard.setExpMonth(10);
creditCard.setExpYear(22);
creditCard.setHolderName("LUKE SKYWALKER");
creditCard.setSecurityCode("123");

// Cria a transação de cartão de crédito e define cartão criado anteriormente
CreditCardTransaction creditCardTransaction = new CreditCardTransaction();
creditCardTransaction.setAmountInCents(10000L);
creditCardTransaction.setCreditCard(creditCard);
creditCardTransaction.setCreditCardOperation(CreditCardOperationEnum.AuthOnly);
creditCardTransaction.setInstallmentCount(1);

// Cria o objeto order para adicionar o Order Reference
Order order = new Order();
order.setOrderReference("NumeroDoPedido");

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction);
createSaleRequest.setOrder(order);

// Cria o cliente que vai enviar a transação
GatewayServiceClient serviceClient = new GatewayServiceClient(merchantKey, "https://sandbox.mundipaggone.com");

// Submete a transação e retorna a resposta do gateway
HttpResponseGenerics<CreateSaleResponse, CreateSaleRequest> httpResponse = serviceClient.getSale().Create(createSaleRequest);
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "CreditCardOperation":"AuthOnly",
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

Muitos ecommerces possuem modelos de negócio que necessitam reservar o valor no cartão do cliente para depois realizar uma análise antifraude ou até mesmo para ativar outros agentes antes de cobrar efetivamente o consumidor.

🚧

Cartão de crédito (Pré-autorização)

A pré-autorização só pode ser efetuada para transações de cartões de crédito. Boletos e débito online não possuem essa funcionalidade.

Para esses modelos, a Mundi dedicou um método específico, a pré-autorização. Ele é bem simples, igual a uma requisição normal de cartão de crédito que vimos lá em cima. Lembra daquela tag que falamos, a CreditCardOperation? Então, basta mudá-la de AuthAndCapture para AuthOnly.

Com isso, nosso sistema somente autorizará a transação na adquirente e te retornará o status AuthorizedPendingCapture.

❗️

Período de pré-autorização

Normalmente as adquirentes permitem que a transação fique pré-autorização por um período máximo de 5 dias. Caso você necessite de um período maior você deve entrar em contato com a adquirente para negociá-lo.

Fique atento, pois após a pré-autorização você deve capturar a transação com o método de captura. Caso você extrapole esse período a adquirente não permitirá que você faça essa operação.

Pré-autorização com antifraude integrado

Quando o antifraude está habilitado na Mundi, o nosso sistema força a transação a ser pré-autorizada AuthOnly, mesmo que você envie uma operação de AuthAndCapture. Fazemos isso, pois a ferramenta de antifraude deve ter um SLA para poder analisar a transação e retorna a resposta de aprovação ou não.

Caso a transação seja aprovada pelo antifraude, você não precisa nos enviar a captura, nós cuidamos disso para você fazendo a captura automática. A transação capturada ficará com o status Captured. Por outro lado, caso ela seja reprovada, nós cancelaremos ela automaticamente e ela terá o status Voided ou Refunded.

Language