Apple Pay e Google Pay
Quick Reference
WhatApple Pay e Google Pay
WhyCheckout em um toque com biometria — maior conversão, menos fraude, dados de cartão tokenizados
Reading Time15 min
DifficultyIntermediate
PrerequisitesAutenticação → Cartão de crédito
Por que Apple Pay e Google Pay
| Vantagem | Detalhe |
|---|---|
| Checkout em um toque | A biometria substitui o preenchimento manual |
| Maior conversão | Até 2x em relação a formulários de cartão (referência típica) |
| Menos fraude | DPAN tokenizado + criptograma |
| Mudança de responsabilidade | A autenticação da carteira alinha com proteções do emissor |
| Sem armazenar cartão | Você nunca persiste o PAN real |
Fluxo de integração do token
Descriptografe o token da carteira no seu backend e envie os campos de cartão mais applepay ou googlepay com eci, cavv e type (credit_card / debit_card). card_number, validade e card_cvv vêm do payload descriptografado.
Campos obrigatórios
eci e cavv são obrigatórios. Valores ausentes ou incorretos causam recusas.
Dados sensíveis
Nunca registre tokens brutos da carteira, cavv ou PAN completo em analytics ou tickets de suporte.
Criar uma cobrança com carteira
- cURL
- Python
- JavaScript
curl -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "Jane Doe",
"payer_email": "jane.doe@example.com",
"payer_tax_id": "12345678901",
"payer_cell_phone": "+5511999999999",
"currency": "BRL",
"installment_value": 100.0,
"installment_count": 1,
"due_date": "2026-12-31",
"description": "Order #12345",
"items": [{"name":"Headphones","quantity":1,"total_amount":100,"unit_amount":100,"sku":"SKU-001","code":"PROD-123"}],
"payer_address": {"street":"Sample St","address_number":"123","complement":"","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000","country":"BR"},
"type_charge": "applepay",
"card_number": "5200828282828210",
"card_expiry_month": "12",
"card_expiry_year": "2028",
"card_cvv": "123",
"applepay": {"eci":"05","cavv":"AAABBBCCC123456789==","type":"credit_card"},
"device_info": {"ip_address":"177.10.10.10","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"},
"webhook_url": "https://yoursite.com/webhook",
"redirect_url": "https://yoursite.com/return"
}'
import requests
charge = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
headers={"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"},
json={
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "John Smith",
"payer_email": "john.smith@example.com",
"payer_tax_id": "12345678901",
"payer_cell_phone": "+5511999999999",
"currency": "BRL",
"installment_value": 50.0,
"installment_count": 2,
"due_date": "2026-12-31",
"description": "Subscription - Month 1",
"items": [{"name": "Plan", "quantity": 1, "total_amount": 50, "unit_amount": 50, "sku": "PLN-1", "code": "P1"}],
"payer_address": {"street": "Sample St", "address_number": "123", "complement": "", "neighborhood": "Centro", "city": "São Paulo", "state": "SP", "postal_code": "01000-000", "country": "BR"},
"type_charge": "googlepay",
"card_number": "4111111111111111",
"card_expiry_month": "07",
"card_expiry_year": "2029",
"card_cvv": "999",
"googlepay": {"eci": "05", "cavv": "ZYX987654321ABCDEF==", "type": "credit_card"},
"device_info": {"ip_address": "200.200.200.200", "user_agent": "Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36"},
"webhook_url": "https://yoursite.com/webhook",
},
)
print(charge.json())
const response = await fetch(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
wallet_uuid: "00000000-0000-0000-0000-000000000000",
merchant_id: "11111111-1111-1111-1111-111111111111",
payer_name: "Jane Doe",
payer_email: "jane.doe@example.com",
payer_tax_id: "12345678901",
payer_cell_phone: "+5511999999999",
currency: "BRL",
installment_value: 100.0,
installment_count: 1,
due_date: "2026-12-31",
description: "Order #12345",
items: [{ name: "Headphones", quantity: 1, total_amount: 100, unit_amount: 100, sku: "SKU-001", code: "PROD-123" }],
payer_address: { street: "Sample St", address_number: "123", complement: "", neighborhood: "Centro", city: "São Paulo", state: "SP", postal_code: "01000-000", country: "BR" },
type_charge: "applepay",
card_number: "5200828282828210",
card_expiry_month: "12",
card_expiry_year: "2028",
card_cvv: "123",
applepay: { eci: "05", cavv: "AAABBBCCC123456789==", type: "credit_card" },
device_info: { ip_address: "177.10.10.10", user_agent: "Mozilla/5.0" },
webhook_url: "https://yoursite.com/webhook",
}),
}
);
console.log(await response.json());
Verificação de domínio Apple Pay
Hospede /.well-known/apple-developer-merchantid-domain-association.txt em todo domínio que exibe o botão Apple Pay (Apple Pay na Web).
Carteiras digitais
Apple Pay: descriptografe os tokens imediatamente; eci costuma ser 05–07. Google Pay: PAN ou DPAN; eci costuma ser 05. Use webhook_url como fonte da verdade para o status final.
Exemplo de resposta
{
"charge_uuid": "22222222-2222-2222-2222-222222222222",
"local_currency": 100.0,
"currency": "BRL",
"type": "applepay",
"status": "confirmed",
"installment_count": 1,
"installments": [{ "installment_number": 1, "status": "confirmed", "local_currency": 100.0, "currency": "BRL" }]
}
Ciclo de vida do status
| Status | Descrição |
|---|---|
confirmed | Autorização bem-sucedida |
paid | Confirmado para liquidação |
error | Recusado ou falhou |