@purpleschool/rugpt-lib-common 0.0.101 → 0.0.103
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/build/errors/errors.d.ts +299 -0
- package/build/errors/errors.js +300 -0
- package/package.json +1 -1
package/build/errors/errors.d.ts
CHANGED
|
@@ -1,4 +1,278 @@
|
|
|
1
1
|
export declare const ERRORS: {
|
|
2
|
+
/** Ошибки каталога и проверки App Store; успешная проверка подписи ещё не означает начисление. */
|
|
3
|
+
APPLE_IAP: {
|
|
4
|
+
/** Персональный запрет новой тестовой оплаты; не отказывает в replay уже выданной покупки. */
|
|
5
|
+
SANDBOX_ACCOUNT_NOT_ALLOWED: {
|
|
6
|
+
code: string;
|
|
7
|
+
message: string;
|
|
8
|
+
httpCode: number;
|
|
9
|
+
};
|
|
10
|
+
SUBSCRIPTION_REFUND_NOT_APPLICABLE: {
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
httpCode: number;
|
|
14
|
+
};
|
|
15
|
+
REFUND_SUBSCRIPTION_ERROR: {
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
httpCode: number;
|
|
19
|
+
};
|
|
20
|
+
/** Полный refund применяется только к существующему личному пакету после сверки Apple. */
|
|
21
|
+
PRODUCT_REFUND_NOT_APPLICABLE: {
|
|
22
|
+
code: string;
|
|
23
|
+
message: string;
|
|
24
|
+
httpCode: number;
|
|
25
|
+
};
|
|
26
|
+
REFUND_PRODUCT_ERROR: {
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
httpCode: number;
|
|
30
|
+
};
|
|
31
|
+
/** Обычное истечение требует подтверждённого завершённого периода и уже учтённой оплаты. */
|
|
32
|
+
SUBSCRIPTION_EXPIRY_NOT_APPLICABLE: {
|
|
33
|
+
code: string;
|
|
34
|
+
message: string;
|
|
35
|
+
httpCode: number;
|
|
36
|
+
};
|
|
37
|
+
EXPIRE_SUBSCRIPTION_ERROR: {
|
|
38
|
+
code: string;
|
|
39
|
+
message: string;
|
|
40
|
+
httpCode: number;
|
|
41
|
+
};
|
|
42
|
+
/** Billing retry не подтверждает новую оплату и не даёт права применять grace-доступ. */
|
|
43
|
+
BILLING_RETRY_NOT_APPLICABLE: {
|
|
44
|
+
code: string;
|
|
45
|
+
message: string;
|
|
46
|
+
httpCode: number;
|
|
47
|
+
};
|
|
48
|
+
APPLY_BILLING_RETRY_ERROR: {
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
httpCode: number;
|
|
52
|
+
};
|
|
53
|
+
/** Настройку нельзя применить без уже учтённой действующей оплаты этой Apple-цепочки. */
|
|
54
|
+
RENEWAL_STATE_NOT_APPLICABLE: {
|
|
55
|
+
code: string;
|
|
56
|
+
message: string;
|
|
57
|
+
httpCode: number;
|
|
58
|
+
};
|
|
59
|
+
SYNC_RENEWAL_STATE_ERROR: {
|
|
60
|
+
code: string;
|
|
61
|
+
message: string;
|
|
62
|
+
httpCode: number;
|
|
63
|
+
};
|
|
64
|
+
NOTIFICATION_DEFERRED: {
|
|
65
|
+
code: string;
|
|
66
|
+
message: string;
|
|
67
|
+
httpCode: number;
|
|
68
|
+
};
|
|
69
|
+
NOTIFICATION_RETRYABLE: {
|
|
70
|
+
code: string;
|
|
71
|
+
message: string;
|
|
72
|
+
httpCode: number;
|
|
73
|
+
};
|
|
74
|
+
NOTIFICATION_CONFLICT: {
|
|
75
|
+
code: string;
|
|
76
|
+
message: string;
|
|
77
|
+
httpCode: number;
|
|
78
|
+
};
|
|
79
|
+
PROCESS_NOTIFICATION_ERROR: {
|
|
80
|
+
code: string;
|
|
81
|
+
message: string;
|
|
82
|
+
httpCode: number;
|
|
83
|
+
};
|
|
84
|
+
PERSIST_NOTIFICATION_ERROR: {
|
|
85
|
+
code: string;
|
|
86
|
+
message: string;
|
|
87
|
+
httpCode: number;
|
|
88
|
+
};
|
|
89
|
+
/** Для уведомления пока нет существующего неудалённого владельца с доказанной привязкой. */
|
|
90
|
+
NOTIFICATION_OWNER_UNRESOLVED: {
|
|
91
|
+
code: string;
|
|
92
|
+
message: string;
|
|
93
|
+
httpCode: number;
|
|
94
|
+
};
|
|
95
|
+
RESOLVE_NOTIFICATION_OWNER_ERROR: {
|
|
96
|
+
code: string;
|
|
97
|
+
message: string;
|
|
98
|
+
httpCode: number;
|
|
99
|
+
};
|
|
100
|
+
/** Отказ проверки подписи/формы уведомления; неподдержанный тип сам по себе не является этой ошибкой. */
|
|
101
|
+
INVALID_NOTIFICATION: {
|
|
102
|
+
code: string;
|
|
103
|
+
message: string;
|
|
104
|
+
httpCode: number;
|
|
105
|
+
};
|
|
106
|
+
VERIFY_NOTIFICATION_ERROR: {
|
|
107
|
+
code: string;
|
|
108
|
+
message: string;
|
|
109
|
+
httpCode: number;
|
|
110
|
+
};
|
|
111
|
+
SUBSCRIPTIONS_DISABLED: {
|
|
112
|
+
code: string;
|
|
113
|
+
message: string;
|
|
114
|
+
httpCode: number;
|
|
115
|
+
};
|
|
116
|
+
/** Проверенная покупка не подходит для первой выдачи текущего оплаченного периода. */
|
|
117
|
+
SUBSCRIPTION_NOT_APPLICABLE: {
|
|
118
|
+
code: string;
|
|
119
|
+
message: string;
|
|
120
|
+
httpCode: number;
|
|
121
|
+
};
|
|
122
|
+
SUBSCRIPTION_NOT_CONFIGURED: {
|
|
123
|
+
code: string;
|
|
124
|
+
message: string;
|
|
125
|
+
httpCode: number;
|
|
126
|
+
};
|
|
127
|
+
/** Чтение состояния не включено; сам verifier может работать без Server API credentials. */
|
|
128
|
+
SERVER_API_NOT_CONFIGURED: {
|
|
129
|
+
code: string;
|
|
130
|
+
message: string;
|
|
131
|
+
httpCode: number;
|
|
132
|
+
};
|
|
133
|
+
SERVER_API_UNAUTHORIZED: {
|
|
134
|
+
code: string;
|
|
135
|
+
message: string;
|
|
136
|
+
httpCode: number;
|
|
137
|
+
};
|
|
138
|
+
/** Включает отменённый по timeout запрос, ограничения частоты и временные ошибки Apple. */
|
|
139
|
+
SERVER_API_UNAVAILABLE: {
|
|
140
|
+
code: string;
|
|
141
|
+
message: string;
|
|
142
|
+
httpCode: number;
|
|
143
|
+
};
|
|
144
|
+
SUBSCRIPTION_NOT_FOUND: {
|
|
145
|
+
code: string;
|
|
146
|
+
message: string;
|
|
147
|
+
httpCode: number;
|
|
148
|
+
};
|
|
149
|
+
INVALID_SUBSCRIPTION_STATE: {
|
|
150
|
+
code: string;
|
|
151
|
+
message: string;
|
|
152
|
+
httpCode: number;
|
|
153
|
+
};
|
|
154
|
+
GET_SUBSCRIPTION_STATE_ERROR: {
|
|
155
|
+
code: string;
|
|
156
|
+
message: string;
|
|
157
|
+
httpCode: number;
|
|
158
|
+
};
|
|
159
|
+
INVALID_TRANSACTION_HISTORY: {
|
|
160
|
+
code: string;
|
|
161
|
+
message: string;
|
|
162
|
+
httpCode: number;
|
|
163
|
+
};
|
|
164
|
+
GET_TRANSACTION_HISTORY_ERROR: {
|
|
165
|
+
code: string;
|
|
166
|
+
message: string;
|
|
167
|
+
httpCode: number;
|
|
168
|
+
};
|
|
169
|
+
RECONCILIATION_INCOMPLETE: {
|
|
170
|
+
code: string;
|
|
171
|
+
message: string;
|
|
172
|
+
httpCode: number;
|
|
173
|
+
};
|
|
174
|
+
RECONCILE_SUBSCRIPTION_ERROR: {
|
|
175
|
+
code: string;
|
|
176
|
+
message: string;
|
|
177
|
+
httpCode: number;
|
|
178
|
+
};
|
|
179
|
+
INVALID_RENEWAL_INFO: {
|
|
180
|
+
code: string;
|
|
181
|
+
message: string;
|
|
182
|
+
httpCode: number;
|
|
183
|
+
};
|
|
184
|
+
VERIFY_RENEWAL_INFO_ERROR: {
|
|
185
|
+
code: string;
|
|
186
|
+
message: string;
|
|
187
|
+
httpCode: number;
|
|
188
|
+
};
|
|
189
|
+
/** Обработка ещё не начиналась: бюджет массива исчерпан либо проверка Apple временно недоступна. */
|
|
190
|
+
TRANSACTION_NOT_PROCESSED: {
|
|
191
|
+
code: string;
|
|
192
|
+
message: string;
|
|
193
|
+
httpCode: number;
|
|
194
|
+
};
|
|
195
|
+
/** Подпись настоящая, но покупка не связана с текущим аккаунтом ruGPT. */
|
|
196
|
+
ACCOUNT_MISMATCH: {
|
|
197
|
+
code: string;
|
|
198
|
+
message: string;
|
|
199
|
+
httpCode: number;
|
|
200
|
+
};
|
|
201
|
+
/** Проверенная покупка выходит за поддержанный сценарий текущего обработчика. */
|
|
202
|
+
UNSUPPORTED_PURCHASE: {
|
|
203
|
+
code: string;
|
|
204
|
+
message: string;
|
|
205
|
+
httpCode: number;
|
|
206
|
+
};
|
|
207
|
+
REVOKED_TRANSACTION: {
|
|
208
|
+
code: string;
|
|
209
|
+
message: string;
|
|
210
|
+
httpCode: number;
|
|
211
|
+
};
|
|
212
|
+
/** ID уже сохранён, но подтверждения именно этой выдачи нет; повторно начислять опасно. */
|
|
213
|
+
TRANSACTION_CONFLICT: {
|
|
214
|
+
code: string;
|
|
215
|
+
message: string;
|
|
216
|
+
httpCode: number;
|
|
217
|
+
};
|
|
218
|
+
/** Отсутствующие данные не подменяются нулевой ценой или рублями. */
|
|
219
|
+
MISSING_PRICE: {
|
|
220
|
+
code: string;
|
|
221
|
+
message: string;
|
|
222
|
+
httpCode: number;
|
|
223
|
+
};
|
|
224
|
+
PRODUCT_NOT_CONFIGURED: {
|
|
225
|
+
code: string;
|
|
226
|
+
message: string;
|
|
227
|
+
httpCode: number;
|
|
228
|
+
};
|
|
229
|
+
APPLY_TRANSACTION_ERROR: {
|
|
230
|
+
code: string;
|
|
231
|
+
message: string;
|
|
232
|
+
httpCode: number;
|
|
233
|
+
};
|
|
234
|
+
/** Серверный verifier выключен; не является отказом Apple в оплате. */
|
|
235
|
+
VERIFICATION_NOT_CONFIGURED: {
|
|
236
|
+
code: string;
|
|
237
|
+
message: string;
|
|
238
|
+
httpCode: number;
|
|
239
|
+
};
|
|
240
|
+
/** Неверная подпись/сертификаты либо неполные или неподдерживаемые данные подписанного payload. */
|
|
241
|
+
INVALID_TRANSACTION: {
|
|
242
|
+
code: string;
|
|
243
|
+
message: string;
|
|
244
|
+
httpCode: number;
|
|
245
|
+
};
|
|
246
|
+
/** bundleId покупки не совпал с нашим приложением; это не проверка владельца ruGPT. */
|
|
247
|
+
APP_MISMATCH: {
|
|
248
|
+
code: string;
|
|
249
|
+
message: string;
|
|
250
|
+
httpCode: number;
|
|
251
|
+
};
|
|
252
|
+
/** Среда покупки не совпала с явно выбранной сервером: Sandbox или Production. */
|
|
253
|
+
ENVIRONMENT_MISMATCH: {
|
|
254
|
+
code: string;
|
|
255
|
+
message: string;
|
|
256
|
+
httpCode: number;
|
|
257
|
+
};
|
|
258
|
+
/** Временный сбой проверки сертификатов; повтор допустим, неподлинность покупки не установлена. */
|
|
259
|
+
VERIFICATION_UNAVAILABLE: {
|
|
260
|
+
code: string;
|
|
261
|
+
message: string;
|
|
262
|
+
httpCode: number;
|
|
263
|
+
};
|
|
264
|
+
/** Неожиданный сбой адаптера; подробности SDK не должны попадать в ответ клиенту. */
|
|
265
|
+
VERIFY_TRANSACTION_ERROR: {
|
|
266
|
+
code: string;
|
|
267
|
+
message: string;
|
|
268
|
+
httpCode: number;
|
|
269
|
+
};
|
|
270
|
+
GET_PRODUCTS_ERROR: {
|
|
271
|
+
code: string;
|
|
272
|
+
message: string;
|
|
273
|
+
httpCode: number;
|
|
274
|
+
};
|
|
275
|
+
};
|
|
2
276
|
PARTNER_CODES: {
|
|
3
277
|
readonly ISSUE_REQUEST_CONFLICT: {
|
|
4
278
|
readonly code: "issue_request_conflict";
|
|
@@ -3149,6 +3423,11 @@ export declare const ERRORS: {
|
|
|
3149
3423
|
};
|
|
3150
3424
|
};
|
|
3151
3425
|
PAYMENT: {
|
|
3426
|
+
REFUND_NOT_SUPPORTED: {
|
|
3427
|
+
code: string;
|
|
3428
|
+
message: string;
|
|
3429
|
+
httpCode: number;
|
|
3430
|
+
};
|
|
3152
3431
|
CREATE_ERROR: {
|
|
3153
3432
|
code: string;
|
|
3154
3433
|
httpCode: number;
|
|
@@ -4067,6 +4346,16 @@ export declare const ERRORS: {
|
|
|
4067
4346
|
};
|
|
4068
4347
|
};
|
|
4069
4348
|
SUBSCRIPTION: {
|
|
4349
|
+
MANAGED_BY_APPLE: {
|
|
4350
|
+
code: string;
|
|
4351
|
+
message: string;
|
|
4352
|
+
httpCode: number;
|
|
4353
|
+
};
|
|
4354
|
+
ACTIVE_APPLE_SUBSCRIPTION: {
|
|
4355
|
+
code: string;
|
|
4356
|
+
message: string;
|
|
4357
|
+
httpCode: number;
|
|
4358
|
+
};
|
|
4070
4359
|
ALREADY_HAS: {
|
|
4071
4360
|
code: string;
|
|
4072
4361
|
httpCode: number;
|
|
@@ -5087,6 +5376,16 @@ export declare const ERRORS: {
|
|
|
5087
5376
|
httpCode: number;
|
|
5088
5377
|
message: string;
|
|
5089
5378
|
};
|
|
5379
|
+
FIRST_FRAME_REQUIRED: {
|
|
5380
|
+
code: string;
|
|
5381
|
+
httpCode: number;
|
|
5382
|
+
message: string;
|
|
5383
|
+
};
|
|
5384
|
+
WEBP_NOT_SUPPORTED: {
|
|
5385
|
+
code: string;
|
|
5386
|
+
httpCode: number;
|
|
5387
|
+
message: string;
|
|
5388
|
+
};
|
|
5090
5389
|
JOB_DELETE_ERROR: {
|
|
5091
5390
|
code: string;
|
|
5092
5391
|
httpCode: number;
|
package/build/errors/errors.js
CHANGED
|
@@ -2,6 +2,281 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ERRORS = void 0;
|
|
4
4
|
exports.ERRORS = {
|
|
5
|
+
/** Ошибки каталога и проверки App Store; успешная проверка подписи ещё не означает начисление. */
|
|
6
|
+
APPLE_IAP: {
|
|
7
|
+
/** Персональный запрет новой тестовой оплаты; не отказывает в replay уже выданной покупки. */
|
|
8
|
+
SANDBOX_ACCOUNT_NOT_ALLOWED: {
|
|
9
|
+
code: "APPLE_IAP.SANDBOX_ACCOUNT_NOT_ALLOWED",
|
|
10
|
+
message: "Тестовые покупки App Store недоступны для этого аккаунта",
|
|
11
|
+
httpCode: 403,
|
|
12
|
+
},
|
|
13
|
+
SUBSCRIPTION_REFUND_NOT_APPLICABLE: {
|
|
14
|
+
code: "APPLE_IAP.SUBSCRIPTION_REFUND_NOT_APPLICABLE",
|
|
15
|
+
message: "Состояние App Store пока не позволяет применить полный возврат подписки",
|
|
16
|
+
httpCode: 409,
|
|
17
|
+
},
|
|
18
|
+
REFUND_SUBSCRIPTION_ERROR: {
|
|
19
|
+
code: "APPLE_IAP.REFUND_SUBSCRIPTION_ERROR",
|
|
20
|
+
message: "Не удалось обработать возврат подписки App Store",
|
|
21
|
+
httpCode: 500,
|
|
22
|
+
},
|
|
23
|
+
/** Полный refund применяется только к существующему личному пакету после сверки Apple. */
|
|
24
|
+
PRODUCT_REFUND_NOT_APPLICABLE: {
|
|
25
|
+
code: "APPLE_IAP.PRODUCT_REFUND_NOT_APPLICABLE",
|
|
26
|
+
message: "Состояние App Store пока не позволяет применить полный возврат пакета звёзд",
|
|
27
|
+
httpCode: 409,
|
|
28
|
+
},
|
|
29
|
+
REFUND_PRODUCT_ERROR: {
|
|
30
|
+
code: "APPLE_IAP.REFUND_PRODUCT_ERROR",
|
|
31
|
+
message: "Не удалось обработать возврат пакета звёзд App Store",
|
|
32
|
+
httpCode: 500,
|
|
33
|
+
},
|
|
34
|
+
/** Обычное истечение требует подтверждённого завершённого периода и уже учтённой оплаты. */
|
|
35
|
+
SUBSCRIPTION_EXPIRY_NOT_APPLICABLE: {
|
|
36
|
+
code: "APPLE_IAP.SUBSCRIPTION_EXPIRY_NOT_APPLICABLE",
|
|
37
|
+
message: "Состояние App Store пока не позволяет завершить учтённый период подписки",
|
|
38
|
+
httpCode: 409,
|
|
39
|
+
},
|
|
40
|
+
EXPIRE_SUBSCRIPTION_ERROR: {
|
|
41
|
+
code: "APPLE_IAP.EXPIRE_SUBSCRIPTION_ERROR",
|
|
42
|
+
message: "Не удалось завершить истёкший период подписки App Store",
|
|
43
|
+
httpCode: 500,
|
|
44
|
+
},
|
|
45
|
+
/** Billing retry не подтверждает новую оплату и не даёт права применять grace-доступ. */
|
|
46
|
+
BILLING_RETRY_NOT_APPLICABLE: {
|
|
47
|
+
code: "APPLE_IAP.BILLING_RETRY_NOT_APPLICABLE",
|
|
48
|
+
message: "Состояние App Store пока не позволяет отметить неудачное продление подписки",
|
|
49
|
+
httpCode: 409,
|
|
50
|
+
},
|
|
51
|
+
APPLY_BILLING_RETRY_ERROR: {
|
|
52
|
+
code: "APPLE_IAP.APPLY_BILLING_RETRY_ERROR",
|
|
53
|
+
message: "Не удалось обработать неудачное продление подписки App Store",
|
|
54
|
+
httpCode: 500,
|
|
55
|
+
},
|
|
56
|
+
/** Настройку нельзя применить без уже учтённой действующей оплаты этой Apple-цепочки. */
|
|
57
|
+
RENEWAL_STATE_NOT_APPLICABLE: {
|
|
58
|
+
code: "APPLE_IAP.RENEWAL_STATE_NOT_APPLICABLE",
|
|
59
|
+
message: "Состояние App Store пока не позволяет обновить автопродление учтённой подписки",
|
|
60
|
+
httpCode: 409,
|
|
61
|
+
},
|
|
62
|
+
SYNC_RENEWAL_STATE_ERROR: {
|
|
63
|
+
code: "APPLE_IAP.SYNC_RENEWAL_STATE_ERROR",
|
|
64
|
+
message: "Не удалось обновить состояние автопродления подписки App Store",
|
|
65
|
+
httpCode: 500,
|
|
66
|
+
},
|
|
67
|
+
// Webhook D2/A: незавершённая доставка не подтверждается кодом 200.
|
|
68
|
+
NOTIFICATION_DEFERRED: {
|
|
69
|
+
code: "APPLE_IAP.NOTIFICATION_DEFERRED",
|
|
70
|
+
message: "Обработка уведомления Apple отложена до выполнения необходимых условий",
|
|
71
|
+
httpCode: 503,
|
|
72
|
+
},
|
|
73
|
+
NOTIFICATION_RETRYABLE: {
|
|
74
|
+
code: "APPLE_IAP.NOTIFICATION_RETRYABLE",
|
|
75
|
+
message: "Не удалось завершить обработку уведомления Apple, повторите доставку",
|
|
76
|
+
httpCode: 503,
|
|
77
|
+
},
|
|
78
|
+
NOTIFICATION_CONFLICT: {
|
|
79
|
+
code: "APPLE_IAP.NOTIFICATION_CONFLICT",
|
|
80
|
+
message: "Данные уведомления Apple противоречат сохранённым данным покупки или владельца",
|
|
81
|
+
httpCode: 409,
|
|
82
|
+
},
|
|
83
|
+
PROCESS_NOTIFICATION_ERROR: {
|
|
84
|
+
code: "APPLE_IAP.PROCESS_NOTIFICATION_ERROR",
|
|
85
|
+
message: "Не удалось обработать уведомление Apple",
|
|
86
|
+
httpCode: 500,
|
|
87
|
+
},
|
|
88
|
+
PERSIST_NOTIFICATION_ERROR: {
|
|
89
|
+
code: "APPLE_IAP.PERSIST_NOTIFICATION_ERROR",
|
|
90
|
+
message: "Не удалось сохранить результат доставки уведомления Apple",
|
|
91
|
+
httpCode: 503,
|
|
92
|
+
},
|
|
93
|
+
/** Для уведомления пока нет существующего неудалённого владельца с доказанной привязкой. */
|
|
94
|
+
NOTIFICATION_OWNER_UNRESOLVED: {
|
|
95
|
+
code: "APPLE_IAP.NOTIFICATION_OWNER_UNRESOLVED",
|
|
96
|
+
message: "Пока не удалось определить владельца уведомления App Store",
|
|
97
|
+
httpCode: 503,
|
|
98
|
+
},
|
|
99
|
+
RESOLVE_NOTIFICATION_OWNER_ERROR: {
|
|
100
|
+
code: "APPLE_IAP.RESOLVE_NOTIFICATION_OWNER_ERROR",
|
|
101
|
+
message: "Не удалось проверить владельца уведомления App Store",
|
|
102
|
+
httpCode: 500,
|
|
103
|
+
},
|
|
104
|
+
/** Отказ проверки подписи/формы уведомления; неподдержанный тип сам по себе не является этой ошибкой. */
|
|
105
|
+
INVALID_NOTIFICATION: {
|
|
106
|
+
code: "APPLE_IAP.INVALID_NOTIFICATION",
|
|
107
|
+
message: "Не удалось подтвердить уведомление App Store",
|
|
108
|
+
httpCode: 400,
|
|
109
|
+
},
|
|
110
|
+
VERIFY_NOTIFICATION_ERROR: {
|
|
111
|
+
code: "APPLE_IAP.VERIFY_NOTIFICATION_ERROR",
|
|
112
|
+
message: "Не удалось проверить уведомление App Store",
|
|
113
|
+
httpCode: 500,
|
|
114
|
+
},
|
|
115
|
+
SUBSCRIPTIONS_DISABLED: {
|
|
116
|
+
code: "APPLE_IAP.SUBSCRIPTIONS_DISABLED",
|
|
117
|
+
message: "Выдача подписок App Store временно недоступна",
|
|
118
|
+
httpCode: 503,
|
|
119
|
+
},
|
|
120
|
+
/** Проверенная покупка не подходит для первой выдачи текущего оплаченного периода. */
|
|
121
|
+
SUBSCRIPTION_NOT_APPLICABLE: {
|
|
122
|
+
code: "APPLE_IAP.SUBSCRIPTION_NOT_APPLICABLE",
|
|
123
|
+
message: "Покупка App Store не подтверждает доступный для выдачи оплаченный период подписки",
|
|
124
|
+
httpCode: 409,
|
|
125
|
+
},
|
|
126
|
+
SUBSCRIPTION_NOT_CONFIGURED: {
|
|
127
|
+
code: "APPLE_IAP.SUBSCRIPTION_NOT_CONFIGURED",
|
|
128
|
+
message: "Для подписки App Store не настроен тариф ruGPT",
|
|
129
|
+
httpCode: 503,
|
|
130
|
+
},
|
|
131
|
+
/** Чтение состояния не включено; сам verifier может работать без Server API credentials. */
|
|
132
|
+
SERVER_API_NOT_CONFIGURED: {
|
|
133
|
+
code: "APPLE_IAP.SERVER_API_NOT_CONFIGURED",
|
|
134
|
+
message: "Получение состояния подписок App Store не настроено",
|
|
135
|
+
httpCode: 503,
|
|
136
|
+
},
|
|
137
|
+
SERVER_API_UNAUTHORIZED: {
|
|
138
|
+
code: "APPLE_IAP.SERVER_API_UNAUTHORIZED",
|
|
139
|
+
message: "Не удалось авторизовать серверный запрос к App Store",
|
|
140
|
+
httpCode: 502,
|
|
141
|
+
},
|
|
142
|
+
/** Включает отменённый по timeout запрос, ограничения частоты и временные ошибки Apple. */
|
|
143
|
+
SERVER_API_UNAVAILABLE: {
|
|
144
|
+
code: "APPLE_IAP.SERVER_API_UNAVAILABLE",
|
|
145
|
+
message: "Состояние подписки App Store временно недоступно. Повторите попытку позже",
|
|
146
|
+
httpCode: 503,
|
|
147
|
+
},
|
|
148
|
+
SUBSCRIPTION_NOT_FOUND: {
|
|
149
|
+
code: "APPLE_IAP.SUBSCRIPTION_NOT_FOUND",
|
|
150
|
+
message: "Запрошенная подписка App Store не найдена",
|
|
151
|
+
httpCode: 404,
|
|
152
|
+
},
|
|
153
|
+
INVALID_SUBSCRIPTION_STATE: {
|
|
154
|
+
code: "APPLE_IAP.INVALID_SUBSCRIPTION_STATE",
|
|
155
|
+
message: "Не удалось подтвердить согласованное состояние подписки App Store",
|
|
156
|
+
httpCode: 502,
|
|
157
|
+
},
|
|
158
|
+
GET_SUBSCRIPTION_STATE_ERROR: {
|
|
159
|
+
code: "APPLE_IAP.GET_SUBSCRIPTION_STATE_ERROR",
|
|
160
|
+
message: "Не удалось получить состояние подписки App Store",
|
|
161
|
+
httpCode: 500,
|
|
162
|
+
},
|
|
163
|
+
INVALID_TRANSACTION_HISTORY: {
|
|
164
|
+
code: "APPLE_IAP.INVALID_TRANSACTION_HISTORY",
|
|
165
|
+
message: "Не удалось подтвердить полную и согласованную историю покупок App Store",
|
|
166
|
+
httpCode: 502,
|
|
167
|
+
},
|
|
168
|
+
GET_TRANSACTION_HISTORY_ERROR: {
|
|
169
|
+
code: "APPLE_IAP.GET_TRANSACTION_HISTORY_ERROR",
|
|
170
|
+
message: "Не удалось получить историю покупок App Store",
|
|
171
|
+
httpCode: 500,
|
|
172
|
+
},
|
|
173
|
+
RECONCILIATION_INCOMPLETE: {
|
|
174
|
+
code: "APPLE_IAP.RECONCILIATION_INCOMPLETE",
|
|
175
|
+
message: "Не удалось завершить сверку оплат подписки App Store",
|
|
176
|
+
httpCode: 503,
|
|
177
|
+
},
|
|
178
|
+
RECONCILE_SUBSCRIPTION_ERROR: {
|
|
179
|
+
code: "APPLE_IAP.RECONCILE_SUBSCRIPTION_ERROR",
|
|
180
|
+
message: "Не удалось восстановить оплату подписки App Store",
|
|
181
|
+
httpCode: 500,
|
|
182
|
+
},
|
|
183
|
+
INVALID_RENEWAL_INFO: {
|
|
184
|
+
code: "APPLE_IAP.INVALID_RENEWAL_INFO",
|
|
185
|
+
message: "Не удалось подтвердить сведения о продлении подписки App Store",
|
|
186
|
+
httpCode: 400,
|
|
187
|
+
},
|
|
188
|
+
VERIFY_RENEWAL_INFO_ERROR: {
|
|
189
|
+
code: "APPLE_IAP.VERIFY_RENEWAL_INFO_ERROR",
|
|
190
|
+
message: "Не удалось проверить сведения о продлении подписки App Store",
|
|
191
|
+
httpCode: 500,
|
|
192
|
+
},
|
|
193
|
+
/** Обработка ещё не начиналась: бюджет массива исчерпан либо проверка Apple временно недоступна. */
|
|
194
|
+
TRANSACTION_NOT_PROCESSED: {
|
|
195
|
+
code: "APPLE_IAP.TRANSACTION_NOT_PROCESSED",
|
|
196
|
+
message: "Покупка App Store пока не обработана. Повторите отправку позже",
|
|
197
|
+
httpCode: 503,
|
|
198
|
+
},
|
|
199
|
+
/** Подпись настоящая, но покупка не связана с текущим аккаунтом ruGPT. */
|
|
200
|
+
ACCOUNT_MISMATCH: {
|
|
201
|
+
code: "APPLE_IAP.ACCOUNT_MISMATCH",
|
|
202
|
+
message: "Покупка App Store относится к другому аккаунту или не содержит привязки к аккаунту",
|
|
203
|
+
httpCode: 403,
|
|
204
|
+
},
|
|
205
|
+
/** Проверенная покупка выходит за поддержанный сценарий текущего обработчика. */
|
|
206
|
+
UNSUPPORTED_PURCHASE: {
|
|
207
|
+
code: "APPLE_IAP.UNSUPPORTED_PURCHASE",
|
|
208
|
+
message: "Этот вид покупки App Store пока не поддерживается",
|
|
209
|
+
httpCode: 400,
|
|
210
|
+
},
|
|
211
|
+
REVOKED_TRANSACTION: {
|
|
212
|
+
code: "APPLE_IAP.REVOKED_TRANSACTION",
|
|
213
|
+
message: "Покупка App Store отозвана",
|
|
214
|
+
httpCode: 400,
|
|
215
|
+
},
|
|
216
|
+
/** ID уже сохранён, но подтверждения именно этой выдачи нет; повторно начислять опасно. */
|
|
217
|
+
TRANSACTION_CONFLICT: {
|
|
218
|
+
code: "APPLE_IAP.TRANSACTION_CONFLICT",
|
|
219
|
+
message: "Сохранённые данные покупки App Store требуют проверки",
|
|
220
|
+
httpCode: 409,
|
|
221
|
+
},
|
|
222
|
+
/** Отсутствующие данные не подменяются нулевой ценой или рублями. */
|
|
223
|
+
MISSING_PRICE: {
|
|
224
|
+
code: "APPLE_IAP.MISSING_PRICE",
|
|
225
|
+
message: "В покупке App Store отсутствуют сведения о цене или валюте",
|
|
226
|
+
httpCode: 400,
|
|
227
|
+
},
|
|
228
|
+
PRODUCT_NOT_CONFIGURED: {
|
|
229
|
+
code: "APPLE_IAP.PRODUCT_NOT_CONFIGURED",
|
|
230
|
+
message: "Для покупки App Store не настроен пакет ruGPT",
|
|
231
|
+
httpCode: 503,
|
|
232
|
+
},
|
|
233
|
+
APPLY_TRANSACTION_ERROR: {
|
|
234
|
+
code: "APPLE_IAP.APPLY_TRANSACTION_ERROR",
|
|
235
|
+
message: "Не удалось применить покупку App Store. Повторите попытку позже",
|
|
236
|
+
httpCode: 500,
|
|
237
|
+
},
|
|
238
|
+
/** Серверный verifier выключен; не является отказом Apple в оплате. */
|
|
239
|
+
VERIFICATION_NOT_CONFIGURED: {
|
|
240
|
+
code: "APPLE_IAP.VERIFICATION_NOT_CONFIGURED",
|
|
241
|
+
message: "Проверка покупок App Store не настроена",
|
|
242
|
+
httpCode: 503,
|
|
243
|
+
},
|
|
244
|
+
/** Неверная подпись/сертификаты либо неполные или неподдерживаемые данные подписанного payload. */
|
|
245
|
+
INVALID_TRANSACTION: {
|
|
246
|
+
code: "APPLE_IAP.INVALID_TRANSACTION",
|
|
247
|
+
message: "Не удалось подтвердить подлинность или данные покупки App Store",
|
|
248
|
+
httpCode: 400,
|
|
249
|
+
},
|
|
250
|
+
/** bundleId покупки не совпал с нашим приложением; это не проверка владельца ruGPT. */
|
|
251
|
+
APP_MISMATCH: {
|
|
252
|
+
code: "APPLE_IAP.APP_MISMATCH",
|
|
253
|
+
message: "Покупка App Store относится к другому приложению",
|
|
254
|
+
httpCode: 400,
|
|
255
|
+
},
|
|
256
|
+
/** Среда покупки не совпала с явно выбранной сервером: Sandbox или Production. */
|
|
257
|
+
ENVIRONMENT_MISMATCH: {
|
|
258
|
+
code: "APPLE_IAP.ENVIRONMENT_MISMATCH",
|
|
259
|
+
message: "Покупка App Store относится к другому окружению",
|
|
260
|
+
httpCode: 400,
|
|
261
|
+
},
|
|
262
|
+
/** Временный сбой проверки сертификатов; повтор допустим, неподлинность покупки не установлена. */
|
|
263
|
+
VERIFICATION_UNAVAILABLE: {
|
|
264
|
+
code: "APPLE_IAP.VERIFICATION_UNAVAILABLE",
|
|
265
|
+
message: "Проверка покупки App Store временно недоступна. Повторите попытку позже",
|
|
266
|
+
httpCode: 503,
|
|
267
|
+
},
|
|
268
|
+
/** Неожиданный сбой адаптера; подробности SDK не должны попадать в ответ клиенту. */
|
|
269
|
+
VERIFY_TRANSACTION_ERROR: {
|
|
270
|
+
code: "APPLE_IAP.VERIFY_TRANSACTION_ERROR",
|
|
271
|
+
message: "Не удалось проверить покупку App Store",
|
|
272
|
+
httpCode: 500,
|
|
273
|
+
},
|
|
274
|
+
GET_PRODUCTS_ERROR: {
|
|
275
|
+
code: "APPLE_IAP.GET_PRODUCTS_ERROR",
|
|
276
|
+
message: "Не удалось получить каталог покупок App Store",
|
|
277
|
+
httpCode: 500,
|
|
278
|
+
},
|
|
279
|
+
},
|
|
5
280
|
PARTNER_CODES: {
|
|
6
281
|
ISSUE_REQUEST_CONFLICT: {
|
|
7
282
|
code: "issue_request_conflict",
|
|
@@ -3152,6 +3427,11 @@ exports.ERRORS = {
|
|
|
3152
3427
|
},
|
|
3153
3428
|
},
|
|
3154
3429
|
PAYMENT: {
|
|
3430
|
+
REFUND_NOT_SUPPORTED: {
|
|
3431
|
+
code: "PAYMENT.REFUND_NOT_SUPPORTED",
|
|
3432
|
+
message: "Возврат этой покупки оформляется через App Store",
|
|
3433
|
+
httpCode: 409,
|
|
3434
|
+
},
|
|
3155
3435
|
CREATE_ERROR: {
|
|
3156
3436
|
code: "PAYMENT.CREATE_ERROR",
|
|
3157
3437
|
httpCode: 500,
|
|
@@ -4070,6 +4350,16 @@ exports.ERRORS = {
|
|
|
4070
4350
|
},
|
|
4071
4351
|
},
|
|
4072
4352
|
SUBSCRIPTION: {
|
|
4353
|
+
MANAGED_BY_APPLE: {
|
|
4354
|
+
code: "SUBSCRIPTION.MANAGED_BY_APPLE",
|
|
4355
|
+
message: "Управляйте этой подпиской в настройках подписок Apple",
|
|
4356
|
+
httpCode: 409,
|
|
4357
|
+
},
|
|
4358
|
+
ACTIVE_APPLE_SUBSCRIPTION: {
|
|
4359
|
+
code: "SUBSCRIPTION.ACTIVE_APPLE_SUBSCRIPTION",
|
|
4360
|
+
message: "Перед покупкой тарифа на сайте отключите автопродление подписки Apple",
|
|
4361
|
+
httpCode: 409,
|
|
4362
|
+
},
|
|
4073
4363
|
ALREADY_HAS: {
|
|
4074
4364
|
code: "SUBSCRIPTION.ALREADY_HAS",
|
|
4075
4365
|
httpCode: 409,
|
|
@@ -5090,6 +5380,16 @@ exports.ERRORS = {
|
|
|
5090
5380
|
httpCode: 400,
|
|
5091
5381
|
message: "Загрузите изображение, на котором хорошо виден человек",
|
|
5092
5382
|
},
|
|
5383
|
+
FIRST_FRAME_REQUIRED: {
|
|
5384
|
+
code: "VIDEO.FIRST_FRAME_REQUIRED",
|
|
5385
|
+
httpCode: 400,
|
|
5386
|
+
message: "Выбранная модель не может создать видео только по последнему кадру. Добавьте первый кадр",
|
|
5387
|
+
},
|
|
5388
|
+
WEBP_NOT_SUPPORTED: {
|
|
5389
|
+
code: "VIDEO.WEBP_NOT_SUPPORTED",
|
|
5390
|
+
httpCode: 400,
|
|
5391
|
+
message: "Выбранная модель не поддерживает изображения в формате WEBP. Загрузите изображение в формате JPG или PNG",
|
|
5392
|
+
},
|
|
5093
5393
|
JOB_DELETE_ERROR: {
|
|
5094
5394
|
code: "VIDEO.JOB_DELETE_ERROR",
|
|
5095
5395
|
httpCode: 500,
|