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
.