Cartão de crédito

❗️

Você está na versão correta da documentação?

Verifique na sua Dashboard, em Ver minha conta > Configurações > API Keys, a versão da API que você está usando. Você deve usar a documentação correspondente. Para saber mais, veja: Versionamento.

Realizando uma transação

Após obter os dados do cartão, gerar o card_hash e enviá-lo para o seu servidor, você deve realizar a transação junto à API Pagar.me, que então efetua o fluxo de cobrança no cartão do cliente.

Vamos ao exemplo:

curl -X POST 'https://api.pagar.me/1/transactions' -H 'content-type: application/json' -d '{
    "amount": "1000", 
    "api_key": "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0", 
    "card_hash": "CARD_HASH_GERADO", 
    "customer": {
        "address": {
            "neighborhood": "Cidade Mon\u00e7\u00f5es", 
            "street": "Rua Dr.Geraldo Campos Moreira", 
            "street_number": "240", 
            "zipcode": "04571020"
        }, 
        "document_number": "92545278157", 
        "email": "[email protected]", 
        "name": "John Appleseed", 
        "phone": {
            "ddd": "11", 
            "number": "15510101"
        }
    }
}'
require 'pagarme'

PagarMe.api_key = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";

transaction = PagarMe::Transaction.new({
    :amount => 1000,
    :card_hash => "CARD_HASH_GERADO",
    :customer => {
        :name => "John Appleseed",
        :document_number => "92545278157",
        :email => "[email protected]",
        :address => {
            :street => "Rua Dr. Geraldo Campos Moreira",
            :neighborhood => "Cidade Monções",
            :zipcode => "04571020",
            :street_number => "240"
        },
        :phone => {
            :ddd => "11"
            :number => "15510101"
        }
    }
})

transaction.charge
<?php
    require('vendor/autoload.php');

    $pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

		$transaction = $pagarme->transactions()->create([
        "amount" => 1000,
        "card_hash" => "CARD_HASH_GERADO",
        "customer" => [
            "name" => "John Appleseed",
            "document_number" => "92545278157",
            "email" => "[email protected]",
            "address" => [
                "street" => "Rua Dr. Geraldo Campos Moreira",
                "neighborhood" => "Cidade Monções",
                "zipcode" => "04571020",
                "street_number" => "240"
            ],
            "phone" => [
                "ddd" => "11",
                "number" => "15510101"
            ]
        ]
    ]);
?>
PagarMeService.DefaultApiKey = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";

Transaction transaction = new Transaction();

transaction.Amount = 1000;
transaction.CardHash = "CARD_HASH_GERADO";
transaction.Customer = new Customer() {
    Name = "John Appleseed",
    DocumentNumber = "92545278157",
    Email = "[email protected]",
    Address = new Address() {
        Street = "Rua Dr. Geraldo Campos Moreira",
        Neighborhood = "Cidade Monções",
        Zipcode = "04571020",
        StreetNumber = "240"
    },
    Phone = new Phone() {
        Ddd = "11",
        Number = "15510101"
    }
};

transaction.Save();
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Phone phone = new Phone();
phone.setDdd("11");
phone.setDdi("55");
phone.setNumber("99999999");

String street = "Avenida Brigadeiro Faria Lima";
String streetNumber = "1811";
String neighborhood = "Jardim Paulistano";
String zipcode = "01451001";
Address address = new Address(street, streetNumber, neighborhood, zipcode);

String name = "Aardvark Silva";
String email = "[email protected]";
String documentNumber = "18152564000105";
Customer customer = new Customer(name, email);
customer.setAddress(address);
customer.setPhone(phone);
customer.setDocumentNumber(documentNumber);

Map<String, Object> metadata = new HashMap<String, Object>();
metadata.put("IdProduto", 13933139);

Transaction tx = new Transaction();
tx.setCustomer(customer);
tx.setAmount(100);
tx.setCardHash("CARD_HASH_GERADO");
tx.setPaymentMethod(PaymentMethod.CREDIT_CARD);
tx.setMetadata(metadata);
tx.setPostbackUrl("http://requestb.in/pkt7pgpk");
tx.save();
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.create({
    amount: 100,
    payment_method: 'credit_card',
    card_hash: 'CARD_HASH_GERADO',
    postback_url: 'http://requestb.in/pkt7pgpk',
    customer: {
      name: 'Aardvark Silva',
      email: '[email protected]',
      document_number: '18152564000105',
      address: {
        street: 'Avenida Brigadeiro Faria Lima',
        street_number: '1811',
        neighborhood: 'Jardim Paulistano',
        zipcode: '01451001'
      },
      phone: {
        ddi: '55',
        ddd: '11',
        number: '99999999'
      }
    },
    metadata: {
      idProduto: '13933139'
    }
  }))
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
  'amount': '10000', 
  'payment_method': 'credit_card',
  'card_hash': 'CARD_HASH_GERADO',
  'customer': {
    'email': '[email protected]',
    'name': 'Daenerys Targaryen',
    'document_number': '18152564000105',
    'address': {
        'zipcode': '04571020',
        'neighborhood': 'Dragon Village',
        'street': 'Rua Drogon',
        'street_number': '240'
     },
    'phone': {
      	'number': '987654321',
        'ddd': '11'
    }
  }
}

trx = pagarme.transaction.create(params)

print (trx)

É dessa forma que você consegue criar uma transação de cartão de crédito. Viu como é simples? ;-)

Parâmetros de uma transação

Descrição dos parâmetros passados no exemplo:

ParâmetroPadrãoDescrição
amountValor total a ser cobrado (em centavos). Ex: R$14,99 = 1499
card_hashRepresentação segura dos dados de cartão de crédito
installments1Número de parcelas a serem cobradas no cartão de crédito
payment_methodcredit_cardMeio de pagamento que será utilizado
postback_urlURL para receber notificações sobre alterações no status da transação
soft_descriptorTexto (de até 13 caracteres, somente letras e números) que aparecerá na fatura do cartão do cliente ao lado do nome da sua loja
customerObjeto que deve possuir todas as informações do cliente
metadataObjeto JSON para você receber dados de sua plataforma, como: id do pedido, descrição do produto/serviço etc.

Aprenda mais sobre a lista completa de parâmetros em: Criar transação

Observações

🚧

Vale ressaltar:

Após gerado, o card_hash tem validade de 5 minutos. Além disso, ele pode ser utilizado uma única vez.

Dados de customer

🚧

Porque passar os dados do cliente (customer) na transação ?

São dados essenciais para que o antifraude consiga avaliar a transação e evitar compras ilegítimas.

Ao usar os exemplos

🚧

Mudança de API KEY:

Não se esqueça de substituir ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0 pela sua Chave de API, que está disponível em sua Dashboard.

Status de uma transação após ser criada

Após realizar uma transação de Cartão de crédito, ela fica com o status paid, indicando que o cartão do usuário foi debitado com sucesso. No entanto, caso ela seja recusada pelo banco emissor, fica com o status refused. Você pode aprender mais sobre os possíveis status de uma transação em: Status das transações

Simulações em teste

Como simular uma transação recusada pelo banco emissor?

📘

Testando transações recusadas

No ambiente de testes, você pode simular uma transação recusada pelo banco emissor. Basta passar um card_cvv que começa com o número 6.

Como simular uma transação recusada pelo antifraude ?

📘

Testando transação recusada por antifraude

Você pode fazer este teste passando um document_number igual à 11111111111.

Capturando uma transação posteriormente

Com a API Pagar.me, você pode separar o processo de autorização (reserva de saldo no cartão) e captura (confirmação para cobrança em fatura). Isso é feito através de um parâmetro chamado capture.

O primeiro passo é passar este parâmetro como false no momento da criação de uma transação, como é mostrado nesse exemplo:

curl -X POST 'https://api.pagar.me/1/transactions' -H 'content-type: application/json' -d '{
    "amount": "1000", 
    "api_key": "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0", 
    "capture": "false", 
    "card_hash": "CARD_HASH_GERADO", 
    "customer": {
        "address": {
            "neighborhood": "Cidade Mon\u00e7\u00f5es", 
            "street": "Rua Dr.Geraldo Campos Moreira", 
            "street_number": "240", 
            "zipcode": "04571020"
        }, 
        "document_number": "92545278157", 
        "email": "[email protected]", 
        "name": "John Appleseed", 
        "phone": {
            "ddd": "11", 
            "number": "15510101"
        }
    }
}'
require 'pagarme'

PagarMe.api_key = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";

transaction = PagarMe::Transaction.new({
    :amount => 1000,
    :card_hash => "CARD_HASH_GERADO",
    :capture => false,
    :customer => {
        :name => "John Appleseed",
        :document_number => "92545278157",
        :email => "[email protected]",
        :address => {
            :street => "Rua Dr. Geraldo Campos Moreira",
            :neighborhood => "Cidade Monções",
            :zipcode => "04571020",
            :street_number => "240"
        },
        :phone => {
            :ddd => "11"
            :number => "15510101"
        }
    }
})

transaction.charge
<?php
require('vendor/autoload.php');

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$transaction = $pagarme->transactions()->create([
  "amount" => 1000,
  "card_hash" => "CARD_HASH_GERADO",
  "capture" => false,
  "customer" => [
    "name" => "John Appleseed",
    "document_number" => "92545278157",
    "email" => "[email protected]",
    "address" => [
      "street" => "Rua Dr. Geraldo Campos Moreira",
      "neighborhood" => "Cidade Monções",
      "zipcode" => "04571020",
      "street_number" => "240"
    ],
    "phone" => [
      "ddd" => "11",
      "number" => "15510101"
    ]
  ]
]);
?>
PagarMeService.DefaultApiKey = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";

Transaction transaction = new Transaction();

transaction.Amount = 1000;
transaction.CardHash = "CARD_HASH_GERADO";
transaction.ShouldCapture = false,
transaction.Customer = new Customer() {
    Name = "John Appleseed",
    DocumentNumber = "92545278157",
    Email = "[email protected]",
    Address = new Address() {
        Street = "Rua Dr. Geraldo Campos Moreira",
        Neighborhood = "Cidade Monções",
        Zipcode = "04571020",
        StreetNumber = "240"
    },
    Phone = new Phone() {
        Ddd = "11",
        Number = "15510101"
    }
};

transaction.Save();
import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Phone phone = new Phone();
phone.setDdd("11");
phone.setDdi("55");
phone.setNumber("99999999");

String street = "Avenida Brigadeiro Faria Lima";
String streetNumber = "1811";
String neighborhood = "Jardim Paulistano";
String zipcode = "01451001";
Address address = new Address(street, streetNumber, neighborhood, zipcode);

String name = "Aardvark Silva";
String email = "[email protected]";
String documentNumber = "18152564000105";
Customer customer = new Customer(name, email);
customer.setAddress(address);
customer.setPhone(phone);
customer.setDocumentNumber(documentNumber);

Transaction tx = new Transaction();
tx.setCustomer(customer);
tx.setAmount(100);
tx.setCardId("card_ci6l9fx8f0042rt16rtb477gj");
tx.setPaymentMethod(PaymentMethod.CREDIT_CARD);
tx.setCapture(false);
tx.setPostbackUrl("http://requestb.in/pkt7pgpk");
tx.save();
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.create({
    capture: false,
    amount: 100,
    card_number: '4111111111111111',
    card_holder_name: 'abc',
    card_expiration_date: '1225',
    card_cvv: '123',
  }))

Desta forma, a API Pagar.me retorna uma transação com status authorized, assim como no exemplo a seguir:

{
  "object": "transaction",
  "status": "authorized",
  "refuse_reason": null,
  "status_reason": "antifraud",
  "acquirer_response_code": "0000",
  "acquirer_name": "pagarme",
  "acquirer_id": "56f9d019decf72cc70055d58",
  "authorization_code": "187267",
  "soft_descriptor": null,
  "tid": 1399451,
  "nsu": 1399451,
  "date_created": "2017-03-29T05:14:15.423Z",
  "date_updated": "2017-03-29T05:14:15.866Z",
  "amount": 100,
  "authorized_amount": 100,
  "paid_amount": 0,
  "refunded_amount": 0,
  "installments": 1,
  "id": 1399451,
  "cost": 0,
  "card_holder_name": "John",
  "card_last_digits": "1112",
  "card_first_digits": "401200",
  "card_brand": "visa",
  "card_pin_mode": null,
  "postback_url": "https://api.aardvark.com/payment/pagarme",
  "payment_method": "credit_card",
  "capture_method": "ecommerce",
  "antifraud_score": null,
  "boleto_url": null,
  "boleto_barcode": null,
  "boleto_expiration_date": null,
  "referer": "api_key",
  "ip": "187.11.121.49",
  "subscription_id": null,
  "phone": {
    "object": "phone",
    "ddi": "55",
    "ddd": "11",
    "number": "99999999",
    "id": 100924
  },
  "address": {
    "object": "address",
    "street": "Rua Dr. Geraldo Campos Moreira",
    "complementary": null,
    "street_number": "240",
    "neighborhood": "Cidade Monções",
    "city": "São Paulo",
    "state": "SP",
    "zipcode": "04571020",
    "country": "Brasil",
    "id": 103703
  },
  "customer": {
    "object": "customer",
    "document_number": "11111111111",
    "document_type": "cpf",
    "name": "Aardvark Silva",
    "email": "[email protected]",
    "born_at": null,
    "gender": null,
    "date_created": "2016-04-07T14:14:22.830Z",
    "id": 53170
  },
  "card": {
    "object": "card",
    "id": "card_cj0u8kmpu00t91t6erxu10vmv",
    "date_created": "2017-03-29T00:31:42.595Z",
    "date_updated": "2017-03-29T00:31:43.029Z",
    "brand": "visa",
    "holder_name": "John",
    "first_digits": "401200",
    "last_digits": "1112",
    "country": "US",
    "fingerprint": "wLMQ4TdBsAj0",
    "valid": true,
    "expiration_date": "1120"
  },
  "split_rules": null,
  "metadata": {},
  "antifraud_metadata": {}
}

Chamada para fazer a captura

Posteriormente, você pode confirmar e pedir a captura. É importante lembrar que isso precisa ser feito até 5 dias após a autorização. Confirme a captura com a seguinte chamada:

curl -X POST https://api.pagar.me/1/transactions/:id/capture -H 'content-type: application/json' -d '{
    "api_key": "SUA API KEY"
}'
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture()
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  'id' => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  'amount' => VALOR_TOTAL_COM_CENTAVOS
]);
PagarMeService.DefaultApiKey = "SUA API KEY";

var transaction = PagarMeService.GetDefaultService().Transactions.Find ("Transaction ID");

transaction.Capture();
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Transaction transaction = new Transaction().find(194351);
transaction.capture(1000);
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({ id: 1399451 }))

Perceba que, no caminho da request, é necessário especificar o ID da transação que foi criada anteriormente.

Captura parcial

Também pela API Pagar.me é possível especificar o quanto você gostaria de efetivamente capturar desta transação. Para isso você precisa apenas especificar o parâmetro amount, como no exemplo a seguir:

curl -X POST https://api.pagar.me/1/transactions/:id/capture -H 'content-type: application/json' -d '{
    "amount": "6234", 
    "api_key": "SUA API KEY"
}'
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture(amount: 6234)
<?php
require("vendor/autoload.php");
$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  'id' => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  'amount' => VALOR_PARCIAL_EM_CENTAVOS
]);
PagarMeService.DefaultApiKey = "SUA API KEY";

var transaction = PagarMeService.GetDefaultService().Transactions.Find ("Transaction ID");

transaction.Capture(6234);
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Transaction transaction = new Transaction().find(194351);
transaction.capture(6234);
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({
    id: 1399451,
    amount: 6234
  }))

Quando uma captura parcial é feita, você consegue ver o resultado refletido no campo paid_amount da transaction, como o exemplo a seguir:

{
    "object": "transaction",
    "status": "paid",
    "refuse_reason": null,
    "status_reason": "acquirer",
    "acquirer_response_code": "0000",
    "acquirer_name": "pagarme",
    "acquirer_id": "56f9d019decf72cc70055d58",
    "authorization_code": "596257",
    "soft_descriptor": null,
    "tid": 1399452,
    "nsu": 1399452,
    "date_created": "2017-03-29T05:24:38.633Z",
    "date_updated": "2017-03-29T05:25:07.564Z",
    "amount": 10000,
    "authorized_amount": 10000,
    "paid_amount": 6234,
    "refunded_amount": 0,
    "installments": 1,
    "id": 1399452,
    "cost": 50,
    "card_holder_name": "John",
    "card_last_digits": "1112",
    "card_first_digits": "401200",
    "card_brand": "visa",
    "card_pin_mode": null,
    "postback_url": "https://api.aardvark.com/payment/pagarme",
    "payment_method": "credit_card",
    "capture_method": "ecommerce",
    "antifraud_score": null,
    "boleto_url": null,
    "boleto_barcode": null,
    "boleto_expiration_date": null,
    "referer": "api_key",
    "ip": "182.46.185.23",
    "subscription_id": null,
    "phone": {
      "object": "phone",
      "ddi": "55",
      "ddd": "11",
      "number": "99999999",
      "id": 100924
    },
    "address": {
      "object": "address",
      "street": "Rua Dr. Geraldo Campos Moreira",
      "complementary": null,
      "street_number": "240",
      "neighborhood": "Cidade Monções",
      "city": "São Paulo",
      "state": "SP",
      "zipcode": "04571020",
      "country": "Brasil",
      "id": 103703
    },
    "customer": {
      "object": "customer",
      "document_number": "11111111111",
      "document_type": "cpf",
      "name": "Aardvark Silva",
      "email": "[email protected]",
      "born_at": null,
      "gender": null,
      "date_created": "2016-04-07T14:14:22.830Z",
      "id": 53170
    },
    "card": {
      "object": "card",
      "id": "card_cj0u8kmpu00t91t6erxu10vmv",
      "date_created": "2017-03-29T00:31:42.595Z",
      "date_updated": "2017-03-29T00:31:43.029Z",
      "brand": "visa",
      "holder_name": "John",
      "first_digits": "401200",
      "last_digits": "1112",
      "country": "US",
      "fingerprint": "wLMQ4TdBsAj0",
      "valid": true,
      "expiration_date": "1120"
    },
    "split_rules": null,
    "antifraud_metadata": {},
    "metadata": {}
  }

🚧

Vale ressaltar

A captura parcial só é permitida para transações criadas usando uma API Key, tanto para cartão de crédito ou boleto.

Logo, para transações feitas com o Checkout Pagar.Me, o valor de captura deve ser sempre igual ao total do carrinho de compras em sua plataforma.

Captura com split rules e metadata

Em um Marketplace, é no momento da captura que você precisa passar os dados de Split Rules — isto é, as regras de divisão de uma transação.

Além disso, é também na captura que você precisa enviar os parâmetros de metadata com informações de sua plataforma. Veja os exemplos:

curl -X POST -H "Content-Type: application/json"  -d '{
  "api_key":"SUA API KEY",
  "split_rules": [
    {
      "recipient_id": "re_ciyol0qac00xnlg6dkaftvn9j",
      "percentage": 55,
      "liable": true,
      "charge_processing_fee": true
    },{
      "recipient_id": "re_ciyoloogb0100l46dy6f1iuww",
      "percentage": 45,
      "liable": false,
      "charge_processing_fee": false
    }
  ],
  "metadata": {
       "id_pedido": "13933139"
   }
}' "https://api.pagar.me/1/transactions/:id/capture" -H 'content-type: application/json' -d '{}'
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture({
  split_rules: [
    {
      recipient_id: 're_ciyoloogb0100l46dy6f1iuww',
      liable: true,
      charge_processing_fee: true,
      percentage: 55
    },
    {
      recipient_id: 're_ciyol0qac00xnlg6dkaftvn9j',
      liable: false,
      charge_processing_fee: false,
      percentage: 45
    }
  ],
  metadata: {
    id_pedido: '13933139'  
  }
})
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  "id" => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  "split_rules" => [
    [
      "recipient_id" => "re_ciyoloogb0100l46dy6f1iuww",
      "liable" => "true",
      "charge_processing_fee" => "true",
      "percentage" => "55",
    ],
    [
      "recipient_id" => "re_ciyol0qac00xnlg6dkaftvn9j",
      "liable" => "false",
      "charge_processing_fee" => "false",
      "percentage" => "45",    
    ] 
  ],
  "metadata" => [
    "id_pedido" => "13933139"
  ]
]);
Feature ainda não disponível para esse SDK
Feature ainda não disponível para esse SDK
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({
    id: 1399451,
    split_rules: [
      {
        'recipient_id': 're_ciyoloogb0100l46dy6f1iuww',
        'liable': 'true',
        'charge_processing_fee': 'true',
        'percentage': '55',
      },
      {
        'recipient_id': 're_ciyol0qac00xnlg6dkaftvn9j',
        'liable': 'false',
        'charge_processing_fee': 'false',
        'percentage': '45',
      }
    ],
    metadata: {
      'id_pedido': '13933139'
    }
  }))

Criando um cartão para one-click buy

Com a API Pagar.me você consegue criar um cartão para possíveis cobranças posteriores em transações e assinaturas. Para fazer isso, você precisa primeiramente de um card_hash, como mostra o exemplo a seguir:

curl -X POST 'https://api.pagar.me/1/cards' -H 'content-type: application/json' -d '{
    "api_key": "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0", 
    "card_hash": "CARD_HASH"
}'
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

card = PagarMe::Card.create(card_hash: 'CARD_HASH_GERADO')
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$card = $pagarme->cards()->create([
  'holder_name' => 'Yoda',
  'number' => '4242424242424242',
  'expiration_date' => '1225',
  'cvv' => '123'
]);
PagarMeService.DefaultApiKey = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";
PagarMeService.DefaultEncryptionKey = "ek_test_Ec8KhxISQ1tug1b8bCcxC2nXfxqRnk";

Card card = new Card();
card.Number = "4242424242424242";
card.HolderName = "API CUSTOMER";
card.ExpirationDate = "0117";
card.Cvv = "314";

//O próprio SDK vai gerar o card_hash, antes de enviar a API
card.Save();
import java.util.Collection;

import me.pagar.model.Card;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;

PagarMe.init("SUA_API_KEY");

Card card = new Card();
card.setNumber("4242424242424242");
card.setHolderName("API CUSTOMER");
card.setExpiresAt("1219");
card.setCvv(314);
card.save();
const pagarme = require('pagarme')

pagarme.client.connect({ api_key: 'SUA API KEY' })
    .then(client => client.cards.create({
        card_number: '4242424242424242',
        card_holder_name: 'Aardvark Silva',
        card_expiration_date: '1225',
        card_cvv: '123',
    }))
    .then(card => console.log(card.id))

O que todos estes exemplos retornam em comum é um card_id, dado que funciona como um ID para o cartão criado. Com ele, você consegue criar transações e assinaturas da mesma maneira que faz com card_hash. Exemplo de Card ID: card_cj2ebvhnm011lkd6dj683vn0j

As vantagens de um Card ID

  • Ele pode ser usado indefinidamente, ou enquanto o cartão em si tenha validade com o banco emissor.
  • Pode ser armazenado em sua base de dados, pois não expira após 5 minutos como acontece com o Card Hash.

Próximo

Legal, você aprendeu sobre todos os aspectos que envolvem transações com cartão de crédito, que tal ver agora como criar uma transação por boleto?