Suggest Edits

Introdução

 

Este documento descreve o processo de integração da Automação Comercial com o Cappta Android para a plataforma móvel Android.

Para iniciar o processo de integração é preciso realizar o download do Cappta Pague na GooglePlay.

https://play.google.com/store/apps/details?id=com.cappta.gpandroid

Seja bem vindo, a documentação CapptAPI-Web, qualquer dúvida, sugestão e critica nos mande uma mensagem:

Telefone: (11) 4302-6179
Skype: edimilson.santos@dlp.im
Skype: willian.costa@dlp.im
e-mail: homologa@cappta.com.br

É muito importante termos registros de nossas atividades, afim de melhor atende-lo, por isso não esqueça de preencher este pequeno formulário Homologa Cappta

Conheça também:

Web
Desktop
Conciliação

O que deseja aprender?

Deixe sua dúvida e alguém em breve ira responde-lo : Ir para o Fórum

Suggest Edits

Requisitos Mínimos

 

Abaixo listamos os requisitos mínimos para que a integração funcione corretamente:

1- Versão mínima do dispositivo Android 4.4 (kitkat)
2- Versão máxima do dispositivo Android 7 (Nougat)
3- Aplicativo Cappta Pague instalado no dispositivo

Suggest Edits

Integração

 

Disponibilizamos o código de exemplo para integração que segue exatamente os passos deste documento no Github, caso tenha interesse sinta-se a vontade para utiliza-lo para facilitar o desenvolvimento e até mesmo sugerir melhorias.

A comunicação entre o App da Automação Comercial e o Cappta Android ocorrerá por um recurso do Android chamado AppLink.

O AppLink é bem simples, seu aplicativo irá realizar uma requisição para uma URI, mas ao invés de acessar um site como esperado, haverá um outro app no seu dispositivo que irá atenter aquela requisição, para mais detalhes clique aqui

Como o funcionamento do AppLink é unidirecional, para todas as operações que disponibilizamos, utilizaremos um outro link de resposta que deverá ser controlado pelo seu app.

As chamadas seguem o padrão <scheme>://<action> como pode ser visto nos exemplos abaixo:

Exemplo de requisição cappta://payment?scheme=exemplo&authKey=00000000-0000-0000-0000-000000000000&amount=100&paymentType=debit

Exemplo de resposta exemplo://payment?administrativeCode=92384032849&merchantReceipt=<comprovanteLoja>&customerReceipt=<comprovanteCliente>

Código de exemplo

Suggest Edits

Operações da API

 

Abaixo descrevemos como funciona cada uma das operações disponíveis na integração:

Operação
Descrição

Pagamento

Operação de pagamento presencial

Estorno

Estorno de pagamento aprovado no mesmo dia

Reimpressão

Reimpressão de comprovantes de pagamento e estorno

Suggest Edits

Requisição de Pagamento

 

Para realizar uma operação de pagamento é bem simples, basta iniciar uma nova Activity contendo um Intent configurado com uma URI confirme demonstrado no exemplo ao lado.

Parâmetro
Tipo
Obrigatório?
Descrição

scheme

string

sim

Como descrito na sessão Integração, precisamos saber qual é o aplicativo de origem desta requisição

authKey

string

sim

Chave de identificação da Automação Comercial na Cappta

amount

int

sim

Valor pagamento, em centavos

paymentId

string

não

Chave de identificação do pagamento utilizada pela Automação Comercial, será devolvida exatamente como recebemos durante a resposta desta requisição

paymentType

string

não

Tipo do pagamento, sendo credit para Crédito e debit para Débito

installments

int

sim

Obrigatório para a modalidade crédito. Pagamentos feito em 1x será considerado como "crédito a vista", enquanto que 2 ou mais vezes será "crédito parcelado"

installmentType

int

não

Determina a configuração do parcelamento, verifique a tabela Tipos de Parcelamento para consultar os valores possíveis

//TODO incluir import dos packages necessários e envolver método em uma classe

private void SendPayment() {
      String scheme = "exemplo";
      String authKey = "00000000-0000-0000-0000-000000000000";
      String paymentType = "credit";
      String paymentId = "123456";
      int paymentAmountInCents = 100;
      int installments = 999;
      int installmentType = 1;

      Uri capptaAppLink = new Uri.Builder()
          .scheme("cappta")
          .authority("payment")
          .appendQueryParameter("scheme", scheme)
          .appendQueryParameter("authKey", authKey)
          .appendQueryParameter("amount", paymentAmountInCents)
          .appendQueryParameter("paymentId", paymentId)
          .appendQueryParameter("paymentType", paymentType)
          .appendQueryParameter("installments", installments)
          .appendQueryParameter("installmentType", installmentType)
          .build();

      Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

      this.startActivityForResult(capptaIntent, 0);
}
Suggest Edits

Requisição de Estorno

 

Assim como uma requisição de pagamento não à segredos para realizar uma de estorno, confira no exemplo de código ao lado.

Parâmetro
Tipo
Obrigatório?
Descrição

scheme

string

sim

Como descrito na sessão Integração , precisamos saber qual é o aplicativo de origem desta requisição

authKey

string

sim

Chave de identificação da Automação Comercial na Cappta

administrativeCode

string

sim

Identificador único para pagamentos, é devolvido quando a requisição de pagamento é autorizada (pode ser consultado no portal de transações Cappta)

administrativePassword

string

não

Senha solicitada no Cappta Android necessária para liberar o acesso à estorno de pagamentos

//TODO incluir import dos packages necessários e envolver método em uma classe

private void SendPaymentReversal() {
      String scheme = "exemplo";
      String authKey = "00000000-0000-0000-0000-000000000000";
      String administrativeCode = "00000000000";
      String administrativePassword = "00000000";

      Uri capptaAppLink = new Uri.Builder()
          .scheme("cappta")
          .authority("payment")
          .appendQueryParameter("scheme", scheme)
          .appendQueryParameter("authKey", authKey)
          .appendQueryParameter("administrativeCode", administrativeCode)
          .appendQueryParameter("administrativePassword", administrativePassword)
          .build();

      Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

      this.startActivityForResult(capptaIntent, 0);
}
Suggest Edits

Requisição de Reimpressão

 

Disponibilizamos dois tipos de reimpressão de comprovantes:
Reimpressão do último comprovante (seja pagamento ou estorno)
Reimpressão de comprovante por número de controle
Abaixo demonstramos como funcionam ambos os modos.

Suggest Edits

Reimpressão de comprovante específico

 

Para a reimpressão seguimos a mesma linha de raciocínio das operações anteriores, confira no exemplo de código ao lado.

scheme
Tipo
Obrigatório?
Descrição

scheme

string

sim

Como descrito na sessão Integração Integração], precisamos saber qual é o aplicativo de origem desta requisição

authKey

string

sim

Chave de identificação da Automação Comercial na Cappta

administrativeCode

string

sim

Identificador único para pagamentos, é devolvido quando a requisição de pagamento é autorizada (pode ser consultado no portal de transações Cappta)

//TODO incluir import dos packages necessários e envolver método em uma classe

private void SendReceiptReprint() {
      String scheme = "exemplo";
      String authKey = "00000000-0000-0000-0000-000000000000";
      String administrativeCode = "00000000000";

      Uri capptaAppLink = new Uri.Builder()
          .scheme("cappta")
          .authority("payment")
          .appendQueryParameter("scheme", scheme)
          .appendQueryParameter("authKey", authKey)
          .appendQueryParameter("administrativeCode", administrativeCode)
          .build();

      Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

      this.startActivityForResult(capptaIntent, 0);
}
Suggest Edits

Reimpressão do último comprovante

 

Ao invés de reimprimir um comprovantes específico, também há a possibilidade de reimprimir o comprovante da última operação aprovada, confira ao lado.

Parâmetro
Tipo
Obrigatório?
Descrição

scheme

string

sim

Como descrito na sessão Integração, precisamos saber qual é o aplicativo de origem desta requisição

authKey

string

sim

Chave de identificação da Automação Comercial na Cappta

//TODO incluir import dos packages necessários e envolver método em uma classe

private void SendReceiptReprint() {
      String scheme = "exemplo";
      String authKey = "00000000-0000-0000-0000-000000000000";

      Uri capptaAppLink = new Uri.Builder()
          .scheme("cappta")
          .authority("payment")
          .path("last")
          .appendQueryParameter("scheme", scheme)
          .appendQueryParameter("authKey", authKey)
          .build();

      Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

      this.startActivityForResult(capptaIntent, 0);
}
Suggest Edits

Códigos de motivo para operações negadas

 
Código
Descrição

1

Não autenticado/Alguma das informações fornecidas para autenticação não é válida

2

Cappta Android está sendo inicializado

3

Formato da requisição recebida pelo Cappta Android é inválido

4

Operação cancelada pelo operador

5

Pagamento não autorizado/pendente/não encontrado

6

Pagamento não autorizado/pendente/não encontrado

7

Erro interno no Cappta Android

8

Erro na comunicação com o Cappta Android

Suggest Edits

Tipos de Parcelamento

 
Código
Descrição

1

Parcelamento Administradora - Configuração de parcelamento em que os juros são arcados pelo banco ou administradora, o limite de parcelas e valor mínimo são pré-estabelecidos e a venda não é tratada como parcelada para o lojista sendo assim o valor será depoistado integralmente em sua conta bancária. O cliente irá pagar as prestações com juros que serão revertidos para o banco/administradora do cartão

2

Parcelamento Lojista - É o parcelamento em que a quantidade de parcelas é definida no ato da compra. O limite de quantidade de parcelas e valor mínimo para cada uma pode ser determinado nas configurações do CapptaGpPlus. O lojista irá receber os créditos mensalmente em sua conta e o custo pelo financiamento é definido e arcado pelo próprio estabelecimento

Suggest Edits

Token De Cartão de Crédito

 

O que é Token de Cartão de Crédito:

A Tokenizção de Cartões de Credito já é comum no mundo online possibilitando as funcionalidades de one-click buy em muitos e-commerce.

A Tokenização consiste na criação de um Token, ou seja, uma string única formada por caracteres, que perite a uma loja física, sem certificação PCI, armazenar e realizar transações sem o cliente precisar passar o cartão novamente.

Suggest Edits

Criar Token

 

Essa é a função que deve ser chamada para realizar a criação:

Request de criação de Token

Propriedade Tipo Obrigatório Descrição
customer Objeto Customer Sim Objeto do tipo customer contendo as informações do cliente. Clique aqui para mais informações sobre customer.

Response para criação de Token

Propriedade Tipo Descrição
cardToken String Identificador único do cartão criado.
cardBrandName String Nome da bandeira do cartão utilizado.
lastFourDigits int Quatro últimos dígitos do cartão utilizado.
expMonth int Mês de expiração do cartão.
expYear int Ano de expiração do cartão
customer Objeto tipo Customer Objeto do tipo customer contendo as informações do cliente. Clique aqui para mais informações sobre customer.
        String scheme = "exemplo";
        String customerName = "John Doe";
        String customerDocument = "00000000000";
        String customerEmail = "John@doe.com";
        String documentType = "individual";


        Uri capptaAppLink = new Uri.Builder()
                .scheme("cappta")
                .authority("create-card-token")
                .appendQueryParameter("authKey", getString(R.string.cappta_auth_key))
                .appendQueryParameter("name", customerName)
                .appendQueryParameter("document", customerDocument)
                .appendQueryParameter("documentType", documentType)
                .appendQueryParameter("email", customerEmail)
                .appendQueryParameter("scheme", scheme)
                .build();

        Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

        this.startActivityForResult(capptaIntent, 0);
Suggest Edits

Criar Token com Transação

 

Essa função permite realizar uma transação do tipo crédito e criar o token do cartão simultaneamente.

Request de pagamento com criação de token

Propriedade Tipo Obrigatório Descrição
amount int Sim Valor do pagamento.
installments int Sim Determina a quantidade de parcelas do pagamento, caso seja informado 1 a venda será realizada como crédito à vista, caso seja maior que isso será um crédito parcelado. Caso não seja informado o valor default é igual a 1, ou seja, a venda será considerada automaticamente a vista.
installmentsType int Somente se installments for maior que 1 Determina a configuração do parcelamento, verifique a tabela Tipos de Parcelamento para consultar os valores possíveis
customer Objeto Customer Sim Objeto do tipo customer contendo as informações do cliente.
    private void SendPayment() {

        String scheme = "exemplo";
        String authKey = "00000000-0000-0000-0000-000000000000";
        String paymentId = "123456";

        int paymentAmountInCents = 100;
        int installments = 1;
        int installmentType = 1;

        String cardholderName = "John Doe";
        String cardholderEmail = "John@doe.com";
        String cardholderDocument = "00000000000";
        String documentType = "individual";

        Uri capptaAppLink = new Uri.Builder()
                .scheme(scheme)
                .authority("credit-payment-and-create-card-token")
                .appendQueryParameter("authKey", authKey)
                .appendQueryParameter("paymentId", paymentId)
                .appendQueryParameter("amount", String.valueOf(paymentAmountInCents))
                .appendQueryParameter("installments", String.valueOf(installments))
                .appendQueryParameter("installmentType", String.valueOf(installmentType))
                .appendQueryParameter("cardholderName", cardholderName)
                .appendQueryParameter("cardholderEmail", cardholderEmail)
                .appendQueryParameter("cardholderDocument", cardholderDocument)
                .appendQueryParameter("documentType", documentType)
                .appendQueryParameter("scheme", scheme)
                .build();

        Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);

        this.startActivityForResult(capptaIntent, 0);
    }
Suggest Edits

Criar Pagamento com Token

 
Propriedade Tipo Obrigatório Descrição
amount int Sim Valor do pagamento.
installments int Sim Determina a quantidade de parcelas do pagamento, caso seja informado 1 a venda será realizada como crédito à vista, caso seja maior que isso será um crédito parcelado. Caso não seja informado o valor default é igual a 1, ou seja, a venda será considerada automaticamente a vista.
installmentsType int Somente se installments for maior que 1 Determina a configuração do parcelamento, verifique a tabela Tipos de Parcelamento para consultar os valores possíveis
customer Objeto Customer Sim Objeto do tipo customer contendo as informações do cliente.
        String cardToken = txtCardToken.getText();
        String customerId = txtCustomerId.getText();
        String orderId = txtOrderId.getText();
        String scheme = "exemplo";

        int paymentAmountInCents = 10000;
        int installments = 2;

        Uri capptaAppLink = new Uri.Builder()
                .scheme("cappta")
                .authority("token-payment")
                .appendQueryParameter("authKey", getString(R.string.cappta_auth_key))
                .appendQueryParameter("cardToken", cardToken)
                .appendQueryParameter("orderId", orderId)
                .appendQueryParameter("customerId", customerId)
                .appendQueryParameter("amount", Integer.toString(paymentAmountInCents))
                .appendQueryParameter("installments", Integer.toString(installments))
                .appendQueryParameter("scheme", scheme)
                .build();

        Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);
        this.startActivityForResult(capptaIntent, 0);  
Suggest Edits

Cancelar Pagamento com Token

 

Essa requisição deve ser utilizada para realizar o cancelamento de um pagamento realizado através de um token de cartão.

Para realizar a requisição é necessário o paymentKey que a requisição de pagamento retorna.

Propriedade Tipo Obrigatório Descrição
paymentKey int Sim Chave
        String paymentKey = txtPaymentKey.getText();
        String scheme = "exemplo";

        Uri capptaAppLink = new Uri.Builder()
                .scheme("cappta")
                .authority("token-payment-reversal")
                .appendQueryParameter("authKey", getString(R.string.cappta_auth_key))
                .appendQueryParameter("payment_key", paymentKey)
                .appendQueryParameter("scheme", scheme)
                .build();

        Intent capptaIntent = new Intent(Intent.ACTION_VIEW, capptaAppLink);
        this.startActivityForResult(capptaIntent, 0);