Integración de SDK

Esta guía proporciona un proceso completo para integrar Apple Pay con el SDK de Yuno, tanto para pagos únicos como recurrentes. El SDK simplifica la integración de Apple Pay gestionando eltoken pago y proporcionando seguridad integrada.

📘

Configuración requerida

Antes de implementar los pagos con Apple Pay, asegúrate de haber completado los requisitos previos.

Visión general de Apple Pay

  1. El cliente inicia el pago en su dispositivo iOS
  2. Reciba payment_token a través del SDK de Apple
  3. Crear una sesión de pago con Yuno
  4. Yuno procesa con tu(s) proveedor(es) configurado(s) y devuelve una respuesta
  5. Monitoriza el estado de la respuesta mediante webhooks

Añadir la capacidad de Apple Pay

Para añadir la capacidad de Apple Pay a tu aplicación iOS:

  1. En Xcode, selecciona tu proyecto en el navegador
  2. Selecciona el objetivo de tu aplicación
  3. Vaya a la pestaña Firma y capacidades
  4. Haz clic en + Capacidad y busca "Apple Pay".
  5. Añadir la capacidad de Apple Pay
  6. Configura sus ID de comerciante en la sección Apple Pay
⚠️

Asegúrate de que tu ID de comerciante de Apple Pay coincide con el configurado en tus conexiones de proveedor de Yuno Dashboard.

Pagos únicos con SDK

Los pagos únicos de Apple Pay mediante el SDK de Yuno proporcionan una experiencia de integración optimizada para transacciones inmediatas.

Crear sesión de pago

Utilice el endpoint crear sesión de pago para crear una sesión de pago para transacciones únicas de Apple Pay:

{
  "country": "US",
  "customer_id": "070a34cb-4649-4a4e-b231-065a53060379",
  "merchant_order_id": "order-123",
  "payment_description": "Apple Pay one-time payment",
  "amount": {
    "currency": "USD",
    "value": 100
  }
}

Tramitar el pago

El SDK gestiona el flujo de Apple Pay automáticamente. Cuando el cliente completa la autorización de Apple Pay, el pago se procesa inmediatamente.

Pagos periódicos con SDK

El SDK agiliza los pagos recurrentes gestionando tanto las transacciones iniciadas por el cliente (CIT) como las iniciadas por el vendedor (MIT), a la vez que maneja de forma seguratokens pago .

Transacción iniciada por el cliente (CIT)

La CIT es la transacción inicial en la que el cliente autoriza pagos recurrentes, como cuando se suscribe a un servicio mensual. Esta transacción requiere la interacción del cliente y genera un token para futuras transacciones MIT.

Ejemplo pedido CIT

{
  "account_id": "62fa3145-1408-4044-a599-caa0c2159782",
  "amount": {
    "currency": "USD",
    "value": 2000
  },
  "checkout": {
    "session": "0793c7a5-79c6-40d6-aa5f-13e4e9bdf169"
  },
  "payment_method": {
    "vault_on_success": true,
    "detail": {
      "wallet": {
        "payment_token": "{\n  \"paymentMethod\": {\n    \"type\": \"credit\",\n    \"displayName\": \"Visa 3748\",\n    \"network\": \"Visa\"\n  },\n  \"paymentData\": {\n    \"data\": \"B5NSQI0TdXuLwqadBCL0yOwtik/rJx7v41xxE8rNSlFBTHR2W88iRck7a6bH9Kx/bBFsk2ZyinIEl2aXusHp22a0pSmuCUoPgbkFc1/D3PRAoWITfZkalBeuzMhHJGhhCe2wqOgMmjS2w97nN9vifb1cMrS3kOqpPPMihHVvhLYbwtNhh8lfeTOyL+RBXbdFScVTFCB1eFQ4znUFV79SHVK/SRjLxLawO1HGIO0VIUTj8uVgG4MmBrfQhDBD/P9a4lWypiNoyURHm7ubgcOEelbVDGlKSNDmYFD10i554b+7z8GXBtWdQc1zhWKcGOn8RsOYtxxdqzHEtJzcFsf92/rEhfpEThXjsLLMTmovGyQS30qM/qO2YgqduEID7IS+xOH/FXpplT5Yqur7/+FgEwcv2lGsa0K6kNMEUn1xSWc=\",\n    \"signature\": \"MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgEwgAYJKoZIhvcNAQcBAACggDCCA+MwggOIoAMCAQICCBZjTIsOMFcXMAoGCCqGSM49BAMCMHoxLjAsBgNVBAMMJUFwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjQwNDI5MTc0NzI3WhcNMjkwNDI4MTc0NzI2WjBfMSUwIwYDVQQDDBxlY2Mtc21wLWJyb2tlci1zaWduX1VDNC1QUk9EMRQwEgYDVQQLDAlpT1MgU3lzdGVtczETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATCFXft69bHsiGPaN1wkKEhjcewvW8sKD2EYJXZSvSlQRuDQg7YEfNAfoMzHxxUw/frMiDWutXU7/SSiYk+fA8To4ICE TCCA gwwggJ1oAMCAQICCEltL786mNqXMAoGCCqGSM49BAMCMGcxGzAZBgNVBAMMEkFwcGxlIFJvb3QgQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE0MDUwNjIzNDYzMFoXDTI5MDUwNjIzNDYzMFowejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8BcRhBnXZIXVGl4lgQd26ICi7957rk3gjfxLk+EzVtVmWzWuItCXdg0iTnu6CP12F86Iy3a7ZnC+yOgphP9URaOB9zCB9DBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDQtYXBwbGVyb290Y2FnMzAdBgNVHQ4EFgQUI/JJxE+T5O8n5sT2KGw/orv9LkswDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS7sN6hWDOImqSKmd6+veuv2sskqzA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLmFwcGxlLmNvbS9hcHBsZXJvb3RjYWczLmNybDAOBgNVHQ8BAf8EBAMCAQYwEAYKKoZIhvdjZAYCDgQCBQAwCgYIKoZIzj0EAwIDZwAwZAIwOs9yg1EWmbGG+zXDVspiv/QX7dkPdU2ijr7xnIFeQreJ+Jj3m1mfmNVBDY+d6cL+AjAyLdVEIbCjBXdsXfM4O5Bn/Rd8LCFtlk/GcmmCEm9U+Hp9G5nLmwmJIWEGmQ8Jkh0AADGCAYgwggGEAgEBMIGGMHoxLjAsBgNVBAMMJUFwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMw\",\n    \"header\": {\n      \"publicKeyHash\": \"YK8kdoBXLGqBQKBtCZOl0DQTUHOWidRCxgOgf/1gBMM=\",\n      \"ephemeralPublicKey\": \"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVv32VVJYlg+E0zMsthvBaldJcH45NUWhVckme/CQYFtHf60FEdFtzwabOEMY3u1De+6e+IuBv53OxmWx+1w2w==\",\n      \"transactionId\": \"87a03c4cc1b242a25d74257d4bc990a6473b9866392850e584a9f680dcdf3d0f\"\n    },\n    \"version\": \"EC_v1\"\n  }\n}",
        "stored_credentials": {
          "reason": "SUBSCRIPTION",
          "usage": "FIRST"
        }
      }
    },
    "type": "APPLE_PAY"
  },
  "customer_payer": {
    "id": "070a34cb-4649-4a4e-b231-065a53060379",
    "nationality": "CO",
    "browser_info": {
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15",
      "accept_header": "application/json",
      "accept_content": "*/*",
      "accept_browser": "*/*",
      "color_depth": "5",
      "screen_height": "8",
      "screen_width": "8",
      "javascript_enabled": true,
      "java_enabled": false,
      "browser_time_difference": "300",
      "language": "en",
      "platform": "WEB"
    }
  },
  "subscription": {
    "id": "d67a4295-7bb3-4183-99ce-9f5d26d92709",
    "billing_date": {
      "type": "fixed_day",
      "day": 18
    }
  },
  "merchant_order_id": "merchant-order-123",
  "country": "CO",
  "description": "Apple Pay recurring setup",
  "workflow": "SDK_CHECKOUT"
}

Parámetros clave para el CIT

  • vault_on_success: true: Este parámetro indica que se trata de una configuración de pago recurrente y genera el token para futuras transacciones MIT
  • stored_credentials.usage: "FIRST": Indica que se trata de la transacción inicial de una serie periódica
  • subscription: Objeto necesario que contiene los datos de suscripción para la recurrencia de Apple Pay

Transacción iniciada por el comerciante (MIT)

Las transacciones MIT se procesan automáticamente para los siguientes ciclos de facturación utilizando el token generado durante el CIT.

Ejemplo MIT pedido

{
  "account_id": "account-id",
  "amount": {
    "currency": "USD",
    "value": 100
  },
  "payment_method": {
    "vaulted_token": "98c16e23-ebdd-4d0f-85bd-e0ba7d2fedf6",
    "detail": {
      "card": {
        "stored_credentials": {
          "reason": "SUBSCRIPTION",
          "usage": "USED"
        }
      }
    },
    "type": "APPLE_PAY"
  },
  "customer_payer": {
    "id": "customer-id"
  },
  "merchant_order_id": "recurring-order-456",
  "country": "US",
  "description": "Apple Pay recurring payment",
  "workflow": "SDK_CHECKOUT"
}

Parámetros clave para el MIT

  • token: Eltoken pago generado durante el CIT
  • stored_credentials.usage: "USED": Indica que se trata de una transacción posterior en una serie periódica
  • No payment_token required: Utiliza en su lugar el token almacenado

Supervise el estado pago mediante webhooks para gestionar casos extremos y proporcionar notificaciones a los clientes.

URL de gestión de suscripciones

Para los pagos recurrentes del SDK, debes proporcionar una URL de gestión de la suscripción donde los clientes puedan gestionarla y cancelarla. Inclúyela en tus comunicaciones a los clientes.

Documentación relacionada