As transações são enviadas usando o método sendTransaction:withBlock do provider STNTransactionProvider.

O método sendTransaction:withBlock: deve receber um objeto STNTransactionModel como parâmetro. O objeto STNTransactionModel deve ter as seguintes propriedades definidas:

Nome

Tipo

Descrição

Obrigatório

amount

NSNumber

É o valor da transação e deve ser passado no formato de centavos. Por exemplo: caso queira enviar uma transação no valor de R$ 56,45, deve ser passado um NSNumber contendo o valor de 5645. Uma transação no valor de R$ 0,05 deve ser passada como 5.

Sim

type(¹)

STNTransactionTypeSimplified

Essa propriedade deve ser definida com o tipo da transação (débito ou crédito). Para isso podem ser usados os enums STNTransactionTypeSimplifiedCredit para crédito ou STNTransactionTypeSimplifiedDebit para débito.

Sim

instalmentAmount(²)

STNTransactionInstalmentAmount

Propriedade que define o número de parcelas da transação.

Sim

instalmentType(³)

STNInstalmentType

Define o tipo de parcelamento que será efetuado

Sim

initiatorTransactionKey

NSString

Deve conter uma string contendo um valor único para identificação da transação. Caso não seja definido, um identificador único será gerado automaticamente.

Não

shortName

NSString

Define um nome customizado que será exibido na fatura do cliente. O máximo de caracteres recomendado para que esse texto seja exibido corretamente em estratos e faturas é 11. Caso não seja definido, será exibido o nome cadastrado para o Stone Code em uso.

Não

merchant

NSMerchantModel

Essa propriedade deve ser definida quando o aplicativo possuir mais de 1 Stone Code ativado. A mesma pode ser usada para definir o lojista (Stone Code) que está passando a transação, caso tenha mais de 1. O valor default será sempre o primeiro Stone Code que foi ativado no aplicativo.

Não

📘

(¹) type

Para isso podem ser usados os enums:

  • STNTransactionTypeSimplifiedCredit para crédito

  • STNTransactionTypeSimplifiedDebit para débito.

📘

(²) instalmentAmount

Um dos seguintes enums devem ser utilizados :

  • STNTransactionInstalmentAmountOne - para 1x (à vista)

  • STNTransactionInstalmentAmountTwo - para 2x

  • STNTransactionInstalmentAmountThree - para 3x

  • STNTransactionInstalmentAmountFour - para 4x

  • STNTransactionInstalmentAmountFive - para 5x

  • STNTransactionInstalmentAmountSix - para 6x

  • STNTransactionInstalmentAmountSeven - para 7x

  • STNTransactionInstalmentAmountEight - para 8x

  • STNTransactionInstalmentAmountNine - para 9x

  • STNTransactionInstalmentAmountTen - para 10x

  • STNTransactionInstalmentAmountEleven - para 11x

  • STNTransactionInstalmentAmountTwelve - para 12x

📘

(³) instalmentType

Um dos seguintes enums devem ser usados:

  • STNInstalmentTypeNone - nenhum parcelamento, deve ser usado para transações à vista

  • STNInstalmentTypeMerchant - parcelamento com o adquirente (sem juros)

  • STNInstalmentTypeIssuer - parcelamento com o emissor (juros do emissor do cartão)

Exemplo:

STNTransactionModel *transaction = [[STNTransactionModel alloc] init];

transaction.amount = [NSNumber numberWithInt:1000]; // valor correspondente a R$ 10,00
transaction.type = STNTransactionTypeSimplifiedDebit; // transação no débito
transaction.instalmentAmount = STNTransactionInstalmentAmountOne; // número de parcelas: 1
transaction.instalmentType = STNInstalmentTypeNone; // tipo de parcelamento: nenhum
transaction.shortName = @"Minha Loja"; // nome customizado na fatura
transaction.initiatorTransactionKey = @"9999999999999"; // ITK customizado
 transaction.subMerchantCity = @"City"; 
 transaction.subMerchantPostalAddress = @"Postal address";
 transaction.subMerchantTaxIdentificationNumber = @"Identification number";
 transaction.subMerchantRegisteredIdentifier = @"Registered Identifier";

[STNTransactionProvider sendTransaction:transaction withBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded) // verifica se a requisição ocorreu com sucesso
        {
                // em caso de sucesso,
                // executa alguma coisa
        } else
        {
            // em caso de erro,
            // trata o erro
            NSLog(@"%@", error.description);
        }
}];

📘

Tipos de Transação

Para saber mais sobre Transações Financeiras, clique aqui.

Mensagem de Notificação

Durante a execução de uma transação o pinpad pode enviar mensagens de notificação. Essas mensagens são exibidas na tela do pinpad e podem ser acessadas dentro da aplicação usando o NSNotificationCenter. Basta adicionar um observer antes do envio da transação disparando um método que usará a notificação recebida. A notificação vem como uma string.

Abaixo um exemplo:

- (void)sendTransaction
{
    // adiciona o observer que executará o método 'handleNotification:'
        // o SDK provê o define 'PINPAD_MESSAGE' que possui o nome que a notificação deverá ter
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:PINPAD_MESSAGE object:nil];

    STNTransactionModel *transaction = [[STNTransactionModel alloc] init];

    transaction.amount = [NSNumber numberWithInt:1000];
    transaction.type = STNTransactionTypeSimplifiedCredit;
    transaction.instalmentAmount = STNTransactionInstalmentAmountOne;
    transaction.instalmentType = STNInstalmentTypeNone;

    [STNTransactionProvider sendTransaction:transaction withBlock:^(BOOL succeeded, NSError *error) {

              if (succeeded) // verifica se a requisição ocorreu com sucesso
              {
                    // em caso de sucesso,
                    // executa alguma coisa
            } else
            {
                // em caso de erro,
                // trata o erro
                NSLog(@"%@", error.description);
            }
        // remove o observer
        [[NSNotificationCenter defaultCenter] removeObserver:self name:PINPAD_MESSAGE object:nil];
    }];
}

- (void)handleNotification:(NSNotification *) notification
{
    // converte a notificação para string
    NSString *notificationString = [notification object];
    // imprime a string recebida
    NSLog(@"Mensagem do pinpad: %@", notificationString);
}

❗️

Possíveis códigos de erro:

105, 201, 203, 204, 205, 206, 207, 211, 214, 303, 601.