Оплата в мобільному та desktop-додатку
Секретний ключ зберігайте тільки на своєму сервері.
Не додавайте його в Android, iOS, Windows або JavaScript-код додатка.
Схема підключення
- Додаток надсилає вашому backend номер замовлення та суму.
- Backend створює рахунок через
POST /api/v2/invoices/createз HMAC-підписом. - Backend повертає клієнту
integration.webview_urlабоpayment_url. - Для оплати всередині додатка відкрийте
webview_urlу системному WebView. - Після підтвердження AIFO відкриє налаштований App/Universal Link та додасть
invoice,orderReferenceіstatus=success. - Остаточний результат підтверджуйте 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.