Pagamento | Deeplink
O deeplink de pagamento irá iniciar a aplicação de pagamento da Getnet que irá tomar conta do terminal e iniciará o fluxo de pagamento solicitando primeiramente a forma de pagamento como ilustrado nas imagens abaixo. Se os dados já forem enviados no deeplink, então as telas serão automaticamente “puladas”.

No final da transação de pagamento, se a transação for aprovada, irá apresentar a tela abaixo e a impressão da via do estabelecimento iniciará automaticamente. Ao clicar em qualquer uma das duas opções, irá apresentar a mensagem de "Remova seu cartão" e a aplicação de pagamento irá responder somente após a remoção do cartão, com exceção das vendas com tarja magnética.
Caso ocorra alguma falha na transação, irá apresentar a tela abaixo e a aplicação da Getnet irá aguardar a remoção do cartão para sair.
Nas seções a seguir serão especificadas como utilizar as versões deste deeplink: Pagamento v1 (Deprecated), Pagamento v2 e Pagamento v3. Recomendamos fortemente que sempre utilize a última versão disponível dos deeplinks.
Exemplo de implementação (utilizando Pagamento v3)
public class MainActivity extends AppCompatActivity {
private final int REQUEST_CODE = 1001;
private final String ARG_RESULT = "result";
private final String ARG_RESULT_DETAILS = "resultDetails";
private final String ARG_AMOUNT = "amount";
private final String ARG_TYPE = "type";
private final String ARG_INPUT_TYPE = "inputType";
private final String ARG_INSTALLMENTS = "installments";
private final String ARG_NSU = "nsu";
private final String ARG_BRAND = "brand";
private final String ARG_CALLER_ID = "callerId";
private final String PARAM_PAYMENT_TYPE = "paymentType";
private final String PARAM_AMOUNT = "amount";
private final String PARAM_CUR_POS = "currencyPosition";
private final String PARAM_CUR_CODE = "currencyCode";
private final String PARAM_CALLER_ID = "callerId";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
String callerId = UUID.randomUUID().toString();
Bundle bundle = new Bundle();
bundle.putString(PARAM_PAYMENT_TYPE, "debit");
bundle.putString(PARAM_AMOUNT, "000000001000");
bundle.putString(PARAM_CUR_POS, "CURRENCY_AFTER_AMOUNT");
bundle.putString(PARAM_CUR_CODE, "986");
bundle.putString(PARAM_CALLER_ID, callerId)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("getnet://pagamento/v3/payment"));
intent.putExtras(bundle);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(REQUEST_CODE == requestCode && RESULT_OK == resultCode){
String result = data.getStringExtra(ARG_RESULT);
String resultDetails = data.getStringExtra(ARG_RESULT_DETAILS);
String amount = data.getStringExtra(ARG_AMOUNT);
String type = data.getStringExtra(ARG_TYPE);
String inputType = data.getStringExtra(ARG_INPUT_TYPE);
String installments = data.getStringExtra(ARG_INSTALLMENTS);
String nsu = data.getStringExtra(ARG_NSU);
String brand = data.getStringExtra(ARG_BRAND);
String callerId = data.getStringExtra(ARG_CALLER_ID);
}
}
}
class MainActivity : AppCompatActivity() {
private val REQUEST_CODE = 1001
private val ARG_RESULT = "result"
private val ARG_RESULT_DETAILS = "resultDetails"
private val ARG_AMOUNT = "amount"
private val ARG_TYPE = "type"
private val ARG_INPUT_TYPE = "inputType"
private val ARG_INSTALLMENTS = "installments"
private val ARG_NSU = "nsu"
private val ARG_BRAND = "brand"
private val ARG_CALLER_ID = "callerId"
private val PARAM_PAYMENT_TYPE = "paymentType";
private val PARAM_AMOUNT = "amount";
private val PARAM_CUR_POS = "currencyPosition";
private val PARAM_CUR_CODE = "currencyCode";
private val PARAM_CALLER_ID = "callerId";
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callerId = UUID.randomUUID().toString()
val bundle = Bundle().apply {
putString(PARAM_PAYMENT_TYPE, "debit")
putString(PARAM_AMOUNT, "000000001000")
putString(PARAM_CUR_POS, "CURRENCY_AFTER_AMOUNT")
putString(PARAM_CUR_CODE, "986")
putString(PARAM_CALLER_ID, callerId)
}
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://pagamento/v3/payment"))
intent.putExtras(bundle)
startActivityForResult(intent, REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (REQUEST_CODE == requestCode && resultCode == RESULT_OK) {
val result = data?.getStringExtra(ARG_RESULT)
val resultDetails = data?.getStringExtra(ARG_RESULT_DETAILS)
val amount = data?.getStringExtra(ARG_AMOUNT)
val callerId = data?.getStringExtra(ARG_CALLER_ID)
val type = data?.getStringExtra(ARG_TYPE)
val inputType = data?.getStringExtra(ARG_INPUT_TYPE)
val installments = data?.getStringExtra(ARG_INSTALLMENTS)
val nsu = data?.getStringExtra(ARG_NSU)
val brand = data?.getStringExtra(ARG_BRAND)
}
}
}
import React, { useState, useLayoutEffect } from 'react';
import { View, Text } from 'react-native';
import * as IntentLauncher from 'expo-intent-launcher';
import { randomUUID } from 'expo-crypto';
const RESULT_OK = -1;
const RESULT_CANCELED = 0;
const ACTION_VIEW = 'android.intent.action.VIEW';
export default function MainComponent() {
const ARG_RESULT = "result";
const ARG_RESULT_DETAILS = "resultDetails";
const ARG_AMOUNT = "amount";
const ARG_TYPE = "type";
const ARG_INPUT_TYPE = "inputType";
const ARG_INSTALLMENTS = "installments";
const ARG_NSU = "nsu";
const ARG_BRAND = "brand";
const ARG_CALLERID = "callerId";
const PARAM_PAYMENT_TYPE = 'paymentType';
const PARAM_AMOUNT = 'amount';
const PARAM_CUR_POS = 'currencyPosition';
const PARAM_CUR_CODE = 'currencyCode';
const PARAM_CALLER_ID = 'callerId';
const [resultCode, setResultCode] = useState<number>();
const [resultData, setResultData] = useState({});
const launchIntent = async(deeplink: string, bundle: {}) => {
const intentParams = { ...bundle, data: deeplink }; //Unindo URI Deeplink com o bundle no intentParams
try {
const activityResult = await IntentLauncher.startActivityAsync(ACTION_VIEW, intentParams);
if (activityResult.data && activityResult.resultCode == RESULT_OK) {
if(activityResult.extra) {
const JSON_obj = JSON.parse(JSON.stringify(activityResult.extra))
const result = JSON_obj[ARG_RESULT];
const resultDetails = JSON_obj[ARG_RESULT_DETAILS];
const amount =JSON_obj[ARG_AMOUNT];
const callerId = JSON_obj[ARG_CALLERID];
const type = JSON_obj[ARG_TYPE];
const inputType = JSON_obj[ARG_INPUT_TYPE];
const installments = JSON_obj[ARG_INSTALLMENTS];
const nsu = JSON_obj[ARG_NSU];
const brand = JSON_obj[ARG_BRAND];
setResultData(JSON_obj);
setResultCode(activityResult.resultCode);
}
}
} catch (error) {
console.error(error);
}
};
useLayoutEffect(() => {
const callerId = randomUUID();
const extras: { [key: string]: string } = {
[PARAM_PAYMENT_TYPE]: 'debit',
[PARAM_AMOUNT]: '000000001000',
[PARAM_CUR_POS]: 'CURRENCY_AFTER_AMOUNT',
[PARAM_CUR_CODE]: '986',
[PARAM_CALLER_ID]: callerId,
};
const intentParams = {
extra: extras,
};
//Dispara o Deeplink assim que a tela termina de ser carregada
launchIntent('getnet://pagamento/v3/payment', intentParams);
}, []);
return (
<View>
<Text>Result Code: {resultCode}</Text>
<Text>Result Data: {JSON.stringify(resultData)}</Text>
</View>
);
}
Para utilizar o deeplink, será necessário fazer uso do código nativo:
package com.example.deeplink_test
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
class MainActivity: FlutterActivity(), MethodCallHandler {
private val CHANNEL = "sample.android/deeplink"
private lateinit var channel: MethodChannel
private var callback: Result? = null
private var requestCode: Int = -1
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).apply {
setMethodCallHandler(this@MainActivity)
}
}
override fun onMethodCall(call: MethodCall, result: Result) {
var action = ""
var deeplink = ""
var bundle = Bundle()
when(call.method) {
"startActivityForResult" -> {
callback = result
val params = call.arguments as? Map<String, Any>
params?.run {
for ((key, value) in params) {
when(key.toString()) {
"action" -> action = value.toString()
"data" -> deeplink = value.toString()
"requestCode" -> requestCode = value.toString().toInt()
"arguments" -> {
bundle.apply{
for((argKey, argValue) in (value as Map<String, Any>)) {
when(argValue) {
is String -> putString(argKey, argValue as String)
is Int -> putInt(argKey, argValue as Int)
is Boolean -> putBoolean(argKey, argValue as Boolean)
}
}
}
}
}
}
val intent = Intent(action, Uri.parse(deeplink)).apply {
putExtras(bundle)
}
startActivityForResult(intent, requestCode)
}
}
else -> result.notImplemented()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(requestCode) {
this.requestCode -> {
when(resultCode) {
Activity.RESULT_OK -> {
data?.getExtras()?.let { extras ->
val resultMap = hashMapOf<String, Any?>()
for(key in extras.keySet()) {
resultMap[key] = extras.get(key)
}
callback?.success(resultMap)
}
} else -> callback?.error("ERROR", "No valid return from DeepLink", null)
}
} else -> callback?.error("ERROR", "Activity result was not OK", null)
}
}
}
E com o código nativo criado, podemos chamar ele através do startIntent abaixo:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:uuid/uuid.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key,});
@override
State<MyApp> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
static const int REQUEST_CODE = 10001;
static const String ARG_RESULT = 'result';
static const String ARG_RESULT_DETAILS = 'resultDetails';
static const String ARG_AMOUNT = 'amount';
static const String ARG_TYPE = 'type';
static const String ARG_INPUT_TYPE = 'inputType';
static const String ARG_INSTALLMENTS = 'installments';
static const String ARG_NSU = 'nsu';
static const String ARG_BRAND = 'brand';
static const String ARG_CALLER_ID = 'callerId';
static const String PARAM_PAYMENT_TYPE = 'paymentType';
static const String PARAM_AMOUNT = 'amount';
static const String PARAM_CUR_POS = 'currencyPosition';
static const String PARAM_CUR_CODE = 'currencyCode';
static const String PARAM_CALLER_ID = 'callerId';
int? resultCode;
var deeplinkResult = '';
static const platform = MethodChannel('sample.android/deeplink');
void startIntent(String deeplink, Map<String, String> bundle) async {
try {
final intent = {
'requestCode': REQUEST_CODE,
'action': 'android.intent.action.VIEW',
'data': deeplink,
'arguments': bundle,
};
var result = await platform.invokeMethod('startActivityForResult', intent);
if (result != null) {
var resultMap = Map<String, dynamic>.from(result);
String resultValue = resultMap[ARG_RESULT];
String resultDetails = resultMap[ARG_RESULT_DETAILS];
String amount = resultMap[ARG_AMOUNT];
String type = resultMap[ARG_TYPE];
String inputType = resultMap[ARG_INPUT_TYPE];
String installments = resultMap[ARG_INSTALLMENTS];
String nsu = resultMap[ARG_NSU];
String brand = resultMap[ARG_BRAND];
String callerId = resultMap[ARG_CALLER_ID];
setState(() {
resultCode = 1;
});
}
} catch (e) {
log('Error launching intent: $e');
}
}
void _sendDeeplink() {
var uuid = const Uuid();
String callerId = uuid.v4();
Map<String, String> intentParams = {
PARAM_PAYMENT_TYPE: 'debit',
PARAM_AMOUNT: '000000001000',
PARAM_CUR_POS: 'CURRENCY_AFTER_AMOUNT',
PARAM_CUR_CODE: '986',
PARAM_CALLER_ID: callerId
};
startIntent('getnet://pagamento/v3/payment', intentParams);
}
@override
void initState() {
super.initState();
_sendDeeplink();
}
@override
Widget build(BuildContext context) {
return ();
}
}
Identificador Único de Transação¶
Caso houver necessidade de criar um identificador das transações, recomendamos utilizar o retorno dos parâmetros NSU, Número Lógico e data, concatenando os três formará um identificador de transações único. Estes parâmetros são retornos do deeplink “Pagamento”, com exceção do Número Lógico que é retornado no deeplink “Info”.
NSU - Código de autorização da transação Getnet, este pode se repetir em terminais e dias
diferentes.
Parâmetro: nsu
Número Lógico - Identificação do terminal em que a transação foi realizada.
Parâmetro: numlogic
Data - Data em que foi realizada a transação. Ex: 27/01/2020 = 0127.
Parâmetro: gmtDateTime
Pagamento V1 (Deprecated)¶
Atenção! Esta versão do deeplink de pagamento está sendo descontinuada e em breve não será mais suportada. Por favor utilize a última versão do deeplink: Pagamento v3.
O deeplink getnet://pagamento/v1/payment irá iniciar a aplicação de pagamento da Getnet que irá tomar conta do terminal e iniciará o fluxo de pagamento.
Abaixo seguem as tabelas de requisição e resposta e seus respectivos parâmetros:
Request(Deprecated)
| Obrigatoriedade | Parâmetro | Formato | Descrição |
|---|---|---|---|
| OPCIONAL | paymentType | String | Este parâmetro informa qual o tipo de pagamento que será feito: “credit”, “debit”, “voucher”. Se esse campo for informado a tela de seleção de tipo de pagamento será pulada. |
| OPCIONAL | creditType | String | Se informado “credit” no parâmetro “paymentType” então o “creditType” deverá ser informado com o tipo de crédito: “creditMerchant” - Crédito parcelado Lojista “creditIssuer” - Crédito parcelado Emissor Se informado “credit” no parâmetro “paymentType” então a tela de tipo de crédito será pulada. Crédito à vista não precisa enviar este campo. |
| OPCIONAL | installments | String | Este parâmetro informa o número de parcelas. Se informado o parâmetro “creditType” com o valor “creditMerchant” ou “creditIssuer” então este parâmetro deve ser informado. |
| OPCIONAL | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: "000000001234" é equivalente R$ 12,34. Se não for informado, o usuário precisará preencher o valor no app de Pagamento |
| OPCIONAL | currencyPosition | String | "CURRENCY_AFTER_AMOUNT" ou "CURRENCY_BEFORE_AMOUNT" Default : “CURRENCY_BEFORE_AMOUNT” |
| OPCIONAL | currencyCode | String | Código da moeda, de acordo com a ISO-4217 Exemplo: "986" este é código do Real (R$) Para a lista completa das moedas acesse: https://pt.wikipedia.org/wiki/ISO_4217 Default: “986” |
| OPCIONAL | extraScreens | String | Este parâmetro define como tem que ser apresentada a(s) tela(s) adicional(is) após o portador do cartão preencher a senha. Mais detalhes na seção Telas Adicionais. |
| OPCIONAL | extraData | String | Este parâmetro serve para o adicionar campos para ser enviado para o host da Getnet. Mais detalhes na seção Dados Adicionais. |
| OPCIONAL | disableTypedTransaction | Boolean | Bloqueia a funcionalidade de digitar o número do portador do cartão na tela que solicitar o cartão. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | disableMagStripe | Boolean | Desabilita a leitora de cartões com tarja. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | disableCustomerSlipSpace | Boolean | Desabilita o espaçamento final para o corte da via do cliente. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | orderId | String | Neste parâmetro deve ser enviado um valor único para cada pedido. Este identificador é de responsabilidade da automação e será repassado para o Conciliador. String de até 50 caracteres. |
Response(Deprecated)
| Quando retorna? | Parâmetro | Formato | Descrição |
|---|---|---|---|
| SEMPRE | result | String | Resultado da transação, conforme a Tabela de Resultados das Funcionalidades. |
| OPCIONAL | resultDetails | String | Texto com detalhes do retorno, conforme a Tabela de Resultados das Funcionalidades. |
| SEMPRE | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: 000000001234 = R$ 12,34 |
| OPCIONAL | nsu | String | Código de autorização da transação da Getnet – ele é único por terminal (CV impresso no comprovante, não pode se repetir no mesmo dia) |
| OPCIONAL | nsuLastSuccesfullMessage | String | Último NSU da GetNet gerado com sucesso |
| OPCIONAL | cvNumber | String | Número do CV – informação que deve ser enviada no estorno - ele é único por terminal |
| SEMPRE | type | String | 02 - Débito 11 - Crédito a vista 12 - Crédito parcelado Lojista 13 - Crédito parcelado Emissor 03 - Voucher |
| OPCIONAL | brand | String | Bandeira do cartão utilizado |
| SEMPRE | inputType | String | 021 - tarja magnética 051 - chip 071 - chip sem contato 801 - tarja magnética - fallback |
| OPCIONAL | installments | String | Quantidade de parcelas selecionada |
| OPCIONAL | gmtDateTime | String | Data e hora GMT da transação (MMDDhhmmss). Este campo representa o horário GMT |
| OPCIONAL | nsuLocal | String | NSU gerado no terminal( DOC impresso no comprovante, número sequencial por terminal) |
| OPCIONAL | authorizationCode | String | Código único de autorização (AUT impresso no comprovante, pode se repetir) * Este campo é de responsabilidade dabandeira * |
| OPCIONAL | cardBin | String | Os 6 primeiros dígitos do cartão |
| OPCIONAL | cardLastDigits | String | Os 4 últimos dígitos do cartão |
| OPCIONAL | extraScreensResult | String | Quando for enviada na requisição o campo extraScreens. O retorno será o mesmo só que com o campo value do field preenchido. Mais detalhes na seção Telas Adicionais. |
| OPCIONAL | cardholderName | String | Retorna o nome do portador gravado no cartão, se disponível. |
| OPCIONAL | automationSlip | String | Neste parâmetro enviamos as informações que devem ser incluídas nos Comprovantes Impressos do estabelecimento e do cliente. Seu aplicativo só é obrigado a imprimir esses campos caso você opte por usar a funcionalidade Responsabilidade de Impressão, pois nesse caso o aplicativo Pagamento não irá imprimir os comprovantes. Mais detalhes na seção Dados do Comprovante. |
| OPCIONAL | orderId | String | Retorna caso um orderId tenha sido enviado na requisição. Este identificador é de responsabilidade da automação e é repassado para o Conciliador. |
Pagamento V2¶
Essa versão da aplicação de Pagamento tem suporte ao Split de Pagamento.
O deeplink getnet://pagamento/v2/payment irá iniciar a aplicação de pagamento da Getnet em modo Split de Pagamento, que irá tomar conta do terminal.
Foi adicionado o campo splitPayloadRequest, para requisição do Split de Pagamento. Foi adicionado o campo splitPayloadResponse, para resposta do Split de Pagamento.
Atenção! A partir desta versão alguns campos que eram opcionais se tornaram obrigatórios.
Abaixo seguem as tabelas de requisição e resposta e seus respectivos parâmetros:
Request
| Obrigatoriedade | Parâmetro | Formato | Descrição |
|---|---|---|---|
| OBRIGATÓRIO | paymentType | String | Este parâmetro informa qual o tipo de pagamento que será feito: “credit”, “debit”, “voucher(*)”. ( * ) Voucher pode ser usado no Pagamento v2, mas apenas em pagamentos sem Split de Pagamento. |
| OBRIGATÓRIO(*) | creditType | String | Se informado “credit” no parâmetro “paymentType” então o “creditType” deverá ser informado com o tipo de crédito: “creditMerchant” - Crédito parcelado Lojista “creditIssuer” - Crédito parcelado Emissor Crédito à vista não precisa enviar este campo. |
| OPCIONAL(*) | installments | String | Este parâmetro informa o número de parcelas. ( * ) Se informado o parâmetro “creditType” com o valor “creditMerchant” ou “creditIssuer” então este parâmetro deve ser informado. |
| OBRIGATÓRIO | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: "000000001234" é equivalente R$ 12,34. |
| OPCIONAL | currencyPosition | String | "CURRENCY_AFTER_AMOUNT" ou "CURRENCY_BEFORE_AMOUNT" Default : “CURRENCY_BEFORE_AMOUNT” |
| OPCIONAL | currencyCode | String | Código da moeda, de acordo com a ISO-4217 Exemplo: "986" este é código do Real (R$) Para a lista completa das moedas acesse: https://pt.wikipedia.org/wiki/ISO_4217 Default: “986” |
| OPCIONAL(*) | extraScreens | String | Este parâmetro define como tem que ser apresentada a(s) tela(s) adicional(is) após o portador do cartão preencher a senha. Mais detalhes na seção Telas Adicionais. ( * ) Para utilizar o Split de Pagamento, não é permitido enviar este parâmetro. Se enviado na requisição, será retornado um erro. |
| OPCIONAL(*) | extraData | String | Este parâmetro serve para o adicionar campos para ser enviado para o host da Getnet. Mais detalhes na seção Dados Adicionais. ( * ) Para utilizar o Split de Pagamento, não é permitido enviar este parâmetro. Se enviado na requisição, será retornado um erro. |
| OPCIONAL | disableTypedTransaction | Boolean | Bloqueia a funcionalidade de digitar o número do portador do cartão na tela que solicitar o cartão. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | disableMagStripe | Boolean | Desabilita a leitora de cartões com tarja. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | splitPayloadRequest | String | Este parâmetro define quais dados serão enviados para o Split de Pagamento automático. Mais detalhes na seção Payload do Split de Pagamento. |
| OPCIONAL | disableCustomerSlipSpace | Boolean | Desabilita o espaçamento final para o corte da via do cliente. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | orderId | String | Neste parâmetro deve ser enviado um valor único para cada pedido. Este identificador é de responsabilidade da automação e será repassado para o Conciliador. String de até 50 caracteres. |
Response
| Quando retorna? | Parâmetro | Formato | Descrição |
|---|---|---|---|
| SEMPRE | result | String | Resultado da transação, conforme a Tabela de Resultados das Funcionalidades. |
| OPCIONAL | resultDetails | String | Texto com detalhes do retorno, conforme a Tabela de Resultados das Funcionalidades. |
| SEMPRE | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: 000000001234 = R$ 12,34 |
| OPCIONAL | nsu | String | Código de autorização da transação da Getnet – ele é único por terminal (CV impresso no comprovante, não pode se repetir no mesmo dia) |
| OPCIONAL | nsuLastSuccesfullMessage | String | Último NSU da GetNet gerado com sucesso |
| OPCIONAL | cvNumber | String | Número do CV – informação que deve ser enviada no estorno - ele é único por terminal |
| SEMPRE | type | String | 02 - Débito 11 - Crédito a vista 12 - Crédito parcelado Lojista 13 - Crédito parcelado Emissor 03 - Voucher |
| OPCIONAL | brand | String | Bandeira do cartão utilizado |
| SEMPRE | inputType | String | 021 - tarja magnética 051 - chip 071 - chip sem contato 801 - tarja magnética - fallback |
| OPCIONAL | installments | String | Quantidade de parcelas selecionada |
| OPCIONAL | gmtDateTime | String | Data e hora GMT da transação (MMDDhhmmss). Este campo representa o horário GMT |
| OPCIONAL | nsuLocal | String | NSU gerado no terminal( DOC impresso no comprovante, número sequencial por terminal) |
| OPCIONAL | authorizationCode | String | Código único de autorização (AUT impresso no comprovante, pode se repetir) * Este campo é de responsabilidade dabandeira * |
| OPCIONAL | cardBin | String | Os 6 primeiros dígitos do cartão |
| OPCIONAL | cardLastDigits | String | Os 4 últimos dígitos do cartão |
| OPCIONAL | extraScreensResult | String | Quando for enviada na requisição o campo extraScreens. O retorno será o mesmo só que com o campo value do field preenchido. Mais detalhes na seção Telas Adicionais. |
| OPCIONAL(*) | splitPayloadResponse | String | (*)Quando for enviado na requisição o Split de Pagamento. Mais detalhes na seção Payload do Split de Pagamento. |
| OPCIONAL | cardholderName | String | Retorna o nome do portador gravado no cartão, se disponível. |
| OPCIONAL | automationSlip | String | Neste parâmetro enviamos as informações que devem ser incluídas nos Comprovantes Impressos do estabelecimento e do cliente. Seu aplicativo só é obrigado a imprimir esses campos caso você opte por usar a funcionalidade Responsabilidade de Impressão, pois nesse caso o aplicativo Pagamento não irá imprimir os comprovantes. Mais detalhes na seção Dados do Comprovante. |
| OPCIONAL | orderId | String | Retorna caso um orderId tenha sido enviado na requisição. Este identificador é de responsabilidade da automação e é repassado para o Conciliador. |
Pagamento V3¶
Essa versão da aplicação de Pagamento tem suporte a transações Pix e a Responsabilidade de Impressão (Uma funcionalidade que permite que seu aplicativo imprima os comprovantes).
O deeplink getnet://pagamento/v3/payment irá iniciar a aplicação de pagamento da Getnet que irá tomar conta do terminal e iniciará o fluxo de pagamento.
Foi adicionado o campo allowPrintCurrentTransaction, ao utilizar este parâmetro o aplicativo Pagamento não irá imprimir os comprovantes e seu aplicativo ficará responsável pela impressão. Para mais detalhes veja a seção Responsabilidade de Impressão.
Foi adicionado o campo callerId. Neste campo seu aplicativo deve enviar um valor único para cada requisição realizada (deeplink).
Atenção:
Este identificador callerId é de responsabilidade da automação e deve ser gerenciado corretamente para que se possa consultar o status de transações a partir do deeplink Consulta Status.
Foi adicionado o campo additionalInfo. Este parâmetro serve para acrescentar informações adicionais sobre a transação Pix que está sendo iniciada.
Adicionamos a funcionalidade Conversão de Moeda(DCC) na aplicação de Pagamento. Se seu app utiliza Responsabilidade de Impressão, é importante que você esteja aderente as regras da funcionalidade.
Os seguintes campos abaixo foram adicionados.
| Parâmetro | Tipo | Request ou Response |
|---|---|---|
| receiptAlreadyPrinted | Boolean | Response |
| dccReceiptImplemented | Boolean | Request |
receiptAlreadyPrinted¶
Neste parâmetro receiptAlreadyPrinted retornamos se o comprovante já foi impresso pelo Pagamento(devido a conformidades obrigatórias, como por exemplo Conversor de Moedas). Quando o valor for true seu app não deve tentar imprimir os dados do comprovante, ignorando completamente a flag allowPrintCurrentTransaction.
dccReceiptImplemented¶
Foi adicionado o campo dccReceiptImplemented, ao receber este parâmetro, o aplicativo de Pagamento não irá ignorar a Responsabilidade de Impressão(caso seu app utilize), ou seja, seu app está notificando o Pagamento que já implementou os campos obrigatorios do comprovante em transações com conversão de moeda, clique aqui para ver os campos.
Abaixo seguem as tabelas de requisição e resposta e seus respectivos parâmetros:
Request
| Obrigatoriedade | Parâmetro | Formato | Descrição |
|---|---|---|---|
| OBRIGATÓRIO | paymentType | String | Este parâmetro informa qual o tipo de pagamento que será feito: credit debit voucher ( * ) pix ( * ) ( * ) Voucher e Pix podem ser usados no Pagamento v3, mas apenas em pagamentos sem Split de Pagamento. |
| OBRIGATÓRIO(*) | creditType | String | * Se informado “credit” no parâmetro “paymentType” então o “creditType” deverá ser informado com o tipo de crédito: “creditMerchant” - Crédito parcelado Lojista “creditIssuer” - Crédito parcelado Emissor Crédito à vista não precisa enviar este campo. |
| OPCIONAL(*) | installments | String | Este parâmetro informa o número de parcelas. ( * ) Se informado o parâmetro “creditType” com o valor “creditMerchant” ou “creditIssuer” então este parâmetro deve ser informado. |
| OBRIGATÓRIO | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: "000000001234" é equivalente R$ 12,34. |
| OBRIGATÓRIO | callerId | String | Neste parâmetro deve ser enviado um valor único para cada requisição realizada (deeplink). Este identificador é de responsabilidade da automação e pode ser utilizado para consultar o status de transações a partir do deeplink Consulta Status. String de até 50 caracteres. String de até 50 caracteres. |
| OPCIONAL | currencyPosition | String | "CURRENCY_AFTER_AMOUNT" ou "CURRENCY_BEFORE_AMOUNT" Default : “CURRENCY_BEFORE_AMOUNT” |
| OPCIONAL | currencyCode | String | Código da moeda, de acordo com a ISO-4217 Exemplo: "986" este é código do Real (R$) Para a lista completa das moedas acesse: https://pt.wikipedia.org/wiki/ISO_4217 Default: “986” |
| OPCIONAL(*) | extraScreens | String | Este parâmetro define como tem que ser apresentada a(s) tela(s) adicional(is) após o portador do cartão preencher a senha. Mais detalhes na seção Telas Adicionais. ( * ) Para utilizar o Split de Pagamento, não é permitido enviar este parâmetro. Se enviado na requisição, será retornado um erro. |
| OPCIONAL(*) | extraData | String | Este parâmetro serve para o adicionar campos para ser enviado para o host da Getnet. Mais detalhes na seção Dados Adicionais. ( * ) Neste campo, é possível enviar informações de Sub-Adquirentes. ( * ) Para utilizar o Split de Pagamento, não é permitido enviar este parâmetro. Se enviado na requisição, será retornado um erro. |
| OPCIONAL | disableTypedTransaction | boolean | Bloqueia a funcionalidade de digitar o número do portador do cartão na tela que solicitar o cartão. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | disableMagStripe | boolean | Desabilita a leitora de cartões com tarja. Para desabilitar: “true” Para habilitar: “false” Default: “false” |
| OPCIONAL | splitPayloadRequest | String | Este parâmetro define quais dados serão enviados para o Split de Pagamento automático. Mais detalhes na seção Payload do Split de Pagamento. |
| OPCIONAL | disableCustomerSlipSpace | boolean | Desabilita o espaçamento final para o corte da via do cliente. Para desabilitar: “false” Para habilitar: “true” Default: “false” |
| OPCIONAL | allowPrintCurrentTransaction | boolean | Ao habilitar este parâmetro, o aplicativo Pagamento não vai imprimir os comprovantes do estabelecimento e do cliente. Seu aplicativo ficará responsável pela impressão dos comprovantes. Mais detalhes na seção Responsabilidade de Impressão. Para desabilitar: “false” Para habilitar: “true” Default: “false” |
| OPCIONAL | orderId | String | Neste parâmetro deve ser enviado um valor único para cada pedido. Este identificador é de responsabilidade da automação e será repassado para o Conciliador. String de até 50 caracteres. |
| OPCIONAL | additionalInfo | String | Este parâmetro serve para acrescentar informações adicionais sobre o pagamento Pix que está sendo iniciado. Estas informações serão apresentadas ao pagador, em seu aplicativo de pagamento, após a leitura do QR Code Pix. Mais detalhes na seção Pix – Informações Adicionais. |
| OPCIONAL | dccReceiptImplemented | boolean | Este parâmetro serve para notificar o Pagamento que seu app está apto a imprimir os campos obrigatorios do comprovante em transações com conversão de moeda. |
Response
| Quando retorna? | Parâmetro | Formato | Descrição |
|---|---|---|---|
| SEMPRE | result | String | Resultado da transação, conforme a Tabela de Resultados das Funcionalidades. |
| OPCIONAL | resultDetails | String | Texto com detalhes do retorno, conforme a Tabela de Resultados das Funcionalidades. |
| SEMPRE | amount | String | 12 dígitos representando o valor, considerando os últimos 2 dígitos como casas decimais. Exemplo: 000000001234 = R$ 12,34 |
| SEMPRE | callerId | String | Retorna o callerId que foi enviado na requisição. Este identificador é de responsabilidade da automação. |
| OPCIONAL | nsu | String | Código de autorização da transação da Getnet – ele é único por terminal (CV impresso no comprovante, não pode se repetir no mesmo dia) |
| OPCIONAL | nsuLastSuccesfullMessage | String | Último NSU da GetNet gerado com sucesso |
| OPCIONAL | cvNumber | String | Número do CV – informação que deve ser enviada no estorno - ele é único por terminal |
| SEMPRE | receiptAlreadyPrinted | Boolean | Neste parametro devolvemos true se o comprovante já foi impresso pelo app Pagamento. Em principio apenas quando for transação com Conversor de Moedas. IMPORTANTE: Caso nao receba este parametro, é devido ao terminal conter uma versão do Pagamento onde nao existe Conversor de Moedas desta forma seu app deve assumir o valor false para esta situação. |
| SEMPRE | type | String | 02 - Débito 11 - Crédito a vista 12 - Crédito parcelado Lojista 13 - Crédito parcelado Emissor 03 - Voucher 30 - Pix |
| OPCIONAL | brand | String | Bandeira do cartão utilizado |
| SEMPRE | inputType | String | 021 - tarja magnética 051 - chip 071 - chip sem contato 801 - tarja magnética - fallback |
| OPCIONAL | installments | String | Quantidade de parcelas selecionada |
| OPCIONAL | gmtDateTime | String | Data e hora GMT da transação (MMDDhhmmss). Este campo representa o horário GMT |
| OPCIONAL | nsuLocal | String | NSU gerado no terminal( DOC impresso no comprovante, número sequencial por terminal) |
| OPCIONAL | authorizationCode | String | Código único de autorização (AUT impresso no comprovante, pode se repetir) * Este campo é de responsabilidade dabandeira * |
| OPCIONAL | cardBin | String | Os 6 primeiros dígitos do cartão |
| OPCIONAL | cardLastDigits | String | Os 4 últimos dígitos do cartão |
| OPCIONAL | extraScreensResult | String | Quando for enviada na requisição o campo extraScreens. O retorno será o mesmo só que com o campo value do field preenchido. Mais detalhes na seção Telas Adicionais. |
| OPCIONAL(*) | splitPayloadResponse | String | (*)Retorna quando for enviado na requisição o Split de Pagamento. Mais detalhes na seção Payload do Split de Pagamento. |
| OPCIONAL | cardholderName | String | Retorna o nome do portador gravado no cartão, se disponível. |
| OPCIONAL | automationSlip | String | Neste parâmetro enviamos as informações que devem ser incluídas nos Comprovantes Impressos do estabelecimento e do cliente para transações de Crédito, Débito ou Voucher. Seu aplicativo só é obrigado a imprimir esses campos caso você opte por usar a funcionalidade Responsabilidade de Impressão, pois nesse caso o aplicativo Pagamento não irá imprimir os comprovantes. Este parâmetro não comtempla os comprovantes de transações Pix. Este é enviado no parâmetro pixPayloadResponse. Mais detalhes na seção Dados do Comprovante. |
| OPCIONAL | printMerchantPreference | Boolean | Neste parâmetro retornamos se a Via do Estabelecimento deve ser impressa ou não. Ela pode variar dependendo da escolha do Estabelecimento. Esse parâmetro deve ser verificado caso você opte por usar a funcionalidade Responsabilidade de Impressão e a Via do Estabelecimento deve ser impressa conforme o retorno deste parâmetro. true – Deve ser impressa a Via do Estabelecimento nos comprovantes de venda. false – Não deve ser impressa a Via do Estabelecimento nos comprovantes de venda |
| OPCIONAL | orderId | String | Retorna caso um orderId tenha sido enviado na requisição. Este identificador é de responsabilidade da automação e é repassado para o Conciliador. |
| OPCIONAL(*) | pixPayloadResponse | String | ( * ) Retorna quando a requisição de pagamentofor do tipo Pix. Mais detalhes na seção Payload do Pix. |