Sessão Apple Pay
POST
/api/v1/bank/public/charge/applepay/{uuid}/sessionEndpoint público
Este endpoint é chamado a partir do navegador durante o fluxo de pagamento Apple Pay. Quando o usuário clica no botão Apple Pay, seu JavaScript chama ApplePaySession.onvalidatemerchant, que aciona este endpoint para validar a A55 como processadora de pagamentos junto aos servidores da Apple.
Cabeçalhos da requisição
| Cabeçalho | Valor | Obrigatório |
|---|---|---|
Content-Type | application/json | Sim |
Parâmetros de caminho
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
uuid | string (UUID) | Sim | UUID da cobrança para o pagamento Apple Pay |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
validation_url | string | Sim | URL de validação do merchant da Apple proveniente do evento onvalidatemerchant |
domain | string | Sim | Domínio do seu site (ex.: www.sua-loja.com) |
display_name | string | Não | Nome do merchant exibido na tela do Apple Pay |
Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
merchant_session | object | Objeto opaco de sessão Apple Pay — passe para completeMerchantValidation() |
merchant_session.epochTimestamp | number | Timestamp de criação da sessão |
merchant_session.expiresAt | number | Timestamp de expiração da sessão |
merchant_session.merchantSessionIdentifier | string | ID da sessão Apple |
merchant_session.merchantIdentifier | string | ID do merchant Apple |
Códigos de status HTTP
| Status | Descrição |
|---|---|
| 200 | Sessão do merchant criada |
| 400 | validation_url ou domínio inválido |
| 404 | Cobrança não encontrada ou não é uma cobrança Apple Pay |
| 409 | Sessão já criada para esta cobrança |
| 422 | Domínio não registrado no Apple Pay |
| 429 | Limite de requisições excedido |
| 500 | Erro interno do servidor |
Exemplos de código
- cURL
- Python
- Node.js
curl -s -X POST "https://core-manager.a55.tech/api/v1/bank/public/charge/applepay/a1b2c3d4-e5f6-7890-abcd-ef1234567890/session" \
-H "Content-Type: application/json" \
-d '{
"validation_url": "https://apple-pay-gateway.apple.com/paymentservices/startSession",
"domain": "www.your-store.com",
"display_name": "Your Store"
}'
import requests
charge_uuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
try:
response = requests.post(
f"https://core-manager.a55.tech/api/v1/bank/public/charge/applepay/{charge_uuid}/session",
json={
"validation_url": "https://apple-pay-gateway.apple.com/paymentservices/startSession",
"domain": "www.your-store.com",
"display_name": "Your Store",
},
headers={"Content-Type": "application/json"},
)
response.raise_for_status()
session = response.json()
print(f"Session ID: {session['merchant_session']['merchantSessionIdentifier']}")
except requests.exceptions.HTTPError as e:
print(f"HTTP {e.response.status_code}: {e.response.json()}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
const chargeUuid = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
try {
const response = await fetch(
`https://core-manager.a55.tech/api/v1/bank/public/charge/applepay/${chargeUuid}/session`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
validation_url: "https://apple-pay-gateway.apple.com/paymentservices/startSession",
domain: "www.your-store.com",
display_name: "Your Store",
}),
}
);
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const { merchant_session } = await response.json();
// Pass to ApplePaySession.completeMerchantValidation(merchant_session)
console.log(`Session: ${merchant_session.merchantSessionIdentifier}`);
} catch (error) {
console.error("Apple Pay session failed:", error.message);
}
Exemplo de resposta de erro
{
"status": "error",
"message": [
{
"code": "DOMAIN_NOT_REGISTERED",
"source": "applepay",
"description": "Domain www.your-store.com is not registered for Apple Pay. Register it in the A55 dashboard."
}
]
}