Pular para o conteúdo principal

Apple Pay

O Apple Pay permite que clientes finalizem pagamentos em sites e aplicativos usando cartões já cadastrados em sua Wallet, dispensando o preenchimento manual de dados do cartão. Para habilitar Apple Pay na FastPay, é necessário um processo de credenciamento junto à Apple, no qual você cria um Merchant ID, valida o domínio e gera certificados que serão compartilhados com a FastPay.

Este guia descreve o passo a passo completo do credenciamento.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma conta ativa no Apple Developer Program.
  • Um domínio próprio servindo sob HTTPS (com certificado SSL válido).
  • Acesso ao painel da FastPay para envio do certificado de processamento.
  • openssl instalado localmente para geração dos arquivos .csr e .key.

Nota: Recomendamos criar Merchant IDs separados para sandbox e produção para evitar conflitos entre os ambientes durante os testes.

Visão Geral do Fluxo

Etapa 1 — Criação do Merchant ID

  1. Acesse o Apple Developer — Identifiers.
  2. Clique no botão + para registrar um novo identificador e selecione a opção Merchant IDs.
  3. Preencha os campos:
CampoDescriçãoExemplo
DescriptionTexto livre que descreve a finalidade do Merchant ID.Merchant ID FastPay — Sandbox
IdentifierIdentificador único no formato de domínio reverso, iniciando com merchant..merchant.com.seudominio.fastpay.sandbox
  1. Confirme a criação. Repita o processo para gerar um Merchant ID dedicado ao ambiente de produção (por exemplo, merchant.com.seudominio.fastpay.prod).

Importante: Guarde os Merchant IDs criados — eles serão informados à FastPay ao final do credenciamento.

Etapa 2 — Validação do Domínio

Apple exige que você comprove a propriedade de todos os domínios que oferecerão o botão Apple Pay.

  1. No Apple Developer, abra o Merchant ID criado e localize a seção Merchant Domains.
  2. Clique em Add Domain e informe o domínio (sem https://, ex: loja.seudominio.com).
  3. Faça o download do arquivo de validação fornecido pela Apple (apple-developer-merchantid-domain-association.txt).
  4. Hospede o arquivo no seu domínio, exatamente no caminho:
https://<seu-dominio>/.well-known/apple-developer-merchantid-domain-association.txt
  1. De volta ao painel Apple, clique em Verify. O status deve mudar para Verified.

Nota: O arquivo precisa estar acessível publicamente via HTTPS, com o Content-Type text/plain ou application/octet-stream. Se utilizar CDN ou proxy reverso, garanta que a rota .well-known não esteja bloqueada.

Etapa 3 — Merchant Identity Certificate

Este certificado autentica seu servidor junto aos servidores da Apple durante a solicitação de uma sessão de pagamento.

3.1 Gerar o CSR e a chave privada

No terminal, execute:

openssl req -out uploadMe.csr -new -newkey rsa:2048 -nodes \
-keyout certificate_sandbox.key
  • Preencha os campos solicitados (Country, State, Organization, etc).
  • Quando solicitada a Challenge password, deixe em branco.

Ao final, você terá dois arquivos:

  • uploadMe.csr → será enviado à Apple.
  • certificate_sandbox.keychave privada, mantenha em local seguro.

3.2 Upload do CSR e emissão do certificado

  1. No Merchant ID, abra a seção Apple Pay Merchant Identity Certificate e clique em Create Certificate.
  2. Faça o upload do uploadMe.csr.
  3. Baixe o arquivo merchant_id.cer gerado pela Apple.

3.3 Conversão para PEM

A FastPay e a maioria dos servidores trabalham com certificados em formato PEM. Converta o .cer com:

openssl x509 -inform der -in merchant_id.cer -out certificate_sandbox.pem

Ao final desta etapa, você deve ter em mãos:

  • certificate_sandbox.pem — certificado de identidade.
  • certificate_sandbox.key — chave privada correspondente.

Etapa 4 — Payment Processing Certificate

Este certificado é responsável por criptografar os dados do cartão que o dispositivo do cliente envia para a FastPay processar a transação.

4.1 Gerar o CSR

Gere um novo CSR exclusivamente para este certificado:

openssl req -out paymentProcessing.csr -new -newkey rsa:2048 -nodes \
-keyout payment_processing.key

Novamente, deixe a Challenge password em branco.

4.2 Upload no Apple Developer

  1. No Merchant ID, abra Apple Pay Payment Processing Certificate e clique em Create Certificate.
  2. Quando perguntado "Will payments associated with this Merchant ID be processed exclusively in China?", selecione No.
  3. Faça o upload do paymentProcessing.csr.
  4. Baixe o .cer resultante.

4.3 Envio para a FastPay

Envie para a equipe da FastPay:

  • O .cer do Payment Processing Certificate (gerado nesta etapa).
  • O .pem do Merchant Identity Certificate (gerado na Etapa 3).
  • A .key correspondente ao Merchant Identity Certificate.
  • O Merchant Identifier criado na Etapa 1.
  • O Display Name que aparecerá na folha de pagamento (até 64 caracteres UTF-8).

Segurança: Nunca exponha publicamente nem comite no Git as chaves privadas (.key). Compartilhe-as com a FastPay através de canais seguros indicados pela equipe de suporte.

Etapa 5 — Resumo dos Artefatos Entregues à FastPay

Para concluir o credenciamento, confirme com nossa equipe que você entregou:

ItemOrigemObrigatório
Merchant IdentifierEtapa 1Sim
Display NameDefinido pelo lojistaSim
Lista de domínios validadosEtapa 2Sim
Merchant Identity Certificate (.pem)Etapa 3Sim
Merchant Identity Key (.key)Etapa 3Sim
Payment Processing Certificate (.cer)Etapa 4Sim
Ambiente (sandbox/produção)Definido pelo lojistaSim

Após validar e instalar os artefatos, a FastPay confirmará a ativação do Apple Pay para o seu merchant.

Integração com a API da FastPay

Após concluir o credenciamento, o pagamento via Apple Pay é realizado através do endpoint padrão de cobranças POST /v1/charges, utilizando o paymentMethod do tipo credit_card com o campo adicional wallet.

Como obter o token

O token Apple Pay (paymentData) é gerado pelo dispositivo do cliente durante o fluxo do Apple Pay JS API. Após o cliente autorizar o pagamento, sua aplicação recebe o evento onpaymentauthorized contendo o objeto payment.token, que deve ser enviado na íntegra para a FastPay no momento da criação da cobrança.

Estrutura do payload

Quando o campo wallet é informado, os dados do cartão (number, holderName, expirationMonth, expirationYear, cvv) não são necessários — a FastPay descriptografa o token Apple Pay e extrai automaticamente as informações do cartão. Apenas installments continua obrigatório.

{
"amount": 100.5,
"currency": "BRL",
"customer": {
"name": "John Doe",
"email": "john.doe@example.com",
"phone": "+5511987654321",
"document": { "type": "cpf", "id": "12345678900" },
"address": { "country": "BRA" }
},
"paymentMethod": {
"type": "credit_card",
"installments": 1,
"wallet": {
"type": "applepay",
"token": {
"paymentData": {
"version": "EC_v1",
"data": "<base64-encoded encrypted payment data>",
"signature": "<base64-encoded detached PKCS#7 signature>",
"header": {
"ephemeralPublicKey": "<base64-encoded EC public key>",
"publicKeyHash": "<base64-encoded SHA-256 hash>",
"transactionId": "<hex-encoded transaction id>"
}
},
"paymentMethod": {
"displayName": "Visa 1234",
"network": "Visa",
"type": "credit"
},
"transactionIdentifier": "<unique transaction identifier>"
}
}
},
"items": [
{
"title": "Produto XYZ",
"type": "digital",
"description": "Descrição do produto",
"unit_price": 100.5,
"quantity": 1
}
]
}

Campos do objeto wallet

CampoTipoDescrição
typestringFixo em applepay.
tokenobjectObjeto payment.token retornado pela Apple Pay JS API após a autorização do cliente.
token.paymentDataobjectDados criptografados do pagamento.
token.paymentData.versionstringVersão do formato do token. Fixo em EC_v1.
token.paymentData.datastringDados do pagamento criptografados, codificados em Base64.
token.paymentData.signaturestringAssinatura PKCS #7 destacada, codificada em Base64.
token.paymentData.headerobjectCabeçalho com as informações de troca de chaves.
token.paymentMethod.displayNamestringDescrição localizada do cartão (ex.: "Visa 1234").
token.paymentMethod.networkstringBandeira do cartão (ex.: Visa, Mastercard, Amex, Discover).
token.paymentMethod.typestringTipo do cartão. Um de: debit, credit, prepaid, store.
token.transactionIdentifierstringIdentificador único da transação Apple Pay.

Importante: Não tente decodificar, modificar ou armazenar o conteúdo do token — ele é criptografado com o Payment Processing Certificate enviado na Etapa 4 e só a FastPay possui a chave para descriptografá-lo.

Para detalhes do schema, consulte o API Reference.

Renovação dos Certificados

Os certificados Apple Pay possuem validade de aproximadamente 25 meses. Antes do vencimento:

  1. Repita as Etapas 3 e 4 para gerar novos .pem/.cer.
  2. Reenvie os arquivos à FastPay com pelo menos 30 dias de antecedência para garantir uma troca sem indisponibilidade.

Troubleshooting

Falha ao verificar o domínio

Possíveis causas:

  • O arquivo de validação não está acessível em /.well-known/apple-developer-merchantid-domain-association.txt.
  • O domínio não está servido sob HTTPS válido.
  • Redirecionamentos HTTP → HTTPS estão removendo o arquivo do path.

Solução: valide manualmente com:

curl -I https://<seu-dominio>/.well-known/apple-developer-merchantid-domain-association.txt

A resposta deve ser 200 OK e o Content-Type deve permitir leitura como texto.

CSR rejeitado pela Apple

  • Certifique-se de não ter informado uma Challenge password.
  • O CSR precisa ter sido gerado com chave RSA de 2048 bits.
  • Cada Create Certificate na Apple consome o CSR — gere um novo para cada tentativa.

Botão Apple Pay não aparece no checkout

  • O domínio acessado pelo cliente precisa estar na lista de Merchant Domains verificados.
  • O navegador precisa ser Safari em macOS/iOS ou um navegador compatível com o dispositivo Apple do cliente.
  • O cliente precisa ter pelo menos um cartão cadastrado na Wallet.

Documentação de Referência