Skip to content

Karta bog'lash (Card Bind) ​

Hamkor mobil ilovasi foydalanuvchilarining to'lov kartasini Paylov orqali bog'lash oqimi, backend integratsiyasi va webhook qabul qilish.

Nega bunday qilinadi

Hamkorning PCI DSS sertifikati bo'lmagani uchun karta raqami (PAN) hech qachon hamkorning backend'iga yoki frontend kodiga tushmaydi. Karta raqami faqat Paylov domenidagi himoyalangan sahifada (webview) kiritiladi. Hamkor faqat tayyor cardId va bog'lash natijasini oladi.

Oqim ​

  1. Hamkor backend'i Paylov'dan bir martalik bog'lash havolasini (bindUrl) so'raydi — Bog'lash havolasini yaratish.
  2. Hamkor ilovasi shu havolani webview'da ochadi. Foydalanuvchi karta raqamini kiritadi va SMS kodini tasdiqlaydi — karta Paylov tomonida faollashadi.
  3. Paylov hamkor backend'iga karta ID va ma'lumotlari bilan webhook yuboradi — Webhook.
  4. (Ixtiyoriy) Webhook yetib bormasa, hamkor backend'i natijani o'zi tekshiradi — Holatni tekshirish.

Webview sahifasining ichki ishlashi (dizayn, forma, SMS kiritish) Paylov frontend jamoasi tomonidan tayyorlanadi — hamkor tomonidan hech qanday qo'shimcha ish talab qilinmaydi.

Autentifikatsiya ​

Backend so'rovlari (havola yaratish va holatni tekshirish) mavjud Paylov Subscribe API bilan bir xil merchant Bearer tokenidan foydalanadi:

http
Authorization: Bearer < ACCESS_TOKEN >

Webview hech qanday token talab qilmaydi — u faqat bir martalik token orqali ishlaydi. Bu token havola yaratishda olinadi va bindUrl ichiga yozilgan bo'ladi.

Webview'ni ochish ​

Hamkor faqat olingan bindUrlni odatiy webview komponentida ochadi.

Android (Kotlin) — misol

kotlin
val webView = WebView(context)
webView.settings.javaScriptEnabled = true
webView.loadUrl(bindUrl) // bindUrl — havola yaratish javobidan olingan

iOS (Swift, WKWebView) — misol

swift
let webView = WKWebView(frame: view.bounds)
webView.load(URLRequest(url: URL(string: bindUrl)!))

React Native — misol

jsx
import { WebView } from 'react-native-webview';

<WebView source={{ uri: bindUrl }} />

Foydalanuvchi sahifada karta raqamini kiritadi, SMS kodini tasdiqlaydi. Jarayon tugagach, sahifa returnUrlga qaytishi mumkin (agar havola yaratishda berilgan bo'lsa) — bu holda hamkor ilovasi webview'ni yopishi kerak. Natijaning asosiy va ishonchli manbai esa webhook hisoblanadi, webview'ning o'zi emas.

Bog'langandan keyin ​

cardId qo'lga tushgach, hamkor uni mavjud Paylov Subscribe API bilan odatiy usulda ishlatadi — bu qismda hech narsa o'zgarmaydi:

EndpointVazifasi
GET /merchant/userCard/getCard/{cardId}/Karta ma'lumoti va balansini olish
GET /merchant/userCard/getAllUserCards/Foydalanuvchining barcha kartalari
DELETE /merchant/userCard/deleteUserCard/Kartani o'chirish
POST /merchant/receipts/pay/ va h.k.cardId bilan to'lov qilish

Xato kodlari ​

KodHTTPMa'nosi
permission_denied400Merchant Subscribe API'ga ulanmagan yoki token noto'g'ri
link_expired400Havola muddati o'tgan (taxminan 20 daqiqa)
link_already_used400Bu havola bilan karta allaqachon bog'langan

Xavfsizlik — qisqacha ​

  • Karta raqami (PAN) hamkor tizimining hech bir qismiga (frontend, backend, log) tushmaydi.
  • Webview'dagi havola bir martalik va vaqtinchalik — qayta ishlatib bo'lmaydi.
  • Webhook Basic Auth bilan himoyalangan — login/parol faqat hamkor va Paylov o'rtasida ma'lum.
  • Barcha so'rovlar HTTPS orqali amalga oshirilishi shart.