--- title: Web SDK --- # Web SDK Web SDK menyokong semua pelayar moden dan menyediakan pelbagai kaedah integrasi. ::: tip Lihat ia berfungsi dalam 30 saat [demo-v1.captcha.la](https://demo-v1.captcha.la) — HTML + PHP tulen, lesen MIT, view-source pada setiap halaman. - [popup.html](https://demo-v1.captcha.la/popup.html) — mod popup - [float.html](https://demo-v1.captcha.la/float.html) — widget terapung - [bind.html](https://demo-v1.captcha.la/bind.html) — ikat pada butang - [inline.html](https://demo-v1.captcha.la/inline.html) — benam dalam baris - [server-token.html](https://demo-v1.captcha.la/server-token.html) — token diterbitkan pelayan (anti-replay) ::: ## Mula pantas ```html ``` ## Pemasangan ### CDN ```html ``` ### NPM ```bash npm install captchala # or framework wrappers npm install @captcha-la/vue npm install @captcha-la/react ``` ```js import Captchala from 'captchala'; import 'captchala/dist/captchala.css'; ``` ## Mod ### Mod Popup ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'popup', action: 'login' }) .bindTo('#login-btn') .onSuccess(res => sendToBackend(res.token)); ``` ### Mod Float ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'float', action: 'browse' }) .appendTo('#captcha-container') .onSuccess(res => sendToBackend(res.token)); ``` ### Mod Bind ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'bind', action: 'login' }) .bindTo('#submit-button') .onSuccess(res => submitForm(res.token)); // fires only after challenge passes ``` ### Mod Benam ```js Captchala.init({ appKey: 'YOUR_APP_KEY', product: 'embed', action: 'register' }) .appendTo('#captcha-container') .onSuccess(res => sendToBackend(res.token)); ``` ## Pilihan biasa | Parameter | Jenis | Lalai | Penerangan | | --- | --- | --- | --- | | `appKey` | string | — | App Key (Diperlukan) | | `product` | string | `popup` | Mod Paparan: popup | float | embed | bind | | `action` | string | `default` | Senario Perniagaan | | `lang` | string | `en` | Bahasa yang disokong: zh-CN / zh-TW / en / ja / ko / ms / vi / id | | `serverToken` | string | — | Token sekali guna (sct_xxx) yang dikeluarkan oleh pelayan anda. Sangat disyorkan dalam persekitaran pengeluaran | | `onServerTokenExpired` | `() => Promise` | — | Dipanggil apabila serverToken tamat tempoh; pulangkan token baharu supaya SDK boleh meneruskan pengesahan | | `enableVoice` | boolean | `true` | Sama ada memaparkan pilihan pengesahan audio (sokongan kebolehcapaian untuk pengguna cacat penglihatan) | ## Pengesahan sebelah pelayan After `onSuccess`, send `res.token` (prefix `pt_`) to your own backend, then validate it server-side: ```bash POST https://apiv1.captcha.la/v1/validate X-App-Key: YOUR_APP_KEY X-App-Secret: YOUR_APP_SECRET Content-Type: application/json { "pass_token": "" } ``` Lihat [Rujukan API](./api-reference) untuk endpoint pengesahan penuh.