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.