CDX Pay para desenvolvedores

Ambiente de testes

A homologação (https://pay-api.staging.bloomx.cloud, chaves wp_test) funciona como a produção, mas usa o ambiente de testes da rede de cartões: nada é cobrado e só cartões de teste são aceitos. Em homologação, GET /v1/capabilities devolve key_environment: test e tokenization.sandbox: true.

Cartões de teste

Use estes números nos campos do cartão. O ambiente de testes decide o resultado pelo último dígito do número.

Cartão Final Resultado esperado
5555555555550020 0 aprovado (captured ou pre_authorized)
5555555555550012 2 recusado pelo emissor: 422 card_declined
5555555555550053 3 recusa por cartão vencido: 422 card_expired (pode vir como card_declined)

Para todos: qualquer validade futura (por exemplo 12/2030), qualquer CVV (por exemplo 170) e qualquer nome.

Recusa na captura: capturar uma pré-autorização com amount_cents: 991 (R$ 9,91) simula uma recusa da rede de cartões: 422 provider_rejected, e o pagamento continua em pre_authorized.

Dados de teste do comprador

Campo Valor de teste
customer.document 12345678909 (CPF de exemplo, com dígitos verificadores válidos)
customer.phone 11999999999
customer.email maria@example.com
customer.address CEP 01001000, Rua Teste, 100, Centro, Sao Paulo, SP

Em homologação, nunca use dados reais de pessoas.

Checklist de homologação

Antes de pedir a chave wp_live, confirme em homologação:

  1. GET /v1/capabilities com a chave wp_test devolve tokenization.available: true e tokenization.sandbox: true.
  2. A sua página monta os quatro campos do cartão e tokenize() devolve um tokenId com o cartão final 0.
  3. POST /v1/payments com esse token_id responde 201 com o pagamento em captured.
  4. O cartão final 2 responde 422 card_declined, e a sua página pede outro cartão.
  5. capture: false → pre_authorized → POST /v1/payments/{id}/capture → captured → POST /v1/payments/{id}/cancel com parte do valor → partially_refunded.
  6. Repetir um POST /v1/payments com a mesma Idempotency-Key e o mesmo corpo devolve 200 com o mesmo pagamento, sem cobrar de novo.
  7. O seu endpoint recebe o webhook de cada mudança de status, valida a assinatura e responde 2xx.
  8. O seu servidor trata a resposta 202 (unknown) sem reenviar com outra chave.
  9. A chave fica só no servidor: nada da chave aparece no navegador, em logs ou no repositório.

Concluído o checklist, peça a chave wp_live ao seu contato comercial e troque a base da API para https://pay-api.bloomx.cloud.