// 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,
    Recurrency = new Recurrency() {
        DateToStartBilling = DateTime.Now,
        Frequency = FrequencyEnum.Monthly,
        Interval = 1,
        Recurrences = 5
    }
};

// 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) {
    foreach (var transactionResult in httpResponse.Response.CreditCardTransactionResultCollection) {
        Console.WriteLine("Status transação: {0} - Data cobrança: {1}", transactionResult.CreditCardTransactionStatus, transactionResult.DueDate);
    }
}
<?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");

    // Dados da transação de cartão de crédito
    $creditCardTransaction = new \Gateway\One\DataContract\Request\CreateSaleRequestData\CreditCardTransaction();
    $creditCardTransaction
    ->setAmountInCents(10000)
    ->setInstallmentCount(1)
    ->setCreditCard($creditCard)
    ;

    // Dados da recorrência
    $creditCardTransaction->getRecurrency()
    ->setDateToStartBilling(new \DateTime())
    ->setFrequency(\Gateway\One\DataContract\Enum\FrequencyEnum::MONTHLY)
    ->setInterval(1)
    ->setRecurrences(5);

    // Define dados da transação
    $createSaleRequest->addCreditCardTransaction($creditCardTransaction);
        
    //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)

creditCardTransactionItem = Gateway::CreditCardTransaction.new
creditCardTransactionItem.AmountInCents = 10000
creditCardTransactionItem.CreditCard.CreditCardBrand = 'Visa'
creditCardTransactionItem.CreditCard.CreditCardNumber = '4111111111111111'
creditCardTransactionItem.CreditCard.ExpMonth = 10
creditCardTransactionItem.CreditCard.ExpYear = 22
creditCardTransactionItem.CreditCard.HolderName = 'LUKE SKYWALKER'
creditCardTransactionItem.CreditCard.SecurityCode = '123'
creditCardTransactionItem.InstallmentCount = 1
creditCardTransactionItem.Recurrency.DateToStartBilling = DateTime.new(2015,12,14,19,57,2).strftime("%Y-%m-%dT%H:%M:%S")
creditCardTransactionItem.Recurrency.Frequency = 'Monthly'
creditCardTransactionItem.Recurrency.Interval = 1
creditCardTransactionItem.Recurrency.Recurrences = 5

createSaleRequest = Gateway::CreateSaleRequest.new
createSaleRequest.CreditCardTransactionCollection << creditCardTransactionItem
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, recurrency
from mundipaggOnePython import GatewayServiceClient
from enum_types import PlatformEnvironment, HttpContentTypeEnum
from datetime import datetime

#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 os dados da recorrência.
recurrency_data = recurrency(frequency = 'Monthly', interval = 1, date_to_start_billing = datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), recurrences = 5, one_dollar_auth = True)

#Cria a transação.
transaction_collection = [creditcard_transaction(10000, creditcard_data, recurrency = recurrency_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);
creditCardTransaction.setRecurrency(new DataContracts.Recurrency.Recurrency());
creditCardTransaction.getRecurrency().setDateToStartBilling(Date.valueOf("2015-12-14"));
creditCardTransaction.getRecurrency().setFrequency(FrequencyEnum.Monthly);
creditCardTransaction.getRecurrency().setInterval(1);
creditCardTransaction.getRecurrency().setRecurrences(5);

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

return httpResponse.getRawResponse();
{
    "CreditCardTransactionCollection": [
        {
            "AmountInCents": 10000,
            "CreditCard": {
                "CreditCardBrand": "Visa",
                "CreditCardNumber": "4111111111111111",
                "ExpMonth": 10,
                "ExpYear": 22,
                "HolderName": "LUKE SKYWALKER",
                "SecurityCode": "123"
            },
            "InstallmentCount": 1,
            "Recurrency": {
                "DateToStartBilling": "2015-12-14T19:57:02",
                "Frequency": "Monthly",
                "Interval": 1,
              	"OneDollarAuth":true,
                "Recurrences": 5
            }
        }
    ],
    "Options": {},
    "Order": {
        "OrderReference": "NumeroDoPedido"
    }
}

A transação de recorrência nada mais é que um transação normal caracterizada como uma recorrência. Para isso, é só colocar o Recurrency na coleção de cartão de crédito.

Ao enviar, a recorrência você deve informar alguns campos específicos:

DateToStartBilling, a data que a recorrência será iniciada;
Frequency, a frequência que será cobrada, Daily (Diária), Weekly (Semanal),Monthly(Mensal), Yearly(Anual)
Interval, o intervalo entre a frequência (Nesse caso, se a frequência for mensal, e você enviar 2 no intervalo, será feita uma cobrança a cada dois meses.)
OneDollarAuth, para transações de recorrência é comum realizar uma validação no cartão do cliente, portanto é só informar True, caso queira essa transação de R$ 1,00 ou False caso não queira.
Recurrences , corresponde ao número de recorrências que serão criadas, caso seja informado 0, será criada uma recorrência infinita.

📘

Cartões expirados

Caso uma recorrência seja criada com um número de recorrências (Recurrences) que ultrapasse a data de validade do cartão, não serão criadas as transações posteriores a data. Por exemplo, se você criar uma recorrência com 12 cobranças em 01/2015 e a data de validade do cartão é 06/2015, serão criadas apenas 6 transações.

Ao criar a recorrência todas as transações serão criadas, por exemplo caso você envie Recurrences = 6, criaremos as 6 transações.

Normalmente as lojas criam a recorrência no ato da compra, portanto a primeira transação será autorizada e seguirá o fluxo normal de status das transações, já as outras 5 transações ficarão pendentes com status PendingAuthorize, pois serão cobradas somente no próximo agendamento (DueDate).

Caso você tenha enviado a opção de OneDollarAuth, será criada inicialmente uma transação de R$ 1,00 além das seis, para validar o cartão.

Se a primeira transação não for autorizada pelo adquirente, a recorrência não será criada e ficará com o status Invalid, nesse caso você deve criá-la novamente.

📘

Recorrências infinitas

Quando é enviado 0 no campo Recurrences são criadas recorrências infinitas na Mundi. Porém, primeiramente são criadas 12 transações e na medida que as cobranças são realizadas uma nova transação é adicionada no sistema.

Cancelando uma recorrência

O cancelamento de uma recorrência é realizado pelo mesmo método de uma transação normal.

Ao cancelar uma dada recorrência, por exemplo, no mês de abril, todas as recorrências futuras são canceladas, porém as passadas se mantêm inclusive a do mês de abril.

Language