Obtendo os dados do Cartão

Com o Pagar.me, você pode obter os dados do cartão sem que o seu cliente tenha que sair da sua página/aplicativo. Para que o processo aconteça de forma segura, é necessário incluir a nossa biblioteca em sua página/aplicativo para obter esses dados e, posteriormente, criar uma transação. Para fazer isso nós disponibilizamos o pagarme.js e o Checkout Pagar.me.

Os passos a seguir descrevem como você pode gerar, a partir dos dados de cartão e usando a pagarme.js, um Card Hash. Essa informação é usada para criar uma transação com a API Pagar.me.

Para saber mais sobre o que é um card_hash, veja a explicação em: Overview

Vamos lá!

Web

Para gerar o card_hash dentro de uma página web, você precisa incluir o pagarme.js, nosso Javascript, em sua página. Para fazer isso, insira o seguinte código antes do final da seção head da sua página HTML:

<script src=“https://assets.pagar.me/pagarme-js/4.5/pagarme.min.js” />

Nós também usamos também jQuery para gerar e inserir o card_hash no seu formulário, então é preciso incluir também esse script antes do final da seção head da sua página HTML:

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js

Depois de fazer isso, insira um formulário para digitar os dados de cartão, por exemplo:

<div id="form">
    Número do cartão: <input type="text" id="card_number"/>
    <br/>
    Nome (como escrito no cartão): <input type="text" id="card_holder_name"/>
    <br/>
    Mês de expiração: <input type="text" id="card_expiration_month"/>
    <br/>
    Ano de expiração: <input type="text" id="card_expiration_year"/>
    <br/>
    Código de segurança: <input type="text" id="card_cvv"/>
    <br/>
    <div id="field_errors">
    </div>
    <br/>
</div>
<form id="payment_form" action="https://seusite.com.br/transactions/new" method="POST">
    <input type="submit"></input>
</form>

Por fim, no seu Javascript, você precisa detectar quando o botão do formulário é pressionado. Quando isso for feito, é preciso chamar o pagarme.js para gerar o card_hash e substituir os outros campos dos dados de cartão por ele:

$(document).ready(function() { 
    var form = $("#payment_form")

    form.submit(function(event) {
        event.preventDefault();
        var card = {} 
        card.card_holder_name = $("#form #card_holder_name").val()
        card.card_expiration_date = $("#form #card_expiration_month").val() + '/' + $("#form #card_expiration_year").val()
        card.card_number = $("#form #card_number").val()
        card.card_cvv = $("#form #card_cvv").val()

        // pega os erros de validação nos campos do form e a bandeira do cartão
        var cardValidations = pagarme.validate({card: card})
                
        //Então você pode verificar se algum campo não é válido
        if(!cardValidations.card.card_number)
          console.log('Oops, número de cartão incorreto')
         
        //Mas caso esteja tudo certo, você pode seguir o fluxo
        pagarme.client.connect({ encryption_key: 'SUA_ENCRYPTION_KEY' })
          .then(client => client.security.encrypt(card))
          .then(card_hash => console.log(card_hash))
          // o próximo passo aqui é enviar o card_hash para seu servidor, e
          // em seguida criar a transação/assinatura

        return false
    })
});

Com o card_hash gerado, você pode criar uma transação. Saiba mais em: Cartão de crédito

❗️

Dados do cartão inválido

Antes do Card Hash ser criado, é feita uma análise para verificar se os dados do cartão estão corretos. Caso haja algum item errado, é retornado para o cliente final um objeto com todos os valores incorretos.

{
   "card_number": "Número do cartão inválido.",
   "card_holder_name": "Nome do portador inválido.",
   "card_expiration_month": "Mês de expiração inválido.",
   "card_expiration_year": "Ano de expiração inválido.",
   "card_cvv": "Código de segurança inválido."
}

iOS

Para realizar a geração do card_hash dentro de um aplicativo para iOS, você pode usar o nosso CocoaPod. Veja a seguir as instruções para inclusão e utilização do mesmo.

Instalando a biblioteca

  • Você deve incluir a dependência ao seu PodFile, segue:
pod 'PagarMe', '~> 1.1.1'

Em seguida, execute o comando:

pod install

Feito isso, o CocoaPod PagarMe é adicionado ao seu app.

Usando a biblioteca

Para utilizar a biblioteca com Objetive-C, você só precisa importar o Header file a seguir:

#import "PagarMe.h"

Para utilizar a biblioteca com Swift você precisa primeiro criar um Header file, que será seu Bridging Header, e depois adicionar o header PagarMe a este file:

//
//  SwiftPagarMePodFile-Bridging-Header.h
//  SwiftPagarMePodFile
//
//  Created by PagarMe
//  Copyright © 2017 PagarMe. All rights reserved.
//

#ifndef SwiftPagarMePodFile_Bridging_Header_h
#define SwiftPagarMePodFile_Bridging_Header_h

import "PagarMe"

#endif /* SwiftPagarMePodFile_Bridging_Header_h */

Em seguida já é possível importar a biblioteca PagarMe em sua classe Swift, e gerar o card_hash a partir dos dados de cartão:

[PagarMe sharedInstance].encryptionKey = @"SUA ENCRYPTION KEY";
    
    PagarMeCreditCard *pagarMeCreditCard = [[PagarMeCreditCard alloc]              initWithCardNumber:@"4242424242424242"
        cardHolderName:@"John Smith"
        cardExpirationMonth:@"05"
        cardExpirationYear:@"25"
        cardCvv:@"123"];
    
    if ([pagarMeCreditCard hasErrorCardNumber]) {
        // Error with CardNumber
        NSLog(@"Número de cartão inválido");
    }
    else if ([pagarMeCreditCard hasErrorCardHolderName]) {
        // Error with CardHolderName
        NSLog(@"Nome no cartão deve ter ao menos 1 caractere");
    }
    else if ([pagarMeCreditCard hasErrorCardCVV]) {
        // Error with CardCVV
        NSLog(@"O card CVV deve ter entre 3 e 4 números apenas");
    }
    else if ([pagarMeCreditCard hasErrorCardExpirationMonth]) {
        // Error with CardExpirationMonth
        NSLog(@"Mês de validade incorreto, deve estar entre 1 e 12");
    }
    else if ([pagarMeCreditCard hasErrorCardExpirationYear]) {
        // Error with CardExpirationYear
        NSLog(@"Ano de validade incorreto");
    }
    else {
        // Validated all Fields!
        [pagarMeCreditCard generateHash:^(NSError *error, NSString *cardHash) {
            if(error) {
                NSLog(@"Error: %@", error);
                return;
            }
            NSLog(@"CardHash Generated: %@", cardHash);
        }];
    }
PagarMe.sharedInstance().encryptionKey = "SUA ENCRYPTION KEY"
        let creditCard = PagarMeCreditCard(cardNumber: "4242424242424242", cardHolderName: "Test Card", cardExpirationMonth: "10", cardExpirationYear: "20", cardCvv: "123")
        
        if (creditCard?.hasErrorCardCVV())!{
            print("erro no CVV")
        }else if (creditCard?.hasErrorCardNumber())!{
            print("Erro no numero do cartão")
        }else if (creditCard?.hasErrorCardHolderName())!{
            print("Erro no nome do cartão")
        }else if (creditCard?.hasErrorCardExpirationYear())!{
            print("Erro no ano de expiração")
        }else if (creditCard?.hasErrorCardExpirationMonth())!{
            print("Erro no mês de expiração")
        }else{
            creditCard?.generateHash({ (error, cardHash) -> Void in
                if (error != nil) {
                    print("erro = \(error.debugDescription)")
                }
                else
                {
                    print(cardHash!)
                }
            })
        }

.NET

Para realizar a geração do card_hash dentro de um aplicativo para Windows Forms, Windows Phone (plataforma .NET) ou ASP.NET você precisa incluir a nossa biblioteca dentro dele. Para isso, instale a biblioteca .NET ou a biblioteca portável para .NET .

Para utilizar a biblioteca, primeiro importe o namespace:

using PagarMe;

Para gerar o card_hash a partir dos dados de cartão:

PagarMeService.DefaultEncryptionKey = "ek_test_Ec8KhxISQ1tug1b8bCcxC2nXfxqRnk";

CardHash card = new CardHash();

card.CardNumber = "4111111111111111";
card.CardHolderName = "Test User";
card.CardExpirationDate = "1017";
card.CardCvv = "123";

string cardhash = card.Generate();

Próximo

Já tem o Card Hash? Excelente, você agora pode usá-lo para criar transações, assinaturas ou criar um cartão para posterior one-click buy. Veja como fazer isso em: