Apple Pay via API direta
Nesta página
Este guia aborda como integrar o Apple Pay diretamente com a API da DEUNA. A integração direta oferece controle total sobre o fluxo de pagamento, tornando-a ideal para comerciantes que precisam de implementações personalizadas ou possuem sistemas de pagamento existentes. Esta integração suporta pagamentos únicos.
Apple Pague com DEUNA#
A seguir está o processo padrão para uma compra do Apple Pay com DEUNA:
- Obtenha os métodos de pagamento
- Inicialize o Apple Pay Web SDK
- Compre com Apple Pay
1. Obtenha os métodos de pagamento#
Recupere o ID da credencial do Apple Pay e os parâmetros de configuração do SDK.
→ Consulte a referência da API Obter métodos de pagamento
Resposta
{
"data": [
{
"allow_installments_plan": true,
"credentials": {
"external_merchant_id": "merchant.test.io.deuna.pay"
},
"enabled": true,
"extra_params": {
"allowed_auth_methods": [
"supports3DS"
],
"allowed_card_networks": [
"visa",
"masterCard",
"amex"
],
"merchant_name": "Test DEUNA"
},
"id": "ef2319fe-f88d-4d8d-b4d1-e4fa08f18651",
"method_type": "card_wallet",
"payment_provider": "apple_pay",
"processor_name": "apple_pay"
}
]2. Inicialize o Apple Pay Web SDK#
Consulte o Documentação do Apple Pay Web SDK para a referência completa.
Importe o SDK JS do Apple Pay
Adicione o seguinte script à sua página:
<script src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js" crossorigin=""></script><script src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js" crossorigin=""></script>Exemplo completo de integração
// 1. Check availability
if (!window.ApplePaySession || !ApplePaySession.canMakePayments()) {
// Apple Pay not available — hide the button or show a fallback
}
// 2. Initialize the session on button click (must be inside a user gesture)
// Use the values returned by the Get Payment Methods endpoint
const request = {
countryCode: 'MX',
currencyCode: 'MXN',
supportedNetworks: ['visa', 'masterCard', 'amex', 'discover'], // from extra_params.allowed_card_networks
merchantCapabilities: ['supports3DS'], // from extra_params.allowed_auth_methods
total: { label: 'Your Store Name', amount: '1.00', type: 'final' },
};
const session = new ApplePaySession(3, request);
// 3. Validate the merchant
// The credential-id comes from the `id` field in the Get Payment Methods response
session.onvalidatemerchant = async (event) => {
const response = await fetch(
'https://api.{env}.deuna.io/wallet/credentials/{credential-id}/payment-session',
{
method: 'POST',
headers: {
'X-Merchant-Id': '{merchant-id}',
'X-Store-Code': '{store-code}',
'Content-Type': 'application/json',
},
body: JSON.stringify({
validation_url: event.validationURL,
domain: '{your-domain}',
}),
}
);
const { data } = await response.json();
session.completeMerchantValidation(data);
};
// 4. Handle payment authorization
// Once the customer authorizes the payment, send the token to DEUNA
// Use applePayToken in step 3 — Create Card or Purchase V2
session.onpaymentauthorized = (event) => {
const applePayToken = event.payment;
session.completePayment(ApplePaySession.STATUS_SUCCESS);
};
session.begin();3. Compre com Apple Pay#
Assim que o cliente autorizar o pagamento em seu dispositivo Apple, o onpaymentauthorized evento é acionado e entrega um token de cartão criptografado via event.payment. Este token deve ser enviado tal como está, sem qualquer modificação, para a DEUNA.
3.1 Criar cartão
O token de event.payment é enviado para o endpoint Create Card, que retorna um card_id que pode ser reaproveitado na compra.
→ Consulte a referência da API Criar Cartão
{
"apple_pay": {
"paymentData": {
"token": {
"transactionIdentifier": "7a94479858348...",
"paymentMethod": {
"type": "debit",
"displayName": "Visa 7553",
"network": "Visa"
},
"paymentData": {
"data": "EOeLQTsv8X7f...",
"header": {
"publicKeyHash": "MpXcCgm...",
"ephemeralPublicKey": "MFkwEwYH...",
"transactionId": "7a94479858348..."
},
"version": "EC_v1"
}
}
}
},
"credential_source": "apple_pay"
}3.2 Purchase with Card ID
Use esta opção quando o cartão já tiver sido tokenizado via Criar Cartão. Esta é uma solicitação de compra padrão V2 usando o card_id retornado pelo endpoint Create Card – nenhum token Apple Pay é necessário.
→ Consulte a referência da API de compra V2
{
"order_token": "{order-token}",
"order_type": "DEUNA_CHECKOUT",
"payer_info": {
"email": "customer@example.com",
"card_holder_dni": "12345678"
},
"payment_source": {
"method_type": "credit_card",
"card_info": {
"card_id": "{deuna-card-id}"
}
}
}3.3 Compra Direta
Isto é para os casos em que o cartão não é tokenizado. O token de event.payment é enviado diretamente na solicitação de compra.
→ Consulte a referência da API de compra V2
{
"order_token": "{{order-token}}",
"order_type": "DEUNA_CHECKOUT",
"payer_info": {
"email": "{{random_user}}@testuser.com",
"card_holder_dni": "12345678"
},
"payment_source": {
"method_type": "credit_card",
"card_info": {
"credential_source": "apple_pay",
"credential_source_config": {
"type": "apple_pay",
"values": {
"system": "EC_v1",
"merchant_transaction_id": "6bfbf33f787b7932d5d0....",
"encrypted_data": "Fk11fwjWL3uFZlBwAw83G0xRt8....",
"encryption_header": {
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQEx...",
"public_key_hash": "EB8/SypLvJCISa2d4sQzV/Zw...",
"ephemeral_public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj..."
}
}
}
}
},
"anti_fraud_info": {
"device": {
"id": "eyJPUEVOUEFZIjoiIiwiTUVSQ0FET1BBzAzLTk2NjRkYzE3MWQzYiJ9..."
}
}
}Resposta
{
"order_type": "DEUNA_CHECKOUT",
"order_token": "4598f493-de86-4fe0-b9fd-c4c6c9847e39",
"order": {
"order_id": "DEUNA_CHECKOUT_b6a5c0b6-3df9-4b3b-b778-7086c190062b",
"currency": "MXN",
"total_amount": 10000,
"display_total_amount": "MXN 100,00",
"status": "succeeded",
"payment": {
"data": {
"status": "processed"
}
}
}
}