logo ← MANUAIS DE UTILIZAÇÃO / Integração GSPayments Cartão

Integração GSPayments Cartão

Integração GSPayments Cartão

🔹 1. Introdução

Este documento tem como objetivo guiar terceiros na integração com o Gspayments, explicando o processo de obtenção de credenciais, autenticação e consumo das APIs disponíveis.

Acesse o portal SC3 pelo link:

   https://portal.homolog.gsurfnet.com/gsurf/login

Nota: substitua "gsurf" pelo nome da sua empresa na URL.

🔹 2. Configuração do Gspayments

Importante: O Gateway Gspayment opera com um sistema de escopos hierárquicos que define a prioridade das configurações aplicadas durante o fluxo transacional. Esse sistema segue uma estrutura em formato de funil, onde os escopos são avaliados em ordem de prioridade:

Esse mecanismo garante que, no momento da transação, o gateway percorra os escopos de cima para baixo até encontrar uma configuração válida. Por exemplo:

Se uma configuração de roteamento estiver ausente no escopo CANAL, o gateway continuará a busca no próximo nível.

Ao encontrar uma configuração válida no escopo LOJISTA, essa será acatada imediatamente, ignorando o escopo PARCEIRO, mesmo que este também possua parametrizações.

Esse modelo de escopo é aplicado universalmente dentro do gateway, impactando todos os tipos de configuração: roteamento, antifraude, adquirente, entre outros.

Portanto, ao parametrizar regras dentro do Gspayment, é essencial considerar a hierarquia dos escopos, garantindo que as configurações sejam aplicadas conforme a prioridade desejada no ambiente transacional.

2.1 - Configuração no Escopo Parceiro

  1. Acesse Configurações > Gateway > Configurações do Parceiro.
    Este é o ponto inicial onde todas as parametrizações específicas do parceiro serão realizadas no gateway.

  2. Acesse a aba Credenciais.
    Esta seção é responsável por armazenar as informações de autenticação e integração com os provedores (como adquirentes, bancos ou serviços de antifraude).

  3. Selecione o tipo de provedor que deseja configurar — como Cartão, Pix, Boleto ou Antifraude — e cadastre as credenciais fornecidas pelo respectivo provedor.

  4. Essas credenciais normalmente incluem chaves de API, tokens, merchant IDs ou senhas.
  5. É possível repetir o processo para diferentes provedores, conforme a necessidade do parceiro.

  6. Acesse a aba Integrações, selecione o provedor correspondente e vincule a credencial cadastrada.
    Essa ação garante que o gateway saiba qual credencial utilizar durante o fluxo transacional.

  7. Vá até a aba Roteamento para definir como as transações serão direcionadas.

  8. Você pode criar um roteamento padrão, aplicável a todas as transações do parceiro, ou um roteamento específico, com regras baseadas em condições principalmente das bandeiras ou números de parcelas.
  9. O sistema seguirá sempre a prioridade de escopos: Canal > Lojista > Parceiro.

  10. Configure os hooks (eventos de notificação).

  11. Primeiro, é necessário criar uma credencial de hook, que define a URL de destino e as chaves de autenticação do receptor. Esse processo é semelhante as informações passadas no passo 2.
  12. Depois, selecione os eventos que o sistema deve enviar ao parceiro, como: AUTHORIZATION, CONFIRMATION, REFUNDED, entre outros.
  13. Essa configuração garante que o parceiro receba atualizações em tempo real do fluxo de transações.

⚠️ Importante: Caso exista uma configuração válida em escopos superiores (Canal ou Lojista), ela terá prioridade sobre o escopo Parceiro. Sempre revise os escopos ativos para evitar conflitos de roteamento e integrações.

2.2 - Configuração no Escopo Lojista

  1. Acesse Acessar uma Loja > Config. Gateway > Configurações.
    Esta seção permite configurar integrações e regras de transação específicas para uma loja individual dentro do ambiente do gateway.

  2. Acesse a aba Credenciais.
    Aqui você poderá cadastrar as credenciais de autenticação para integração com provedores como adquirentes, bancos e sistemas de antifraude.

  3. Selecione o provedor que deseja integrar (ex: Cartão, Pix, Boleto, Antifraude) e cadastre as credenciais fornecidas pelo respectivo provedor.

  4. As credenciais podem incluir dados como Merchant ID, API Key, Client Secret ou outras informações específicas de autenticação.
  5. Repita o processo para todos os provedores que a loja utilizará nas transações.

  6. Vá até a aba Integrações, selecione o provedor desejado e vincule a credencial cadastrada.
    Esse passo garante que, no momento da transação, o gateway saiba exatamente qual configuração utilizar para comunicação com o provedor.

  7. Acesse a aba Roteamento e defina a regra de roteamento para a loja.

  8. Você pode criar um roteamento padrão, aplicável a todas as transações do parceiro, ou um roteamento específico, com regras baseadas em condições principalmente das bandeiras ou números de parcelas.
  9. Essa configuração será usada caso não exista uma definição em escopo superior (Canal).

  10. Configure os hooks para garantir a comunicação de eventos da plataforma com a loja.

  11. Antes de selecionar os eventos, é necessário criar uma credencial de hook contendo a URL e o método de autenticação que será utilizado para receber os eventos. Esse processo é semelhante as informações passadas no passo 2.
  12. Depois, defina os eventos relevantes como AUTHORIZATION, CONFIRMATION, REFUNDED, entre outros.
  13. Essa etapa garante que a loja receba notificações em tempo real sobre o status das transações.

🔁 Importante: Caso exista configuração válida no escopo Canal, ela terá prioridade sobre o escopo da Loja. O gateway sempre respeita a hierarquia: Canal > Lojista > Parceiro.

2.3 - Configuração no Escopo Canal

  1. Acesse Acessar uma Loja > Config. Gateway > Canal.
    O escopo de Canal é o nível mais alto de configuração no gateway, com prioridade máxima sobre Lojista e Parceiro. Ideal para parametrizações individuais que serão herdadas pelas lojas vinculadas.

  2. Crie o canal, informando o MCC (Merchant Category Code) e o Soft Descriptor.

  3. O MCC identifica o tipo de atividade comercial da empresa.
  4. O Soft Descriptor é o texto que aparece na fatura do cliente, sendo obrigatório para personalização da experiência de cobrança. Essa mesma informação pode ser passada posteriormente na requisição de criação de transação.

  5. Acesse a aba Credenciais para cadastrar os dados de autenticação dos provedores.

  6. As credenciais são necessárias para estabelecer comunicação com adquirentes, bancos e serviços auxiliares como antifraude.

  7. Selecione os provedores disponíveis (Cartão, Pix, Boleto, Antifraude, etc.) e cadastre a credencial utilizando as informações fornecidas por cada provedor.

  8. Dados comuns incluem: merchantId, chave secreta, client ID, e endpoint de autenticação.
  9. Repita o processo para cada provedor que será utilizado nesse canal.

  10. Acesse a aba Integrações e vincule cada provedor à respectiva credencial cadastrada.
    Esse vínculo permite ao gateway utilizar automaticamente as credenciais corretas durante as transações de todas as lojas associadas ao canal.

  11. Vá para a aba Roteamento e configure as regras de roteamento padrão ou específicas.

  12. Você pode criar um roteamento padrão, aplicável a todas as transações do parceiro, ou um roteamento específico, com regras baseadas em condições principalmente das bandeiras ou números de parcelas.
  13. A configuração feita aqui prevalecerá sobre qualquer outra realizada em escopos inferiores (Lojista ou Parceiro).

roteamento_gspayments.jpg

⚠️ Importante: O escopo de Canal tem prioridade máxima no sistema de hierarquia do gateway. Se existir uma configuração válida aqui, ela será usada em detrimento das definições nos escopos de Lojista e Parceiro.

  1. Configure os hooks a serem recebidos (necessário criar uma credencial de hook antes), definindo quais eventos são relevantes para garantir o fluxo correto da operação.

🔹 3. Acesso às APIs

Antes de iniciar a integração, é necessário criar um App Client no portal SC3 para obter credenciais de acesso e manipular as API do gateway GsPayment

3.1 - Passos iniciais para criar um App Client:

  1. Acesse uma loja cadastrada no portal.
  2. Dentro da loja, localize o menu lateral e clique em Menu > Controle de Acesso > Cadastrar App Client.

3.2 - Configuração das Rotas de API

  1. Acesse a aba Configurações do Módulo.
  2. Selecione o canal desejado (⚠️ é obrigatório que exista ao menos um canal configurado).
  3. Vá até a seção Rotas de API.
  4. Localize a rota Gateway de Pagamentos Gsurf (Gspayments).
  5. Marque todos os endpoints disponíveis para essa rota.
  6. Clique em Salvar.
  7. Após salvar, copie e armazene com segurança as seguintes informações:
  8. Client Secret (visível somente no momento da criação).
  9. Client ID (visível após a criação do App Client).

Por fim, com o famigerado AppClient em mãos vamos realizar uma requisição para gerar um token de Por fim, com o App Client criado e as credenciais em mãos, será necessário realizar uma requisição para gerar um token de acesso.

Esse token é obrigatório para autenticar todas as demais requisições feitas ao Gateway de Pagamentos.
A requisição deve ser feita para o Gmac, que é a API responsável pela autenticação.

O token gerado tem validade de 2 horas e deve ser incluído no cabeçalho (Authorization) das chamadas subsequentes às APIs do Gateway.

3.3 📌Requisição Token

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gmac-v1/oauth2/token

Autenticação: Basic Auth

Resultado: Obtenção do access_token

🔹 4. Criar uma Transação de Cartão

Este endpoint permite criar uma transação de pagamento com cartão.

📌 Requisição

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card

4.1 Estrutura da Requisição

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Body (Exemplo JSON):

{
    "sale_data": {
        "order_id": "HIDQV4ISHO",
        "amount": 98722,
        "merchant_correlation_id": "OZZ9V73SCV",
        "installments": 1
    },
    "additional_data": {
        "auto_capture": true,
        "use_anti_fraud": true,
        "use_data_only": true,
        "transaction_type": "CREDIT"
    },
    "split_data": [
        {
            "submerchant_id": "71673990000177",
            "amount": 4341,
            "fee_division": 15,
            "sub_order_id": "E7EH0O3N7M"
        },
        {
            "submerchant_id": "71673990000176",
            "amount": 4341,
            "fee_division": 20,
            "sub_order_id": "E7EH0O3N7M"
        },
        {
            "submerchant_id": "71673990000178",
            "amount": 4341,
            "fee_division": 20,
            "sub_order_id": "E7EH0O3N7M"
        }
    ],
    "hook_data": {
        "url": "http://gsurfnet.com/payment/notification",
        "credentials_id": "a95eb53d-82cc-4f84-ae2c-56898652340a"
    }
}

4.2 Parâmetros da Requisição

Parâmetro Tipo Obrigatório Descrição
amount integer Valor da venda sem separador decimal (ex: 1000 = R$ 10,00).
merchant_correlation_id string Identificador único para referência da loja.
order_id string Número do pedido da loja.
installments integer Número de parcelas (para Débito, sempre 1).
submerchant_id string Identificador da loja cadastrada no Gspayments.
auto_capture boolean Define se a transação deve ser capturada automaticamente. Caso não seja enviado o parametro, o mesmo automaticamente será atribuido como "false"
use_anti_fraud boolean Habilita o uso de anti-fraude se configurado. Caso o mesmo não seja passado será ignorado no fluxo transacional
transaction_type string Tipo da transação (CREDIT, DEBIT, PRE_PAID). Caso o mesmo não seja passado a transação será atribuida automaticamente como CREDIT
installment_type string Tipo de parcelamento (BY_ISSUER ou BY_MERCHANT).
use_data_only string Habilita o modelo de autenticação DataOnly 3DS no fluxo transação (Atualmente funcional somente para Rede)*.
hook_data.url string URL para notificações por webhook.
hook_data.credentials_id string ID da credencial cadastrada.
split_data array Dados de divisão de pagamento entre submercantes.
dynamic_data array Informações adicionais para relatórios.

4.3 Respostas Possíveis

🟢 201 - Sucesso

{
    "sale_data": {
        "amount": 98722,
        "merchant_correlation_id": "OZZ9V73SCV",
        "order_id": "HIDQV4ISHO",
        "installments": 1,
        "submerchant_id": "31705060000133"
    },
    "payment_data": {
        "gti": "beab65d1-7521-48a4-baeb-96eb4f6bc0c8",
        "status": "NEW",
        "amount_paid": 0,
        "channel": "TesteGabriel",
        "terminal_id": "7b5096ad-08b2-461b-8729-9e445d5689a3",
        "creation_time": "2025-06-11T14:39:15.375713",
        "update_time": "2025-06-11T14:39:15.392995",
        "subacquirer_document": "05643319000159",
        "effective_time": null,
        "confirm_time": null,
        "authorize_time": null,
        "capture_time": null
    },
    "hook_data": {
        "url": "http://gsurfnet.com/payment/notification",
        "credentials_id": "a95eb53d-82cc-4f84-ae2c-56898652340a"
    },
    "split_data": [
        {
            "submerchant_id": "71673990000177",
            "amount": 4341,
            "fee_division": 15,
            "sub_order_id": "E7EH0O3N7M"
        },
        {
            "submerchant_id": "71673990000176",
            "amount": 4341,
            "fee_division": 20,
            "sub_order_id": "E7EH0O3N7M"
        },
        {
            "submerchant_id": "71673990000178",
            "amount": 4341,
            "fee_division": 20,
            "sub_order_id": "E7EH0O3N7M"
        }
    ]
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

🔹 5. Efetivar uma Transação de Cartão

Este endpoint permite efetivar uma transação de cartão.

📌 Requisição

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card/{gti}

5.1 Estrutura da Requisição

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Path Parameters:

Parâmetro Tipo Obrigatório Descrição
gti string Identificador único da transação Gsurf (36 caracteres).

Body (Exemplo JSON):

{
    "transaction_data": {
        "card": {
            "number": "5448280000000007", 
            "expiry_date": "0128",
            "security_code": "123"
        },
        "anti_fraud_data": {
            "client_reference_information": {
                "code": "12345678"
            },
            "buyer_information": {
                "merchant_customer_id": "12312312387"
            },
            "device_information": {
                "finger_print_session_id": "98d3n9d823hd89n23x8932nd8",
                "ip_address": "fe80::986d:5ac4:6ec0:8b26%21"
            },
            "order_information": {
                "bill_to": {
                    "email": "teste@teste.com",
                    "first_name": "Gabriel",
                    "last_name": "Aprova",
                    "phone_number_type": 1,
                    "phone_number": "48987654321",
                    "address": "Rua José Antônio Lobo",
                    "address_number": "200",
                    "neighborhood": "Bairro Ferraz",
                    "city": "Garopaba",
                    "state": "SC",
                    "country": "BR",
                    "zip_code": "88495000"
                },
                "ship_to": {
                    "email": "teste@teste.com",
                    "first_name": "Gabriel",
                    "last_name": "Marques",
                    "phone_number_type": 1,
                    "phone_number": "48987654321",
                    "address": "Rua José Antônio Lobo",
                    "address_number": "200",
                    "neighborhood": "Bairro Ferraz",
                    "city": "Garopaba",
                    "state": "SC",
                    "country": "BR",
                    "zip_code": "88495000"
                },
                "line_items": [
                    {
                        "unit_price": 100,
                        "quantity": 1,
                        "product_code": "87654321",
                        "product_name": "Produto de Teste1",
                        "product_SKU": "87654321"
                    },
                    {
                        "unit_price": 50,
                        "quantity": 5,
                        "product_code": "12345678",
                        "product_name": "Produto de Teste2",
                        "product_SKU": "12345678"
                    },
                    {
                        "unit_price": 20,
                        "quantity": 10,
                        "product_code": "38474837",
                        "product_name": "Produto de Teste3",
                        "product_SKU": "38474837"
                    }
                ]
            },
            "merchant_defined_information": [
                {
                    "key": "MDD10",
                    "value": "GSURF"
                },
                {
                    "key": "CARTAO",
                    "value": "5448 2800 0000 0007"
                },
                {
                    "key": "MDD11",
                    "value": "GABRIEL MARQUES"
                }
            ]
        }
    },
    "acquirer_additional_data": {
        "card_extra_info": {
            "card_holder_name": "Gabriel Marques de Campos"
        },
        "submerchant": {
            "document": "09583156981",
            "name": "Gabriel !- Teste -",
            "trade_name": "Gabriel Teste",
            "address": "The wall avenue",
            "neighborhood": "The Wall",
            "city": "Garopaba",
            "state": "SC",
            "zip_code": "88495000"
        },
        "data_only_information": {
            "device_information": { 
                "device_type": "BROWSER",
                "color_depth": "30",
                "java_enabled": "false",
                "language": "pt-BR",
                "screen_height": "937",
                "screen_width": "1920",
                "time_zone_off_set": "180",
                "user_agent": "2313ewqewqe21",
                "ip_address": "192.168.123.132"
            },
            "billing_information": {
                "country": "BRA",
                "state": "SC",
                "city": "Garopaba",
                "address": "Rua jose antonio lobo",
                "address_number": "890",
                "neighborhood": "Ferraz",
                "zip_code": "88495000",
                "name": "Gabriel Marques",
                "email": "gabriel.marques@gsurfnet.com",
                "phone_number": "48991282027"
            }
        },
        "description_on_invoice": "GSURF - GABRIEL BANK LTDA"
    },
    "hook_data": {
        "url": "gsurfnet.com/payment/notification",
        "credentials_id": "a95eb53d-82cc-4f84-ae2c-56898652340a"
    }
}

5.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
number string Numero do cartão
token string Token do cartão tokenizado
expiry_date string Expiração do cartão
security_code string Código de segurança do cartão.
client_reference_information string Código de referência do cliente para antifraude. Obrigatório somente se for utilizado antifraude
buyer_information object Dados do cliente para antifraude. Obrigatório somente se for utilizado antifraude
device_information object Dados do dispositivo para antifraude. Obrigatório somente se for utilizado antifraude
order_information object Dados de cobrança, envio e itens do pedido.
merchant_defined_information array Informações customizadas definidas pelo lojista (antifraude).
card_extra_infoe object Dados adicionais do cartão
submerchant object Dados da loja
description_on_invoice string Descrição na fatura do comprador.
data_only_information.device_information object Informações técnicas do dispositivo (ex: resolução, IP, etc).
data_only_information.billing_information object Informações de cobrança adicionais do comprador.
hook_data.url string URL para recebimento do webhook de resposta da transação.
hook_data.credentials_id string ID das credenciais associadas ao webhook.

Importante resslatar que deve ser escolhido uma das duas opções de pagamento, cartão ou token

5.3 Respostas Possíveis

🟢 200 - Sucesso

{
    "sale_data": {
        "amount": 52297,
        "merchant_correlation_id": "TFKVOYL88V",
        "order_id": "HQFW7V3RDM",
        "installments": 1,
        "submerchant_id": "31705060000133"
    },
    "payment_data": {
        "gti": "d4ee96c5-39d7-4985-aef5-e363418c0898",
        "status": "AUTHENTICATION_IN_PROGRESS",
        "amount_paid": 0,
        "channel": "TesteGabriel",
        "terminal_id": "7b5096ad-08b2-461b-8729-9e445d5689a3",
        "creation_time": "2025-06-11T15:08:57",
        "update_time": "2025-06-11T15:08:57",
        "subacquirer_document": "05643319000159",
        "effective_time": "2025-06-11T15:09:04",
        "confirm_time": null,
        "authorize_time": null,
        "capture_time": null
    },
    "hook_data": {
        "url": "gsurfnet.com/payment/notification",
        "credentials_id": "a95eb53d-82cc-4f84-ae2c-56898652340a"
    },
    "split_data": [
        {
            "submerchant_id": "71673990000177",
            "amount": 8394,
            "fee_division": 15,
            "sub_order_id": "XXY4VIK4JQ"
        },
        {
            "submerchant_id": "71673990000176",
            "amount": 8394,
            "fee_division": 20,
            "sub_order_id": "XXY4VIK4JQ"
        },
        {
            "submerchant_id": "71673990000178",
            "amount": 8394,
            "fee_division": 20,
            "sub_order_id": "XXY4VIK4JQ"
        }
    ],
    "transaction_data": {
        "gsurf_usn": "250611200025",
        "entry_mode": "TOKEN",
        "transaction_type": "CREDIT",
        "installment_type": "BY_MERCHANT",
        "anti_fraud_analysis_data": {
            "status": "PENDING",
            "code": null,
            "message": null,
            "provider_data": {
                "provider_id": "7316ae1b-c9a0-4060-896f-383a7dd33347",
                "provider_name": "cyber",
                "authorization_response": null,
                "review_response": null
            }
        },
        "data_only_information": {
            "status": "PENDING",
            "code": null,
            "message": null
        },
        "provider_data": {
            "provider_name": "rede",
            "provider_id": "16380c7b-f478-407f-9c2b-a4e0531cef9e",
            "gsurf_correlation_id": null,
            "acquirer_authorization_usn": null,
            "acquirer_confirmation_usn": null,
            "provider_usn": null,
            "authorization_code": null,
            "acquirer_name": null,
            "response_code": null,
            "response_message": null,
            "acquirer_response_code": null,
            "acquirer_response_message": null
        },
        "card_data": {
            "masked_card": "544828******0007",
            "card_brand": {
                "description": "Mastercard",
                "gsurf_code": 55
            }
        },
        "maintenance_request_times": 0
    }
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

🔹 7. Confirmar uma Transação (Captura Manual)

Caso a transação tenha sido criada com auto_capture = false, será necessário capturá-la manualmente com este endpoint.

📌 Requisição

🛠 Método: PUT
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card/{gti}/capture

7.1 Estrutura da Requisição

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Path Parameters:

Parâmetro Tipo Obrigatório Descrição
gti string Identificador único da transação Gsurf (36 caracteres).

Body (Exemplo JSON):

{
  "confirm": true
}

7.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
confirm boolean Indica se a transação deve ser confirmada (true) ou desfeita (false).

7.3 Respostas Possíveis

🟢 200 - Sucesso

{
  "payment_data": {
    "gti": "8d561c7d-0dda-4185-bc86-5a78a070b2ca",
    "status": "CONFIRMED",
    "amount_paid": 1000,
    "channel": "ECOMMERCE",
    "creation_time": "2021-07-12T12:00:00Z",
    "update_time": "2021-07-12T12:00:00Z",
    "subacquirer_document": "1231231000112"
  }
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

🔹 8. Tokenizar um Cartão

A tokenização de cartão permite armazenar cartões de crédito para uso posterior sem a necessidade de solicitar novamente os dados ao comprador. O código de segurança (CVV) não é armazenado.

8.1 Criar Armazenamento de Cartão

Este endpoint cria os dados de acesso para armazenar um cartão e retorna um card_id e store_token, que serão usados na próxima etapa.

📌 Requisição

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/card-storage/access-token

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Body (Exemplo JSON):

{
  "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
  "customer_id": "12312312387"
}

8.1.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
merchant_correlation_id string Identificador único da loja para referência.
customer_id string Identificação única do comprador para armazenamento do cartão.

8.1.3 Respostas Possíveis

🟢 201 - Sucesso

{
  "card_id": "e9e3ce5d-7bb6-47b5-9aa3-3e633d63f9e4",
  "store_token": "qB5iz9vf2OGWqnL8DOcwhTgk0xyYYByqmK8T5QV9jJNVXTWnuv8jhPAdgdYf9VI3",
  "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
  "customer_id": "12312312387"
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

8.2 Efetuar Armazenamento do Cartão

Após a criação dos dados de acesso (store_token e card_id), este método permite realizar a tokenização do cartão diretamente do front-end da loja, sem necessidade de passar pelo backend.

📌 Requisição

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/card-storage

Headers:

Content-Type: application/json
Store-Token: {store_token}
Authorization: Bearer {access_token}

Body (Exemplo JSON):

{
  "card": {
    "number": "1234123412341234",
    "expiry_date": "1225"
  }
}

8.2.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
store_token string Token de segurança gerado na requisição anterior. Válido por 5 minutos.
number string Número do cartão.
expiry_date string Mês e ano de validade do cartão no formato MMYY.

8.2.3 Respostas Possíveis

🟢 201 - Sucesso

{
  "card_id": "e9e3ce5d-7bb6-47b5-9aa3-3e633d63f9e4",
  "card_bin": "123456",
  "card_end": "1234",
  "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
  "customer_id": "12312312387"
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

8.2.4 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

🔹 9. Consultar uma Transação de Cartão

Este endpoint permite consultar os detalhes de uma transação de cartão específica a partir do gti.

📌 Requisição

🛠 Método: GET
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card/{gti}

9.1 Estrutura da Requisição

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Path Parameters:

Parâmetro Tipo Obrigatório Descrição
gti string Identificador único da transação Gsurf (36 caracteres).

9.2 Respostas Possíveis

🟢 200 - Sucesso

{
  "sale_data": {
    "amount": 1000,
    "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
    "order_id": "12345678",
    "installments": 1,
    "submerchant_id": "12312312387"
  },
  "payment_data": {
    "gti": "8d561c7d-0dda-4185-bc86-5a78a070b2ca",
    "status": "AUTHORIZED",
    "amount_paid": 1000,
    "channel": "ECOMMERCE",
    "creation_time": "2021-07-12T12:00:00Z",
    "update_time": "2021-07-12T12:00:00Z",
    "effective_time": "2021-07-12T12:00:00Z",
    "confirm_time": null,
    "subacquirer_document": "12312312000198"
  }
}

9.3 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Transação não encontrada.
500 Erro interno no servidor.

🔹 10. Realizar uma Transação Zero Dollar (0Auth)

Este endpoint permite validar previamente se os dados do cartão e do portador estão corretos antes do processamento da transação.

📌 Requisição

🛠 Método: POST
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card/0dollar

10.1 Estrutura da Requisição

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Body (Exemplo JSON):

{
  "card_data": {
    "holder_name": "JHON SNOW",
    "number": "1234123412341234",
    "expiry_date": "1124",
    "security_code": "123"
  },
  "sale_data": {
    "installments": 1,
    "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
    "order_id": "12345678"
  }
}

10.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
holder_name string Nome do portador do cartão.
number string Número do cartão (obrigatório se não utilizar um token).
expiry_date string Data de validade do cartão no formato MMYY.
security_code string Código de segurança do cartão.
installments integer Número de parcelas (padrão: 1).
merchant_correlation_id string Identificador único da loja para referência.
order_id string Número do pedido da loja.

10.3 Respostas Possíveis

🟢 201 - Sucesso

{
  "payment_data": {
    "gti": "8d561c7d-0dda-4185-bc86-5a78a070b2ca",
    "status": "AUTHORIZED",
    "amount_paid": 0,
    "channel": "ECOMMERCE",
    "creation_time": "2021-07-12T12:00:00Z",
    "update_time": "2021-07-12T12:00:00Z",
    "effective_time": "2021-07-12T12:00:00Z",
    "subacquirer_document": "1231231000112"
  }
}

10.4 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.

🔹 11. Manutenção de Pendências

Este endpoint permite confirmar ou desfazer uma transação com erro. Se o status for CONFIRMATION_ERROR, uma nova tentativa de confirmação será realizada. Se for UNDOING_ERROR, uma nova tentativa de desfazimento será feita.

📌 Requisição

🛠 Método: PUT
🔗 URL:

https://api-hml.gsurfnet.com/gs-payment-ecommerce/v1/payments/card/{gti}/maintenance

11.1 Estrutura da Requisição

Path Parameters:

Parâmetro Tipo Obrigatório Descrição
gti string Identificador único da transação Gsurf. Deve ter exatamente 36 caracteres.

Headers:

Content-Type: application/json
Authorization: Bearer {access_token}

Body (Exemplo JSON):

{
  "action": "CONFIRMATION"
}

11.2 Parâmetros Importantes

Parâmetro Tipo Obrigatório Descrição
action string Ação a ser realizada na transação (CONFIRMATION, UNDOING).

11.3 Respostas Possíveis

🟢 200 - Sucesso

{
  "sale_data": {
    "amount": 1000,
    "merchant_correlation_id": "026b0627-83dc-42a0-bacc-a06f0da1227f",
    "order_id": "12345678",
    "installments": 1
  },
  "payment_data": {
    "gti": "8d561c7d-0dda-4185-bc86-5a78a070b2ca",
    "status": "AUTHORIZED",
    "amount_paid": 1000,
    "channel": "ECOMMERCE",
    "creation_time": "2021-07-12T12:00:00Z",
    "update_time": "2021-07-12T12:00:00Z",
    "effective_time": "2021-07-12T12:00:00Z",
    "subacquirer_document": "1231231000112"
  },
  "hook_data": {
    "url": "gsurfnet.com/payment/notification",
    "credentials_id": "d6f5a1d5-cadd-4d65-a136-c92614f45c40"
  },
  "transaction_data": {
    "gsurf_usn": "220419000026",
    "card_data": {
      "masked_card": "544828******0007",
      "card_brand": {
        "description": "Mastercard",
        "gsurf_code": 55
      }
    },
    "entry_mode": "virtual",
    "transaction_type": "CREDIT",
    "installment_type": "BY_MERCHANT",
    "anti_fraud_analysis_data": {
      "status": "ACCEPTED",
      "code": 100
    },
    "provider_data": {
      "response_message": "Success",
      "response_code": "00",
      "authorization_code": "877270",
      "acquirer_name": "rede",
      "provider_name": "e-sitef",
      "provider_id": "a29902a0-698b-437f-8d22-d7372375c729",
      "gsurf_correlation_id": "10012107201416187794",
      "acquirer_authorization_usn": "248530199",
      "acquirer_confirmation_usn": "960048487",
      "provider_usn": "248530199"
    }
  }
}

🔴 Erros Comuns

Código Motivo
400 Requisição inválida (parâmetros ausentes ou incorretos).
401 Token de autenticação inválido ou expirado.
403 Permissão negada para a ação solicitada.
404 Recurso não encontrado.
500 Erro interno no servidor.