Enviando uma requisição com multi meios

// Cria a primeira transação.
var transaction1 = new CreditCardTransaction() {
    AmountInCents = 10000,
    CreditCard = new CreditCard() {
        CreditCardBrand = CreditCardBrandEnum.Visa,
        CreditCardNumber = "4111111111111111",
        ExpMonth = 10,
        ExpYear = 22,
        HolderName = "LUKE SKYWALKER",
        SecurityCode = "123"
    },
    InstallmentCount = 1
};
// Cria a segunda transação.
var transaction2 = new CreditCardTransaction() {
    AmountInCents = 5000,
    CreditCard = new CreditCard() {
        CreditCardBrand = CreditCardBrandEnum.Mastercard,
        CreditCardNumber = "5444444444444444",
        ExpMonth = 9,
        ExpYear = 23,
        HolderName = "LORD VADER",
        SecurityCode = "321"
    },
    InstallmentCount = 1
};

// Cria requisição.
var createSaleRequest = new CreateSaleRequest() {
    // Adiciona as duas transações na requisição.
    CreditCardTransactionCollection = new Collection<CreditCardTransaction>(new CreditCardTransaction[] { transaction1, transaction2 }),
    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) {
    foreach (var transactionResult in httpResponse.Response.CreditCardTransactionResultCollection) {
        Console.WriteLine("Status transação: {0}", transactionResult.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
    $creditCard1 = \Gateway\One\Helper\CreditCardHelper::createCreditCard("4111 1111 1111 1111", "LUKE SKYWALKER", "10/2022", "123");

    // Cria objeto do cartão de crédito
    $creditCard2 = \Gateway\One\Helper\CreditCardHelper::createCreditCard("5444 4444 4444 4444", "LORD VADER", "09/2023", "321");

    // Define dados da primeira transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(10000)
        ->setInstallmentCount(1)
        ->setCreditCard($creditCard1);
        ;

    // Define dados da segunda transação
    $createSaleRequest->addCreditCardTransaction()
        ->setAmountInCents(5000)
        ->setInstallmentCount(1)
        ->setCreditCard($creditCard2);
        ;

    //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)
{
    $response = array("message" => $error->getMessage());
}
catch (\Gateway\One\DataContract\Report\ApiError $error)
{
    $response = array("message" => $error->errorCollection->ErrorItemCollection[0]->Description);
}
catch (\Exception $ex)
{
    $response = array("message" => "Ocorreu um erro inesperado.");
}
finally
{
    header('Content-Type: application/json');
    var_dump($response);
}
?>
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
creditCardTransaction1 = Gateway::CreditCardTransaction.new

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

# create credit card transaction object
creditCardTransaction2 = Gateway::CreditCardTransaction.new

# 100 reais in cents 
creditCardTransaction2.AmountInCents = 5000
creditCardTransaction2.CreditCard.CreditCardBrand = 'Mastercard'
creditCardTransaction2.CreditCard.CreditCardNumber = '5444444444444444'
creditCardTransaction2.CreditCard.ExpMonth = 9
creditCardTransaction2.CreditCard.ExpYear = 23
creditCardTransaction2.CreditCard.HolderName = 'LORD VADER'
creditCardTransaction2.CreditCard.SecurityCode = '321'
creditCardTransaction2.InstallmentCount = 1

# creates request object for transaction creation
createSaleRequest = Gateway::CreateSaleRequest.new

# adds the credit card transaction in the collection
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction1
createSaleRequest.CreditCardTransactionCollection << creditCardTransaction2
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 primeiro cartao.
creditcard_data_1 = creditcard(creditcard_number='4111111111111111', creditcard_brand='Visa', exp_month=10, exp_year=2022,
                             security_code='123', holder_name='LUKE SKYWALKER')
# Cria a primeira transacao							 
transaction_1 = creditcard_transaction(10000, creditcard_data_1)

# Coleto os dados do segundo cartao.						 
creditcard_data_2 = creditcard(creditcard_number='5444444444444444', creditcard_brand='Mastercard', exp_month = 9, exp_year=2023,
                             security_code='321', holder_name='LORD VADER')
# Cria a segunda transacao							 
transaction_2 = creditcard_transaction(5000, creditcard_data_2)	 

#Cria o array de transacoes
transaction_collection = [transaction_1, transaction_2]

#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()

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

// Cria a transação de cartão de crédito
CreditCardTransaction creditCardTransaction1 = new CreditCardTransaction();
creditCardTransaction1.setAmountInCents(10000L);
creditCardTransaction1.setCreditCard(new CreditCard());
creditCardTransaction1.getCreditCard().setCreditCardBrand(CreditCardBrandEnum.Visa);
creditCardTransaction1.getCreditCard().setCreditCardNumber("4111111111111111");
creditCardTransaction1.getCreditCard().setExpMonth(10);
creditCardTransaction1.getCreditCard().setExpYear(22);
creditCardTransaction1.getCreditCard().setHolderName("LUKE SKYWALKER");
creditCardTransaction1.getCreditCard().setSecurityCode("123");
creditCardTransaction1.setInstallmentCount(1);

// Cria a transação de cartão de crédito
CreditCardTransaction creditCardTransaction2 = new CreditCardTransaction();
creditCardTransaction2.setAmountInCents(5000L);
creditCardTransaction2.setCreditCard(new CreditCard());
creditCardTransaction2.getCreditCard().setCreditCardBrand(CreditCardBrandEnum.Mastercard);
creditCardTransaction2.getCreditCard().setCreditCardNumber("5444444444444444");
creditCardTransaction2.getCreditCard().setExpMonth(9);
creditCardTransaction2.getCreditCard().setExpYear(23);
creditCardTransaction2.getCreditCard().setHolderName("LORD VADER");
creditCardTransaction2.getCreditCard().setSecurityCode("321");
creditCardTransaction2.setInstallmentCount(1);

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

// Cria o Sale Request para enviar o objeto de request
CreateSaleRequest createSaleRequest = new CreateSaleRequest();
createSaleRequest.setCreditCardTransactionCollection(new ArrayList<>());
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction1);
createSaleRequest.getCreditCardTransactionCollection().add(creditCardTransaction2);
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);

return httpResponse.getRawResponse();
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "InstallmentCount": 1
        },
        {
            "AmountInCents": 5000,
            "CreditCard": {
                "CreditCardBrand": "Mastercard",
                "CreditCardNumber": "5444444444444444",
                "ExpMonth": 9,
                "ExpYear": 23,
                "HolderName": "LORD VADER",
                "SecurityCode": "321"
            },
            "InstallmentCount": 1
        }
    ],
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

Um pedido multi meios consiste em uma transação normal com mais de um cartão na coleção de cartão de crédito. Se você notar, cada cartão dentro da coleção terá um TransactionReference específico, para cada transação, enquanto o pedido terá um único OrderReference.

Ao utilizar essa funcionalidade você deve ajustar o seu modelo de negócio, pois o pedido dependerá de mais de uma transação e cada uma delas terá o comportamento independente uma da outra, como uma transação normal.

Por exemplo, caso você envie um pedido com uma transação de R$ 100,00 em um cartão e outra de R$ 200,00 em outro cartão, cada um deles será enviado separadamente para a processadora (adquirente). Assim, um dos cartões pode ter o pedido autorizado e capturado com status Captured e o outro não autorizado, com status NotAuthorized.

Nesse cenário você deve decidir o que fará com o pedido de acordo com o seu modelo de negócio. Você pode: cancelar o pedido capturado, ativar o cliente e oferecer outro meio de pagamento, realizar uma ação específica que deseje.

Multi meios (Boleto e Cartão)

O multi meios permite que você crie um pedido com boleto e cartão na Mundi. Abaixo colocamos um exemplo de requisição.

{
    "BoletoTransactionCollection":[{
        "AmountInCents":350,
        "BankNumber":"237",
        "DocumentNumber":"12345678901",
        "Instructions":"Pagar antes do vencimento",
        "Options":{
            "CurrencyIso":"BRL",
            "DaysToAddInBoletoExpirationDate":7
        },
        "TransactionReference":"BoletoTest#01"
    }],
    "CreditCardTransactionCollection":[{
        "AmountInCents":750,
        "CreditCard":{
            "CreditCardBrand":"Visa",
            "CreditCardNumber":"4111111111111111",
            "ExpMonth":10,
            "ExpYear":19,
            "HolderName":"Maria do Carmo",
            "SecurityCode":"123"
        },
        "CreditCardOperation":"AuthAndCapture",
        "InstallmentCount":1,
        "Options":{
            "CurrencyIso":"BRL",
            "PaymentMethodCode":1
        },
        "TransactionReference":"CreditCardTest#01"
    }],
    "Order":{
        "OrderReference":"OrderTest#01"
    },
}

Para pedido com pagamentos em boleto e cartão, você deve ajustar a sua aplicação para os SLAs de resposta de cada meio de pagamento. Cartões de crédito são autorizados em tempo real, já os boletos demoram até 2 dias da data do pagamento para serem conciliados.

Assim, você pode ter uma transação autorizada instantaneamente (cartão de crédito) enquanto a outra terá no máximo a data do vencimento mais 2 dias para ser conciliada (boleto bancário).

Language