@up-im/medotvet_sdk 0.0.19 → 0.0.21
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 +9 -5
- package/dist/api/payment.d.ts +8 -16
- package/dist/api/payment.js +9 -23
- package/dist/api/user.js +7 -2
- package/dist/interfaces/iPayment.d.ts +0 -2
- package/package.json +1 -1
- package/src/api/payment.ts +76 -89
- package/src/api/user.ts +5 -2
- package/src/interfaces/iPayment.ts +1 -3
package/README.md
CHANGED
|
@@ -77,7 +77,10 @@ const client = createClient({
|
|
|
77
77
|
сортировка по приоритету.
|
|
78
78
|
- `getBookmarks({ page?, select? })` — избранные опросы, 401 без
|
|
79
79
|
авторизации.
|
|
80
|
-
- `getOne({ id })` — опрос с
|
|
80
|
+
- `getOne({ id })` — опрос с вопросами и текущее прохождение,
|
|
81
|
+
ответ `{ item: iSurvey, userSurvey: iUserSurvey | null }`.
|
|
82
|
+
Если `userSurvey` не null и статус `in_progress` — опрос уже начат,
|
|
83
|
+
используй `userSurvey.id` для `saveAnswer()`/`cancel()`.
|
|
81
84
|
- `start(surveyId, signal?)` — начать прохождение, ответ
|
|
82
85
|
`{ success, userSurvey }`.
|
|
83
86
|
- `saveAnswer({ userSurveyId, questionIndex, answer, signal? })` —
|
|
@@ -87,12 +90,13 @@ const client = createClient({
|
|
|
87
90
|
- `getHistory({ page? })` — история прохождений.
|
|
88
91
|
|
|
89
92
|
### payment
|
|
90
|
-
- `
|
|
91
|
-
|
|
92
|
-
- `addCard({ sum, card_number })` — заявка на карту, вернёт `iPayment`.
|
|
93
|
+
- `add({ sum })` — заявка на выплату. Реквизиты выплат (карта/СБП/счёт)
|
|
94
|
+
пользователь указывает сам на странице верификации SolarStaff.
|
|
93
95
|
- `getList({ page?, select })` — список выплат, сортировка `id desc`.
|
|
94
96
|
- `balance()` — баланс и суммы начислений/выплат.
|
|
95
|
-
- `getVerificationUrl()` — ссылка на KYC SolarStaff
|
|
97
|
+
- `getVerificationUrl()` — ссылка на KYC-страницу SolarStaff, где
|
|
98
|
+
пользователь проходит верификацию и добавляет платёжные реквизиты.
|
|
99
|
+
Возвращает `{ url, verified }`.
|
|
96
100
|
- `checkVerificationStatus()` — статус KYC:
|
|
97
101
|
`not_started|pending|active|blocked` + текст.
|
|
98
102
|
|
package/dist/api/payment.d.ts
CHANGED
|
@@ -4,22 +4,14 @@ import { iPayment } from "../interfaces/iPayment";
|
|
|
4
4
|
import { iBalance } from "../interfaces/iBalance";
|
|
5
5
|
export declare class ApiPayment extends ApiAbstract {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Добавление запроса на выплату.
|
|
8
|
+
* Реквизиты выплаты (карта/СБП/счёт) пользователь добавляет сам
|
|
9
|
+
* на странице верификации SolarStaff (см. getVerificationUrl) — в этот
|
|
10
|
+
* запрос они не передаются.
|
|
11
|
+
* @param {number} props.sum - сумма выплаты
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
add(props: {
|
|
12
14
|
sum: number;
|
|
13
|
-
bank: number;
|
|
14
|
-
}): Promise<iPayment>;
|
|
15
|
-
/**
|
|
16
|
-
* добавление запроса на выплату по номеру карты
|
|
17
|
-
* * @param {number} props.sum - сумма выплаты
|
|
18
|
-
* * @param {number} props.card_number - номер карты
|
|
19
|
-
*/
|
|
20
|
-
addCard(props: {
|
|
21
|
-
sum: number;
|
|
22
|
-
card_number: number;
|
|
23
15
|
}): Promise<iPayment>;
|
|
24
16
|
/**
|
|
25
17
|
* список начислений
|
|
@@ -36,8 +28,8 @@ export declare class ApiPayment extends ApiAbstract {
|
|
|
36
28
|
*/
|
|
37
29
|
balance(): Promise<iBalance>;
|
|
38
30
|
/**
|
|
39
|
-
* Получить URL
|
|
40
|
-
*
|
|
31
|
+
* Получить URL страницы верификации в SolarStaff.
|
|
32
|
+
* На этой же странице пользователь добавляет реквизиты выплат.
|
|
41
33
|
*/
|
|
42
34
|
getVerificationUrl(): Promise<{
|
|
43
35
|
url: string;
|
package/dist/api/payment.js
CHANGED
|
@@ -3,35 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ApiPayment = void 0;
|
|
4
4
|
const abstract_1 = require("./abstract");
|
|
5
5
|
const apiRoute_1 = require("../http/apiRoute");
|
|
6
|
-
const payoutType_1 = require("../interfaces/payoutType");
|
|
7
6
|
const apiError_1 = require("../http/apiError");
|
|
8
7
|
class ApiPayment extends abstract_1.ApiAbstract {
|
|
9
8
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Добавление запроса на выплату.
|
|
10
|
+
* Реквизиты выплаты (карта/СБП/счёт) пользователь добавляет сам
|
|
11
|
+
* на странице верификации SolarStaff (см. getVerificationUrl) — в этот
|
|
12
|
+
* запрос они не передаются.
|
|
13
|
+
* @param {number} props.sum - сумма выплаты
|
|
13
14
|
*/
|
|
14
|
-
async
|
|
15
|
+
async add(props) {
|
|
15
16
|
if (!await this.userStorage.isAuth())
|
|
16
17
|
throw new apiError_1.ApiError(401, "Пользователь не авторизован");
|
|
17
18
|
const data = await this.fetcher({
|
|
18
19
|
route: apiRoute_1.apiRoutePaymentAdd,
|
|
19
|
-
postBody:
|
|
20
|
-
options: { addToken: true }
|
|
21
|
-
});
|
|
22
|
-
return data.payment;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* добавление запроса на выплату по номеру карты
|
|
26
|
-
* * @param {number} props.sum - сумма выплаты
|
|
27
|
-
* * @param {number} props.card_number - номер карты
|
|
28
|
-
*/
|
|
29
|
-
async addCard(props) {
|
|
30
|
-
if (!await this.userStorage.isAuth())
|
|
31
|
-
throw new apiError_1.ApiError(401, "Пользователь не авторизован");
|
|
32
|
-
const data = await this.fetcher({
|
|
33
|
-
route: apiRoute_1.apiRoutePaymentAdd,
|
|
34
|
-
postBody: { ...props, type: payoutType_1.PayoutType.card },
|
|
20
|
+
postBody: props,
|
|
35
21
|
options: { addToken: true }
|
|
36
22
|
});
|
|
37
23
|
return data.payment;
|
|
@@ -64,8 +50,8 @@ class ApiPayment extends abstract_1.ApiAbstract {
|
|
|
64
50
|
});
|
|
65
51
|
}
|
|
66
52
|
/**
|
|
67
|
-
* Получить URL
|
|
68
|
-
*
|
|
53
|
+
* Получить URL страницы верификации в SolarStaff.
|
|
54
|
+
* На этой же странице пользователь добавляет реквизиты выплат.
|
|
69
55
|
*/
|
|
70
56
|
async getVerificationUrl() {
|
|
71
57
|
if (!await this.userStorage.isAuth())
|
package/dist/api/user.js
CHANGED
|
@@ -81,8 +81,13 @@ class ApiUser extends abstract_1.ApiAbstract {
|
|
|
81
81
|
postBody: data,
|
|
82
82
|
options: { addToken: true }
|
|
83
83
|
});
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
const updates = {};
|
|
85
|
+
if (data.firstname?.length)
|
|
86
|
+
updates["firstname"] = data.firstname;
|
|
87
|
+
if (data.lastname?.length)
|
|
88
|
+
updates["lastname"] = data.lastname;
|
|
89
|
+
if (Object.keys(updates).length) {
|
|
90
|
+
await this.userStorage.saveUser(updates);
|
|
86
91
|
}
|
|
87
92
|
return true;
|
|
88
93
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PaymentStatus, PaymentStatusKeys } from "./paymentStatus";
|
|
2
2
|
import { PaymentType, PaymentTypeKeys } from "./paymentType";
|
|
3
|
-
import { PayoutType, PayoutTypeKeys } from "./payoutType";
|
|
4
3
|
export interface iPayment {
|
|
5
4
|
id: number;
|
|
6
5
|
reg_date: string;
|
|
@@ -14,7 +13,6 @@ export interface iPayment {
|
|
|
14
13
|
shop: number | null;
|
|
15
14
|
cashback_level: 0 | 1 | 2 | 3;
|
|
16
15
|
max_cashback_level: null | 0 | 1 | 2 | 3;
|
|
17
|
-
payout_type: typeof PayoutType[PayoutTypeKeys] | null;
|
|
18
16
|
last_error: string;
|
|
19
17
|
price: number;
|
|
20
18
|
}
|
package/package.json
CHANGED
package/src/api/payment.ts
CHANGED
|
@@ -8,98 +8,85 @@ import {
|
|
|
8
8
|
} from "../http/apiRoute"
|
|
9
9
|
import { iPagingItems } from "../interfaces/iPagingItems"
|
|
10
10
|
import { iPayment } from "../interfaces/iPayment"
|
|
11
|
-
import { PayoutType } from "../interfaces/payoutType"
|
|
12
11
|
import { ApiError } from "../http/apiError"
|
|
13
12
|
import { iBalance } from "../interfaces/iBalance"
|
|
14
13
|
|
|
15
14
|
export class ApiPayment extends ApiAbstract {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
})
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* баланс пользователя
|
|
67
|
-
*/
|
|
68
|
-
async balance() {
|
|
69
|
-
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
70
|
-
return await this.fetcher<iBalance>({
|
|
71
|
-
route: apiRoutePaymentBalance,
|
|
72
|
-
options: { addToken: true }
|
|
73
|
-
})
|
|
74
|
-
}
|
|
15
|
+
/**
|
|
16
|
+
* Добавление запроса на выплату.
|
|
17
|
+
* Реквизиты выплаты (карта/СБП/счёт) пользователь добавляет сам
|
|
18
|
+
* на странице верификации SolarStaff (см. getVerificationUrl) — в этот
|
|
19
|
+
* запрос они не передаются.
|
|
20
|
+
* @param {number} props.sum - сумма выплаты
|
|
21
|
+
*/
|
|
22
|
+
async add(props: { sum: number }) {
|
|
23
|
+
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
24
|
+
const data = await this.fetcher<{ payment: iPayment }>({
|
|
25
|
+
route: apiRoutePaymentAdd,
|
|
26
|
+
postBody: props,
|
|
27
|
+
options: { addToken: true }
|
|
28
|
+
})
|
|
29
|
+
return data.payment
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* список начислений
|
|
33
|
+
* * @param {number} page - отсчет страниц с первой, чтобы не было путаницы
|
|
34
|
+
*/
|
|
35
|
+
async getList<Keys extends keyof iPayment>({
|
|
36
|
+
page = 1,
|
|
37
|
+
select,
|
|
38
|
+
}: {
|
|
39
|
+
page: number
|
|
40
|
+
select: Keys[],
|
|
41
|
+
}) {
|
|
42
|
+
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
43
|
+
return await this.fetcher<iPagingItems<Pick<iPayment, Keys>>>({
|
|
44
|
+
route: apiRoutePaymentList({
|
|
45
|
+
page,
|
|
46
|
+
sorters: ["id desc"],
|
|
47
|
+
select
|
|
48
|
+
}),
|
|
49
|
+
options: { addToken: true }
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* баланс пользователя
|
|
54
|
+
*/
|
|
55
|
+
async balance() {
|
|
56
|
+
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
57
|
+
return await this.fetcher<iBalance>({
|
|
58
|
+
route: apiRoutePaymentBalance,
|
|
59
|
+
options: { addToken: true }
|
|
60
|
+
})
|
|
61
|
+
}
|
|
75
62
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Получить URL страницы верификации в SolarStaff.
|
|
65
|
+
* На этой же странице пользователь добавляет реквизиты выплат.
|
|
66
|
+
*/
|
|
67
|
+
async getVerificationUrl() {
|
|
68
|
+
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
69
|
+
return await this.fetcher<{
|
|
70
|
+
url: string,
|
|
71
|
+
verified: boolean
|
|
72
|
+
}>({
|
|
73
|
+
route: apiRoutePaymentVerificationUrl,
|
|
74
|
+
options: { addToken: true }
|
|
75
|
+
})
|
|
76
|
+
}
|
|
90
77
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
78
|
+
/**
|
|
79
|
+
* Проверить статус верификации пользователя в SolarStaff
|
|
80
|
+
*/
|
|
81
|
+
async checkVerificationStatus() {
|
|
82
|
+
if (!await this.userStorage.isAuth()) throw new ApiError(401, "Пользователь не авторизован")
|
|
83
|
+
return await this.fetcher<{
|
|
84
|
+
verified: boolean,
|
|
85
|
+
status: "not_started" | "pending" | "active" | "blocked",
|
|
86
|
+
message: string
|
|
87
|
+
}>({
|
|
88
|
+
route: apiRoutePaymentVerificationStatus,
|
|
89
|
+
options: { addToken: true }
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
}
|
package/src/api/user.ts
CHANGED
|
@@ -81,8 +81,11 @@ export class ApiUser extends ApiAbstract {
|
|
|
81
81
|
postBody: data,
|
|
82
82
|
options: { addToken: true }
|
|
83
83
|
})
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
const updates: Record<string, string> = {}
|
|
85
|
+
if (data.firstname?.length) updates["firstname"] = data.firstname
|
|
86
|
+
if (data.lastname?.length) updates["lastname"] = data.lastname
|
|
87
|
+
if (Object.keys(updates).length) {
|
|
88
|
+
await this.userStorage.saveUser(updates)
|
|
86
89
|
}
|
|
87
90
|
return true
|
|
88
91
|
} catch (error) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PaymentStatus, PaymentStatusKeys } from "./paymentStatus";
|
|
2
2
|
import { PaymentType, PaymentTypeKeys } from "./paymentType";
|
|
3
|
-
import { PayoutType, PayoutTypeKeys } from "./payoutType";
|
|
4
3
|
|
|
5
4
|
|
|
6
5
|
export interface iPayment {
|
|
@@ -17,10 +16,9 @@ export interface iPayment {
|
|
|
17
16
|
sku: number | null//id акции
|
|
18
17
|
shop: number | null//id аптеки
|
|
19
18
|
cashback_level: 0 | 1 | 2 | 3//уровень кэшбека по которому произошло начисление
|
|
20
|
-
max_cashback_level: null | 0 | 1 | 2 | 3 //макс. возможный уровень кэшбека по акции, поле есть только у начислений в чеках
|
|
19
|
+
max_cashback_level: null | 0 | 1 | 2 | 3 //макс. возможный уровень кэшбека по акции, поле есть только у начислений в чеках
|
|
21
20
|
|
|
22
21
|
//списание
|
|
23
|
-
payout_type: typeof PayoutType[PayoutTypeKeys] | null //способ выплаты
|
|
24
22
|
last_error: string//текст ошибки выплаты
|
|
25
23
|
|
|
26
24
|
//размер
|