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"
    },
    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 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();

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setPaymentMethodCode(\Gateway\One\DataContract\Enum\PaymentMethodEnum::SIMULATOR)
        ->setCreditCardOperation(\Gateway\One\DataContract\Enum\CreditCardOperationEnum::AUTH_AND_CAPTURE)
        ->getCreditCard()
				->setCreditCardBrand(\Gateway\One\DataContract\Enum\CreditCardBrandEnum::VISA)
				->setCreditCardNumber("4111111111111111")
				->setExpMonth(10)
				->setExpYear(2022)
				->setHolderName("LUKE SKYWALKER")
				->setSecurityCode("123");

    //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)

# create 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.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)]

#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.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"
            },
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

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.

Você também pode acrescentar as informações do seu cliente na requisição e já ficar preparado caso passe a utilizar um sistema antifraude, basta olhar aqui.

📘

Diferença entre pedido e transação

Um pedido pode ter "n" transações. Este número varia de acordo com a forma de pagamento selecionado. Ex: Um pedido pode ter seu valor total dividido em dois cartões diferente, gerando duas transações. Ou seja, o OrderReference é o mesmo para as duas transações porém o TransactionReference (Número de cada transação dentro de um pedido) deve ser diferente.

Com os exemplos acima você já consegue enviar uma transação para nosso sandbox.

É importante lembrar que alguns campos são indispensáveis em uma transação, assim, caso você não nos envie, os valores default serão utilizados. Os campos são: o número de parcelas InstallmentCount (default: 1), o tipo de operação que você deseja fazer CreditCardOperation (pré-autorização ou autorização e captura instantânea - default: AuthAndCapture), dentre outras.

👍

Retentativa Automática

A Mundi é um gateway que possui todas as suas ferramentas voltadas para aumentar a sua conversão de pagamentos. Dentre elas, temos a retentativa automática, ou seja, em tempo real tentamos autorizar a transação na mesma ou em outra processadora de cartão, caso a transação não seja autorizada. Se você quiser ativar essa funcionalidade fale com a nossa equipe de relacionamento.

Ao receber a resposta da requisição, você poderá receber dois tipos de status de transação: Captured caso a sua transação tenha sido autorizada e capturada ou NotAuthorized para casos que a transação não obteve sucesso na autorização.

Lembre que estamos fazendo uma transação na qual o default é CreditCardOperation = AuthAndCapture.

Adaptando para a sua necessidade

Esse é o request de uma transação básica, ou seja, o mínimo necessário para que você conclua uma venda ou cobrança com poucas informações. Dedicamos a seção referências para detalhar os outros campos que podem ser enviados.

Na Mundi, você também pode integrar seu antifraude, realizar transações recorrentes (para modelos de assinatura), disponibilizar compras com múltiplos cartões e até mesmo guardar o cartão do seu cliente para utilizá-lo na compra com um clique.

Language