Pular para conteúdo

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”.

Pagamento-1 Pagamento-2 Pagamento-3 Pagamento-4 Pagamento-5

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.

Sucesso-1 Sucesso-Remova

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.

Falha-1 Falha-Remova

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.