Оплата в мобільному та desktop-додатку

Секретний ключ зберігайте тільки на своєму сервері. Не додавайте його в Android, iOS, Windows або JavaScript-код додатка.

Схема підключення

  1. Додаток надсилає вашому backend номер замовлення та суму.
  2. Backend створює рахунок через POST /api/v2/invoices/create з HMAC-підписом.
  3. Backend повертає клієнту integration.webview_url або payment_url.
  4. Для оплати всередині додатка відкрийте webview_url у системному WebView.
  5. Після підтвердження AIFO відкриє налаштований App/Universal Link та додасть invoice, orderReference і status=success.
  6. Остаточний результат підтверджуйте webhook-повідомленням або серверним запитом GET /api/v2/invoices/status.

Відповідь API

{
  "status": "success",
  "data": {
    "invoice_id": 123,
    "payment_url": "https://aifo.pro/pay?...",
    "integration": {
      "mode": "application",
      "embedded_available": true,
      "webview_url": "https://aifo.pro/pay?...&embed=1&app=1",
      "return_url": "myapp://payment/success",
      "fail_url": "myapp://payment/fail",
      "fallback_url": "https://example.com/download",
      "status_url": "https://aifo.pro/api/v2/invoices/status"
    }
  }
}

Android

Рекомендовано використовувати HTTPS App Links. Для власної URI-схеми додайте intent filter:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="myapp" android:host="payment" />
</intent-filter>

У WebView дозвольте HTTPS і JavaScript та перехоплюйте не-HTTP схеми через shouldOverrideUrlLoading, відкриваючи їх системним Intent.

iOS та desktop

iOS: Використовуйте Universal Links або зареєструйте URL Type у Info.plist. У WKWebView обробляйте navigation action для зовнішніх банківських схем.

Windows/macOS/Linux: Зареєструйте власний протокол, наприклад myapp://, або використовуйте HTTPS Universal Link. Для Electron/Tauri відкривайте webview_url у вбудованому вікні та передавайте зовнішні схеми ОС.

Deep link повертає користувача, але не є доказом оплати. Баланс і замовлення змінюйте тільки після webhook або статусу paid із серверного API.