Ambientes
Dois ambientes com o mesmo contrato. Uma integração que passa no sandbox de ponta a ponta usa a mesma API em produção; a produção é habilitada por cliente.
Produção e sandbox
| Produção | Sandbox | |
|---|---|---|
| Host | https://api.fcmpayments.com |
https://empresas-sandbox.fcmpayments.com |
| API keys | fcm_live_… |
fcm_test_… |
| Dinheiro | Real. As transferências pela COELSA (a câmara de compensação argentina) são irreversíveis. | Simulado. Ledger e trilho próprios do sandbox. |
Simuladores (/v1/simulations/*) |
Não existem (404) | Sim |
Uma chave de um ambiente usada no outro responde 403 environment_mismatch.
Servidores declarados no contrato
https://api.fcmpayments.com— Produção. Dinheiro real; as transferências pela COELSA são irreversíveis.https://empresas-sandbox.fcmpayments.com— Sandbox. Ledger e trilho simulados; nunca movimenta dinheiro real.
Sandbox
- As transferências de saída se completam sozinhas em ~2 s, exceto pelos centavos do valor:
…13terminafailedcomdestination_closed(COELSA 7502),…70terminafailedcomrail_expired(COELSA 7570) e…99fica emsubmittedaté que você o resolva comPOST /v1/simulations/outgoing_transfers/{id}/rail_result. - Alias de teste (os nomes legíveis das contas argentinas) para validar contrapartes:
sbx.valida(válida),sbx.inactiva,sbx.inexistente,sbx.bloqueada(controle de compliance) esbx.otro.titular(um CUIT, a identificação fiscal argentina, diferente do esperado, se você enviarexpected_cuit). Qualquer CBU (número de conta bancária) ou CVU (número de conta virtual) com dígitos verificadores corretos é validado com um titular sintético. POST /v1/simulations/incoming_transferssimula um crédito recebido: percorre o mesmo caminho que um aviso real da COELSA (lançamento, tarifa, evento e webhook).- Relógio de teste por entidade:
GET /v1/simulations/clockePOST /v1/simulations/clock/advanceavançam a hora da entidade (limites diários e mensais, novas tentativas de webhooks, vencimentos). - Liquidação tardia, em dois passos: sobre uma transferência
failedque saiu pela COELSA (por exemplo, uma…13),POST /v1/simulations/outgoing_transfers/{id}/rail_resultcom{"outcome":"completed"}simula que a COELSA a creditou depois, pelo mesmo caminho que em produção (débito compensatório do valor, transferências de saída desabilitadas,submittedcomlate_settlement_reviewe o eventotransfer.outgoing.reopened). Depois,POST /v1/simulations/outgoing_transfers/{id}/late_settlement_reviewcom{"outcome":"completed"}simula que duas pessoas do Grip Rails confirmam a liquidação: alguns segundos depois o Grip Rails a fecha comocompleted, sem custo, com o eventotransfer.outgoing.completed. Como em produção, a partir do primeiro passo as suas transferências de saída ficam desabilitadas (403 entity_suspended). Só no sandbox, alguns segundos depois dessetransfer.outgoing.completedo Grip Rails volta a habilitá-las sozinho (GET /v1/entityvolta aactive; não se o Grip Rails tiver bloqueado a sua entidade nesse meio-tempo) e você pode continuar testando; em produção elas continuam desabilitadas até que o Grip Rails as reabilite.