choco-one-click-payment 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,57 +16,97 @@ ESM:
16
16
  import ChocoOneClickWidget from 'choco-one-click-payment';
17
17
 
18
18
  const widget = new ChocoOneClickWidget({
19
+ clientId: '12345678',
19
20
  trackId: 'your-track-id',
20
- clientId: '123456',
21
21
  terminalId: 1234,
22
- merchantOrderId: '123456',
23
- amount: 500,
22
+ amount: 10000,
24
23
  environment: 'stage',
25
24
  onSuccess: (data) => console.log('Success', data),
26
25
  onError: (error) => console.error('Error', error),
27
- onCancel: () => console.log('Cancelled')
26
+ onCancel: () => console.log('Cancelled'),
27
+ onConfirmPay: () => console.log('payment button was pressed')
28
28
  });
29
29
 
30
30
  await widget.init();
31
31
  ```
32
32
 
33
+ Инициализация без `trackId` (способ оплаты будет заблокирован до вызова `updateTrackId`):
34
+
35
+ ```javascript
36
+ const widget = new ChocoOneClickWidget({
37
+ clientId: '12345678',
38
+ terminalId: 1234,
39
+ amount: 10000,
40
+ environment: 'stage',
41
+ onSuccess: (data) => console.log('Success', data),
42
+ onError: (error) => console.error('Error', error),
43
+ });
44
+
45
+ await widget.init();
46
+
47
+ // Когда trackId станет известен
48
+ await widget.updateTrackId('your-track-id');
49
+ ```
50
+
33
51
  CommonJS:
34
52
 
35
53
  ```javascript
36
- const ChocoOneClickWidget = require('choco-one-click-widget');
54
+ const ChocoOneClickWidget = require('choco-one-click-payment');
37
55
  ```
38
56
 
39
- ## API (Параметры)
40
-
41
- - `client_id` - client_id веб-оплаты (обязательно)
42
- - `trackId` - track_id (обязательно)
43
- - `terminalId` - ID терминала (обязательно)
44
- - `merchantOrderId` - ID заказа (обязательно)
45
- - `amount` - Сумма в тенге (обязательно)
46
- - `currency` - валюта (по умолчанию KZT) (обязательно)
47
- - `environment` - production или stage (обязательно)
48
- - `backlink` - URL для возврата (опционально)
49
- - `locale` - ru, en, kk (по умолчанию ru, опционально)
50
- - `preorderId` - preorder_id заказа (опционально)
51
- - `color` - цвет background-а элементов (по умолчанию #2F2F2F, опционально)
52
- - `onlyKaspiAvailable` - отключает все способы оплат и оставляет только Kaspi (опционально)
53
- - `disableKaspi` - отключает оплату по kaspi (опционально)
54
- - `bonuses: { amount: number, percent: number }` - для ЗПЛ (опционально)
57
+ ## Поведение init()
58
+
59
+ - **clientId** обязателен. Без него вызывается `onError` и `init()` возвращает `false`.
60
+ - Запрос на контекст оплаты (context) **не отправляется**, если нет ни `trackId`, ни `accessToken` (из cookie). В этом случае показывается виджет с заблокированным выбором способа оплаты; кнопка «Оплатить» активна.
61
+ - Если есть **trackId** или **accessToken** — запрашиваются токены (при необходимости) и context, подключается WebSocket, отображается полный виджет.
62
+
63
+ ## Параметры конфигурации
64
+
65
+ | Параметр | Тип | Обязательный | Описание |
66
+ |----------|-----|--------------|----------|
67
+ | `clientId` | string | да | OAuth2 client_id приложения |
68
+ | `trackId` | string | нет | Идентификатор для получения access token |
69
+ | `terminalId` | number | да | ID терминала Choco |
70
+ | `amount` | number | да | Сумма в тиынах (1₸ = 100 тиынов) |
71
+ | `merchantOrderId` | string | нет | Уникальный ID заказа в вашей системе |
72
+ | `currency` | string | нет | Код валюты (по умолчанию KZT) |
73
+ | `environment` | 'production' \| 'stage' | нет | Окружение API (по умолчанию production) |
74
+ | `backlink` | string | нет | URL для возврата после оплаты (Kaspi Pay, 3DS) |
75
+ | `locale` | string | нет | Язык: ru, en, kk (по умолчанию ru) |
76
+ | `preorderId` | number | нет | Preorder ID |
77
+ | `color` | string | нет | Акцентный цвет (по умолчанию #2F2F2F) |
78
+ | `onlyKaspiAvailable` | boolean | нет | Только Kaspi в списке способов оплаты |
79
+ | `disableKaspi` | boolean | нет | Скрыть Kaspi среди способов оплаты |
80
+ | `bonuses` | { amount: number, percent: number } | нет | Бонусы для ЗПЛ |
81
+
82
+ ### Callbacks
83
+
84
+ | Параметр | Описание |
85
+ |----------|----------|
86
+ | `onSuccess` | Вызывается при успешной оплате |
87
+ | `onError` | Вызывается при ошибке |
88
+ | `onCancel` | Вызывается при отмене/закрытии |
89
+ | `onConfirmPay` | Callback перед оплатой; для подтверждения вызовите `widget.pay()` |
90
+ | `onAppliedBonus` | Вызывается при включении/выключении бонусов |
55
91
 
56
92
  ## Методы
57
93
 
58
- - `onSuccess` - вызывается после успешной оплаты (опционально)
59
- - `onError` - вызывается в случае ошибки оплаты, резолвит текст ошибки (опционально)
60
- - `onCancel` - вызывается при timeout (опционально)
61
- - `onConfirmPay` - callback перед оплатой; должен вызвать `widget.pay()` для подтверждения
62
- - `onAppliedBonus` - вызывается при включении/выключении бонусов
63
- - `updateAmount(amount)` - обновляет сумму оплаты и текст кнопки
64
- - `updateLocale(locale)` - обновляет язык интерфейса
65
- - `setLoading(boolean)` - включает/выключает loading-состояние
66
- - `setDisabled(boolean)` - включает/выключает блокировку интеракций
67
- - `setPreorderId(preorderId)` - обновляет `preorderId` во время жизни виджета
68
- - `setMerchantOrderId(merchantOrderId)` - обновляет `merchantOrderId` во время жизни виджета
69
- - `pay()` - подтверждает оплату и запускает создание заказа
94
+ | Метод | Описание |
95
+ |-------|----------|
96
+ | `init()` | Инициализация виджета. Возвращает `Promise<boolean>`. |
97
+ | `destroy()` | Уничтожает виджет (WebSocket, DOM). |
98
+ | `close()` | Закрывает виджет и вызывает `onCancel`. |
99
+ | `openPaymentSheet()` | Открывает bottom sheet выбора способа оплаты. |
100
+ | `closePaymentSheet()` | Закрывает bottom sheet. |
101
+ | `updateAmount(amount)` | Обновляет сумму (в тиынах) и текст кнопки. |
102
+ | `updateLocale(locale)` | Меняет язык интерфейса. |
103
+ | `updateTrackId(trackId)` | Обновляет trackId, запрашивает токены и context, перерисовывает виджет. Возвращает `Promise<boolean>`. |
104
+ | `setLoading(boolean)` | Включает/выключает состояние загрузки. |
105
+ | `setDisabled(boolean)` | Блокирует/разблокирует интеракции. |
106
+ | `setPreorderId(preorderId)` | Обновляет preorderId в рантайме. |
107
+ | `setMerchantOrderId(merchantOrderId)` | Обновляет merchantOrderId в рантайме. |
108
+ | `onConfirmPay(callback)` | Регистрирует callback подтверждения оплаты. |
109
+ | `pay()` | Подтверждает оплату и запускает создание заказа (после onConfirmPay). |
70
110
 
71
111
  ## Сборка пакета (для разработчиков)
72
112
 
@@ -76,6 +116,7 @@ npm run build
76
116
  ```
77
117
 
78
118
  Сборка генерирует:
79
- - `index.js` (UMD/CJS entry)
80
- - `index.esm.js` (ESM entry)
119
+
120
+ - `index.js` (UMD/CJS)
121
+ - `index.esm.js` (ESM)
81
122
  - `index.d.ts` (типы TypeScript)
package/index.d.ts CHANGED
@@ -10,9 +10,9 @@ export interface ChocoOneClickConfig {
10
10
  preorderId?: number;
11
11
  /**
12
12
  * TrackId для авторизации. При init() по нему получается access token.
13
- * @required
13
+ * @optional
14
14
  */
15
- trackId: string;
15
+ trackId?: string;
16
16
 
17
17
  /**
18
18
  * OAuth2 client_id — идентификатор приложения. Требуется бэкендом при
@@ -234,8 +234,8 @@ export default class ChocoOneClickWidget {
234
234
  constructor(config: ChocoOneClickConfig);
235
235
 
236
236
  /**
237
- * Инициализирует виджет: загружает контекст оплаты,
238
- * подключается к WebSocket и отображает UI
237
+ * Инициализирует виджет: загружает контекст оплаты (если передан trackId),
238
+ * подключается к WebSocket и отображает UI. clientId обязателен.
239
239
  * @returns Promise<boolean> - true при успешной инициализации
240
240
  */
241
241
  init(): Promise<boolean>;
@@ -290,6 +290,12 @@ export default class ChocoOneClickWidget {
290
290
  */
291
291
  setMerchantOrderId(merchantOrderId: string | number): Promise<void>;
292
292
 
293
+ /**
294
+ * Обновляет trackId в рантайме, запрашивает токены и подтягивает context
295
+ * @returns Promise<boolean> — true при успехе
296
+ */
297
+ updateTrackId(trackId: string): Promise<boolean>;
298
+
293
299
  /**
294
300
  * Регистрирует callback на подтверждение оплаты
295
301
  */