btrz-api-client 8.33.0 → 8.34.0
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/lib/client-standalone-min.js +3 -3
- package/lib/client.js +6 -2
- package/lib/endpoints/btrzpay/adyen.js +58 -0
- package/lib/endpoints/btrzpay/cardpointe.js +6 -3
- package/lib/endpoints/btrzpay/customerCards.js +19 -19
- package/lib/endpoints/btrzpay/customers.js +13 -13
- package/lib/endpoints/btrzpay/cybersource3ds.js +142 -0
- package/lib/endpoints/btrzpay/datalogic.js +64 -28
- package/lib/endpoints/btrzpay/oxxo.js +54 -28
- package/lib/endpoints/btrzpay/prismaTerminals.js +24 -15
- package/lib/endpoints/btrzpay/referenced-payments.js +4 -4
- package/lib/endpoints/btrzpay/square.js +8 -8
- package/lib/endpoints/btrzpay/stripe-terminals.js +16 -11
- package/lib/endpoints/btrzpay/stripe3ds.js +54 -0
- package/lib/endpoints/btrzpay/terminalPayments.js +19 -19
- package/lib/endpoints/inventory/segments-information-tables.js +13 -7
- package/lib/endpoints/inventory/trip-ids.js +67 -0
- package/lib/endpoints/inventory/trips.js +60 -13
- package/lib/endpoints/invoices/emails.js +15 -5
- package/lib/endpoints/invoices/invoices.js +46 -25
- package/lib/endpoints/invoices/pdfs.js +15 -8
- package/lib/endpoints/invoices/providers.js +42 -25
- package/lib/endpoints/invoices/tax-ids.js +11 -7
- package/lib/endpoints/sales/cancellations.js +43 -31
- package/lib/endpoints/sales/cart.js +21 -18
- package/lib/endpoints/sales/flexpasses.js +2 -5
- package/lib/endpoints/sales/order.js +41 -7
- package/lib/endpoints/sales/parcel-quotes.js +2 -2
- package/package.json +1 -1
- package/src/client.js +6 -2
- package/src/endpoints/btrzpay/adyen.js +44 -0
- package/src/endpoints/btrzpay/cardpointe.js +6 -4
- package/src/endpoints/btrzpay/customerCards.js +19 -19
- package/src/endpoints/btrzpay/customers.js +13 -13
- package/src/endpoints/btrzpay/cybersource3ds.js +114 -0
- package/src/endpoints/btrzpay/datalogic.js +63 -28
- package/src/endpoints/btrzpay/oxxo.js +53 -26
- package/src/endpoints/btrzpay/prismaTerminals.js +24 -15
- package/src/endpoints/btrzpay/referenced-payments.js +4 -4
- package/src/endpoints/btrzpay/square.js +8 -8
- package/src/endpoints/btrzpay/stripe-terminals.js +17 -10
- package/src/endpoints/btrzpay/stripe3ds.js +40 -0
- package/src/endpoints/btrzpay/terminalPayments.js +19 -19
- package/src/endpoints/inventory/segments-information-tables.js +13 -7
- package/src/endpoints/inventory/trip-ids.js +54 -0
- package/src/endpoints/inventory/trips.js +52 -14
- package/src/endpoints/invoices/emails.js +15 -5
- package/src/endpoints/invoices/invoices.js +46 -25
- package/src/endpoints/invoices/pdfs.js +15 -8
- package/src/endpoints/invoices/providers.js +42 -25
- package/src/endpoints/invoices/tax-ids.js +11 -7
- package/src/endpoints/sales/cancellations.js +43 -31
- package/src/endpoints/sales/cart.js +20 -18
- package/src/endpoints/sales/flexpasses.js +3 -4
- package/src/endpoints/sales/order.js +34 -7
- package/src/endpoints/sales/parcel-quotes.js +2 -2
- package/test/endpoints/btrzpay/adyen.tests.js +27 -0
- package/test/endpoints/btrzpay/carpointe.tests.js +14 -0
- package/test/endpoints/btrzpay/customerCards.test.js +9 -6
- package/test/endpoints/btrzpay/cybersource3ds.tests.js +55 -0
- package/test/endpoints/btrzpay/stripe-terminals.tests.js +5 -6
- package/test/endpoints/btrzpay/stripe3ds.tests.js +31 -0
- package/test/endpoints/inventory/trip-ids.test.js +27 -0
- package/test/endpoints/inventory/trips.test.js +19 -14
- package/test/endpoints/sales/order.test.js +7 -1
|
@@ -5,104 +5,139 @@ const {
|
|
|
5
5
|
/**
|
|
6
6
|
* Query params for GET /datalogic/payments (btrz-api-payments). See get-payments-handler getSpec().
|
|
7
7
|
* @typedef {Object} DatalogicPaymentsListQuery
|
|
8
|
-
* @property {string}
|
|
8
|
+
* @property {string} referenceNumber - Payment reference number (required)
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Request body for POST /datalogic/payments/:referenceNumber. PostDatalogicPaymentsPayload.
|
|
13
|
+
* @typedef {Object} PostDatalogicPaymentsPayload
|
|
14
|
+
* @property {string} folio - FEMSA transaction id
|
|
15
|
+
* @property {number} id_terminal - Terminal/group ID
|
|
16
|
+
* @property {string} local_date - Local date (e.g. "02/08/2022 20:33:43")
|
|
17
|
+
* @property {string} amount - Debt amount
|
|
18
|
+
* @property {number} trx_no - Transaction number
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Request body for POST /datalogic/reverse/:referenceNumber. PostDatalogicReversePayload.
|
|
23
|
+
* @typedef {Object} PostDatalogicReversePayload
|
|
24
|
+
* @property {string} folio - FEMSA transaction id
|
|
25
|
+
* @property {number} id_terminal - Terminal/group ID
|
|
26
|
+
* @property {string} local_date - Local date (e.g. "02/08/2022 20:33:43")
|
|
27
|
+
* @property {number} trx_no - Transaction number
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Factory for Datalogic API (btrz-api-payments). Endpoints are hideInDocumentation; client for internal use.
|
|
13
32
|
* @param {Object} deps
|
|
14
33
|
* @param {import("axios").AxiosInstance} deps.client
|
|
15
34
|
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
16
35
|
* @returns {{ payments: Object, referenceNumber: Object, authCode: Object }}
|
|
17
36
|
*/
|
|
18
|
-
function datalogicFactory({client}) {
|
|
37
|
+
function datalogicFactory({client, internalAuthTokenProvider}) {
|
|
38
|
+
function authProvider(opts) {
|
|
39
|
+
return opts !== undefined && opts !== null ? opts : internalAuthTokenProvider;
|
|
40
|
+
}
|
|
41
|
+
|
|
19
42
|
const payments = {
|
|
20
43
|
/**
|
|
21
|
-
* GET /datalogic/payments - list Datalogic payments.
|
|
44
|
+
* GET /datalogic/payments - list Datalogic payments by reference number.
|
|
22
45
|
* @param {Object} opts
|
|
23
46
|
* @param {string} [opts.token] - API key
|
|
24
47
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
25
|
-
* @param {DatalogicPaymentsListQuery}
|
|
48
|
+
* @param {DatalogicPaymentsListQuery} opts.query - referenceNumber (required)
|
|
26
49
|
* @param {Object} [opts.headers] - Optional headers
|
|
27
|
-
* @
|
|
50
|
+
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider] - Internal auth provider
|
|
51
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payments: Array }>>}
|
|
52
|
+
* GetDatalogicPaymentsResponse. Rejects 400, 401, 500.
|
|
28
53
|
*/
|
|
29
|
-
all({token, jwtToken, headers, query, internalAuthTokenProvider}) {
|
|
54
|
+
all({token, jwtToken, headers, query, internalAuthTokenProvider: optsAuth}) {
|
|
30
55
|
return client({
|
|
31
56
|
url: "/datalogic/payments",
|
|
32
57
|
params: query,
|
|
33
|
-
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
58
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
34
59
|
});
|
|
35
60
|
},
|
|
36
61
|
/**
|
|
37
|
-
* POST /datalogic/payments/:referenceNumber -
|
|
62
|
+
* POST /datalogic/payments/:referenceNumber - pay by reference (20 digits).
|
|
63
|
+
* Body: datalogicInfo or flat PostDatalogicPaymentsPayload.
|
|
38
64
|
* @param {Object} opts
|
|
39
65
|
* @param {string} [opts.token] - API key
|
|
40
66
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
41
|
-
* @param {string} opts.referenceNumber - Reference number
|
|
42
|
-
* @param {
|
|
67
|
+
* @param {string} opts.referenceNumber - Reference number (20 digits)
|
|
68
|
+
* @param {PostDatalogicPaymentsPayload|{ datalogicInfo: PostDatalogicPaymentsPayload }} opts.data - Body
|
|
43
69
|
* @param {Object} [opts.headers] - Optional headers
|
|
44
|
-
* @
|
|
70
|
+
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider] - Internal auth provider
|
|
71
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payment: Object }>>}
|
|
72
|
+
* PostDatalogicPaymentsResponse. Rejects 400, 401, 500.
|
|
45
73
|
*/
|
|
46
|
-
update({token, jwtToken, headers, query, referenceNumber, data, internalAuthTokenProvider}) {
|
|
74
|
+
update({token, jwtToken, headers, query, referenceNumber, data, internalAuthTokenProvider: optsAuth}) {
|
|
47
75
|
return client({
|
|
48
76
|
url: `/datalogic/payments/${referenceNumber}`,
|
|
49
77
|
method: "post",
|
|
50
78
|
params: query,
|
|
51
79
|
data,
|
|
52
|
-
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
80
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
53
81
|
});
|
|
54
82
|
},
|
|
55
83
|
/**
|
|
56
|
-
* POST /datalogic/reverse/:referenceNumber - reverse
|
|
84
|
+
* POST /datalogic/reverse/:referenceNumber - reverse by reference (20 digits).
|
|
85
|
+
* Body: datalogicReverseInfo or flat PostDatalogicReversePayload.
|
|
57
86
|
* @param {Object} opts
|
|
58
87
|
* @param {string} [opts.token] - API key
|
|
59
88
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
60
|
-
* @param {string} opts.referenceNumber - Reference number
|
|
61
|
-
* @param {
|
|
89
|
+
* @param {string} opts.referenceNumber - Reference number (20 digits)
|
|
90
|
+
* @param {PostDatalogicReversePayload|{ datalogicReverseInfo: PostDatalogicReversePayload }} opts.data - Body
|
|
62
91
|
* @param {Object} [opts.headers] - Optional headers
|
|
63
|
-
* @
|
|
92
|
+
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider] - Internal auth provider
|
|
93
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payment: Object }>>}
|
|
94
|
+
* PostDatalogicPaymentsResponse. Rejects 400, 401, 500.
|
|
64
95
|
*/
|
|
65
|
-
reverse({token, jwtToken, headers, query, referenceNumber, data, internalAuthTokenProvider}) {
|
|
96
|
+
reverse({token, jwtToken, headers, query, referenceNumber, data, internalAuthTokenProvider: optsAuth}) {
|
|
66
97
|
return client({
|
|
67
98
|
url: `/datalogic/reverse/${referenceNumber}`,
|
|
68
99
|
method: "post",
|
|
69
100
|
params: query,
|
|
70
101
|
data,
|
|
71
|
-
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
102
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
72
103
|
});
|
|
73
104
|
}
|
|
74
105
|
};
|
|
75
106
|
|
|
76
107
|
const referenceNumber = {
|
|
77
108
|
/**
|
|
78
|
-
* GET /datalogic/reference-number - get reference number.
|
|
109
|
+
* GET /datalogic/reference-number - get new Datalogic reference number.
|
|
79
110
|
* @param {Object} opts
|
|
80
111
|
* @param {string} [opts.token] - API key
|
|
81
112
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
82
113
|
* @param {Object} [opts.headers] - Optional headers
|
|
83
|
-
* @
|
|
114
|
+
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider] - Internal auth provider
|
|
115
|
+
* @returns {Promise<import("axios").AxiosResponse<{ referenceNumber: string }>>}
|
|
116
|
+
* GetDatalogicReferenceNumberResponse. Rejects 401, 404, 500.
|
|
84
117
|
*/
|
|
85
|
-
get({token, jwtToken, headers, internalAuthTokenProvider}) {
|
|
118
|
+
get({token, jwtToken, headers, internalAuthTokenProvider: optsAuth}) {
|
|
86
119
|
return client({
|
|
87
120
|
url: "/datalogic/reference-number",
|
|
88
|
-
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
121
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
89
122
|
});
|
|
90
123
|
}
|
|
91
124
|
};
|
|
92
125
|
|
|
93
126
|
const authCode = {
|
|
94
127
|
/**
|
|
95
|
-
* GET /datalogic/auth-code - get
|
|
128
|
+
* GET /datalogic/auth-code - get new Datalogic authorization code.
|
|
96
129
|
* @param {Object} opts
|
|
97
130
|
* @param {string} [opts.token] - API key
|
|
98
131
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
99
132
|
* @param {Object} [opts.headers] - Optional headers
|
|
100
|
-
* @
|
|
133
|
+
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider] - Internal auth provider
|
|
134
|
+
* @returns {Promise<import("axios").AxiosResponse<{ authCode: string }>>}
|
|
135
|
+
* GetDatalogicAuthCodeResponse. Rejects 401, 404, 500.
|
|
101
136
|
*/
|
|
102
|
-
get({token, jwtToken, headers, internalAuthTokenProvider}) {
|
|
137
|
+
get({token, jwtToken, headers, internalAuthTokenProvider: optsAuth}) {
|
|
103
138
|
return client({
|
|
104
139
|
url: "/datalogic/auth-code",
|
|
105
|
-
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
140
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
106
141
|
});
|
|
107
142
|
}
|
|
108
143
|
};
|
|
@@ -5,91 +5,118 @@ const {
|
|
|
5
5
|
/**
|
|
6
6
|
* Query params for GET /oxxo/:token/payments (btrz-api-payments). See get-payments-handler getSpec().
|
|
7
7
|
* @typedef {Object} OxxoPaymentsListQuery
|
|
8
|
-
* @property {string}
|
|
8
|
+
* @property {string} referenceNumber - Payment reference number (required)
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Request body for POST /oxxo/:token/payments/:referenceNumber. PostOxxoPaymentsPayload.
|
|
13
|
+
* @typedef {Object} PostOxxoPaymentsPayload
|
|
14
|
+
* @property {string} ticket - Oxxo sale ticket id
|
|
15
|
+
* @property {number} amount - Amount to pay in cents
|
|
16
|
+
* @property {string} folio - FEMSA transaction id
|
|
17
|
+
* @property {string} store - Store id
|
|
18
|
+
* @property {string} account - Account id (ObjectId)
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Request body for POST /oxxo/:token/reverse/:referenceNumber. PostOxxoReversePayload.
|
|
23
|
+
* @typedef {Object} PostOxxoReversePayload
|
|
24
|
+
* @property {string} ticket - Oxxo sale ticket id
|
|
25
|
+
* @property {number} amount - Amount in cents
|
|
26
|
+
* @property {string} folio - FEMSA transaction id
|
|
27
|
+
* @property {string} store - Store id
|
|
28
|
+
* @property {string} account - Account id (ObjectId)
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Factory for OXXO API (btrz-api-payments). Endpoints are hideInDocumentation; client for internal use.
|
|
13
33
|
* @param {Object} deps
|
|
14
34
|
* @param {import("axios").AxiosInstance} deps.client
|
|
15
35
|
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
16
36
|
* @returns {{ token: Object, payments: Object }}
|
|
17
37
|
*/
|
|
18
|
-
function oxxoFactory({client, internalAuthTokenProvider
|
|
38
|
+
function oxxoFactory({client, internalAuthTokenProvider}) {
|
|
39
|
+
function authProvider(opts) {
|
|
40
|
+
return opts !== undefined && opts !== null ? opts : internalAuthTokenProvider;
|
|
41
|
+
}
|
|
42
|
+
|
|
19
43
|
const token = {
|
|
20
44
|
/**
|
|
21
|
-
* GET /oxxo/token - get
|
|
45
|
+
* GET /oxxo/token - get new Oxxo token. No query params.
|
|
22
46
|
* @param {Object} opts
|
|
23
47
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
24
48
|
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider]
|
|
25
49
|
* @param {Object} [opts.headers] - Optional request headers
|
|
26
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
50
|
+
* @returns {Promise<import("axios").AxiosResponse<{ token: string }>>}
|
|
51
|
+
* GetOxxoTokenResponse. Rejects with 401, 500.
|
|
27
52
|
*/
|
|
28
|
-
get({jwtToken, headers, internalAuthTokenProvider}) {
|
|
53
|
+
get({jwtToken, headers, internalAuthTokenProvider: optsAuth}) {
|
|
29
54
|
return client({
|
|
30
55
|
url: "/oxxo/token",
|
|
31
|
-
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider, headers})
|
|
56
|
+
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
32
57
|
});
|
|
33
58
|
}
|
|
34
59
|
};
|
|
35
60
|
|
|
36
61
|
const payments = {
|
|
37
62
|
/**
|
|
38
|
-
* GET /oxxo/:
|
|
63
|
+
* GET /oxxo/:token/payments - list Oxxo payments by token and reference number.
|
|
39
64
|
* @param {Object} opts
|
|
40
65
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
41
|
-
* @param {string} opts.oxxoToken -
|
|
42
|
-
* @param {OxxoPaymentsListQuery}
|
|
66
|
+
* @param {string} opts.oxxoToken - Oxxo token
|
|
67
|
+
* @param {OxxoPaymentsListQuery} opts.query - referenceNumber (required)
|
|
43
68
|
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider]
|
|
44
69
|
* @param {Object} [opts.headers] - Optional request headers
|
|
45
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
70
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payments: Array }>>}
|
|
71
|
+
* GetOxxoPaymentsResponse. Rejects with 400 (ERROR_GETTING_PAYMENT_METHODS, OXXO_PAY_NOT_ENABLED), 401, 500.
|
|
46
72
|
*/
|
|
47
|
-
all({jwtToken, headers, oxxoToken, query, internalAuthTokenProvider}) {
|
|
73
|
+
all({jwtToken, headers, oxxoToken, query, internalAuthTokenProvider: optsAuth}) {
|
|
48
74
|
return client({
|
|
49
75
|
url: `/oxxo/${oxxoToken}/payments`,
|
|
50
76
|
params: query,
|
|
51
|
-
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider, headers})
|
|
77
|
+
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
52
78
|
});
|
|
53
79
|
},
|
|
54
80
|
/**
|
|
55
|
-
* POST /oxxo/:
|
|
81
|
+
* POST /oxxo/:token/payments/:referenceNumber - pay Oxxo payment (referenceNumber: UUID v4 or 20 digits).
|
|
56
82
|
* @param {Object} opts
|
|
57
83
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
58
|
-
* @param {string} opts.oxxoToken -
|
|
84
|
+
* @param {string} opts.oxxoToken - Oxxo token
|
|
59
85
|
* @param {string} opts.referenceNumber - Payment reference number
|
|
60
|
-
* @param {
|
|
86
|
+
* @param {PostOxxoPaymentsPayload|{ oxxoInfo: PostOxxoPaymentsPayload }} opts.data - Request body
|
|
61
87
|
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider]
|
|
62
88
|
* @param {Object} [opts.headers] - Optional request headers
|
|
63
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
89
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payment: Object }>>}
|
|
90
|
+
* Rejects with 400 (INVALID_REFERENCE_NUMBER_FORMAT, INVALID_ACCOUNT, OXXO_PAY_NOT_ENABLED), 401, 500.
|
|
64
91
|
*/
|
|
65
|
-
update({jwtToken, headers, oxxoToken, query, referenceNumber, data, internalAuthTokenProvider}) {
|
|
92
|
+
update({jwtToken, headers, oxxoToken, query, referenceNumber, data, internalAuthTokenProvider: optsAuth}) {
|
|
66
93
|
return client({
|
|
67
94
|
url: `/oxxo/${oxxoToken}/payments/${referenceNumber}`,
|
|
68
95
|
method: "post",
|
|
69
96
|
params: query,
|
|
70
97
|
data,
|
|
71
|
-
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider, headers})
|
|
98
|
+
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
72
99
|
});
|
|
73
100
|
},
|
|
74
101
|
/**
|
|
75
|
-
* POST /oxxo/:
|
|
102
|
+
* POST /oxxo/:token/reverse/:referenceNumber - reverse Oxxo payment (referenceNumber: UUID v4 or 20 digits).
|
|
76
103
|
* @param {Object} opts
|
|
77
|
-
* @param {string} [opts.token] - API key
|
|
78
104
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
79
|
-
* @param {string} opts.oxxoToken -
|
|
105
|
+
* @param {string} opts.oxxoToken - Oxxo token
|
|
80
106
|
* @param {string} opts.referenceNumber - Payment reference number
|
|
81
|
-
* @param {
|
|
107
|
+
* @param {PostOxxoReversePayload|{ oxxoInfo: PostOxxoReversePayload }} [opts.data] - Request body
|
|
82
108
|
* @param {{ getToken: function(): string }} [opts.internalAuthTokenProvider]
|
|
83
109
|
* @param {Object} [opts.headers] - Optional request headers
|
|
84
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
110
|
+
* @returns {Promise<import("axios").AxiosResponse<{ payment: Object }>>}
|
|
111
|
+
* Rejects with 400 (INVALID_REFERENCE_NUMBER_FORMAT, INVALID_ACCOUNT, OXXO_PAY_NOT_ENABLED), 401, 500.
|
|
85
112
|
*/
|
|
86
|
-
reverse({
|
|
113
|
+
reverse({jwtToken, headers, query, referenceNumber, data, internalAuthTokenProvider: optsAuth, oxxoToken}) {
|
|
87
114
|
return client({
|
|
88
115
|
url: `/oxxo/${oxxoToken}/reverse/${referenceNumber}`,
|
|
89
116
|
method: "post",
|
|
90
117
|
params: query,
|
|
91
118
|
data,
|
|
92
|
-
headers: authorizationHeaders({
|
|
119
|
+
headers: authorizationHeaders({jwtToken, internalAuthTokenProvider: authProvider(optsAuth), headers})
|
|
93
120
|
});
|
|
94
121
|
}
|
|
95
122
|
};
|
|
@@ -3,10 +3,11 @@ const {
|
|
|
3
3
|
} = require("../endpoints_helpers.js");
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Query params for
|
|
6
|
+
* Query params for Prisma terminals endpoints (btrz-api-payments).
|
|
7
7
|
* @typedef {Object} PrismaTerminalsQuery
|
|
8
8
|
* @property {string} [providerId] - Account provider (operator) ID; used by agencies/sellers
|
|
9
9
|
* @property {boolean} [validateRefund] - (PUT refunds only) If true, fetch current state from Prisma before applying
|
|
10
|
+
* @property {boolean} [validatePayment] - (PUT payments only) If true, validate payment against the provider
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -35,12 +36,13 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
35
36
|
});
|
|
36
37
|
},
|
|
37
38
|
/**
|
|
38
|
-
* POST /prisma-terminals/payments/:id/reversals - create reversal.
|
|
39
|
+
* POST /prisma-terminals/payments/:id/reversals - create reversal.
|
|
39
40
|
* @param {Object} opts
|
|
40
41
|
* @param {string} [opts.token] - API key
|
|
41
42
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
42
|
-
* @param {string} opts.id - Payment id
|
|
43
|
+
* @param {string} opts.id - Payment id (prismaPaymentId)
|
|
43
44
|
* @param {Object} opts.prismaReversal - Prisma reversal payload
|
|
45
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
44
46
|
* @param {Object} [opts.headers] - Optional headers
|
|
45
47
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
46
48
|
*/
|
|
@@ -54,11 +56,12 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
54
56
|
});
|
|
55
57
|
},
|
|
56
58
|
/**
|
|
57
|
-
* DELETE /prisma-terminals/reversals/:id - delete reversal.
|
|
59
|
+
* DELETE /prisma-terminals/reversals/:id - delete reversal.
|
|
58
60
|
* @param {Object} opts
|
|
59
61
|
* @param {string} [opts.token] - API key
|
|
60
62
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
61
|
-
* @param {string} opts.id - Reversal id
|
|
63
|
+
* @param {string} opts.id - Reversal id (prismaPaymentId)
|
|
64
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
62
65
|
* @param {Object} [opts.headers] - Optional headers
|
|
63
66
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
64
67
|
*/
|
|
@@ -90,12 +93,13 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
90
93
|
});
|
|
91
94
|
},
|
|
92
95
|
/**
|
|
93
|
-
* POST /prisma-terminals/payments/:id/refunds - create refund.
|
|
96
|
+
* POST /prisma-terminals/payments/:id/refunds - create refund.
|
|
94
97
|
* @param {Object} opts
|
|
95
98
|
* @param {string} [opts.token] - API key
|
|
96
99
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
97
|
-
* @param {string} opts.id - Payment id
|
|
100
|
+
* @param {string} opts.id - Payment id (prismaPaymentId)
|
|
98
101
|
* @param {Object} opts.prismaRefund - Prisma refund payload
|
|
102
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
99
103
|
* @param {Object} [opts.headers] - Optional headers
|
|
100
104
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
101
105
|
*/
|
|
@@ -109,11 +113,12 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
109
113
|
});
|
|
110
114
|
},
|
|
111
115
|
/**
|
|
112
|
-
* DELETE /prisma-terminals/refunds/:id - delete refund.
|
|
116
|
+
* DELETE /prisma-terminals/refunds/:id - delete refund.
|
|
113
117
|
* @param {Object} opts
|
|
114
118
|
* @param {string} [opts.token] - API key
|
|
115
119
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
116
|
-
* @param {string} opts.id - Refund id
|
|
120
|
+
* @param {string} opts.id - Refund id (prismaPaymentId)
|
|
121
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
117
122
|
* @param {Object} [opts.headers] - Optional headers
|
|
118
123
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
119
124
|
*/
|
|
@@ -165,11 +170,12 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
165
170
|
});
|
|
166
171
|
},
|
|
167
172
|
/**
|
|
168
|
-
* POST /prisma-terminals/payments - create payment.
|
|
173
|
+
* POST /prisma-terminals/payments - create payment.
|
|
169
174
|
* @param {Object} opts
|
|
170
175
|
* @param {string} [opts.token] - API key
|
|
171
176
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
172
177
|
* @param {Object} opts.prismaPayment - Prisma payment payload
|
|
178
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
173
179
|
* @param {Object} [opts.headers] - Optional headers
|
|
174
180
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
175
181
|
*/
|
|
@@ -183,11 +189,12 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
183
189
|
});
|
|
184
190
|
},
|
|
185
191
|
/**
|
|
186
|
-
* DELETE /prisma-terminals/payments/:id - delete payment.
|
|
192
|
+
* DELETE /prisma-terminals/payments/:id - delete payment.
|
|
187
193
|
* @param {Object} opts
|
|
188
194
|
* @param {string} [opts.token] - API key
|
|
189
195
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
190
|
-
* @param {string} opts.id - Payment id
|
|
196
|
+
* @param {string} opts.id - Payment id (prismaPaymentId)
|
|
197
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
191
198
|
* @param {Object} [opts.headers] - Optional headers
|
|
192
199
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
193
200
|
*/
|
|
@@ -200,12 +207,13 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
200
207
|
});
|
|
201
208
|
},
|
|
202
209
|
/**
|
|
203
|
-
* PUT /prisma-terminals/payments/:id - update payment
|
|
210
|
+
* PUT /prisma-terminals/payments/:id - update payment (hidden in API docs).
|
|
204
211
|
* @param {Object} opts
|
|
205
212
|
* @param {string} [opts.token] - API key
|
|
206
213
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
207
|
-
* @param {string} opts.id - Payment id
|
|
214
|
+
* @param {string} opts.id - Payment id (prismaPaymentId)
|
|
208
215
|
* @param {Object} opts.prismaPayment - Prisma payment payload
|
|
216
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId, validatePayment)
|
|
209
217
|
* @param {Object} [opts.headers] - Optional headers
|
|
210
218
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
211
219
|
*/
|
|
@@ -224,11 +232,12 @@ function prismaTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
224
232
|
|
|
225
233
|
const settlements = {
|
|
226
234
|
/**
|
|
227
|
-
* POST /prisma-terminals/settlements - create settlement.
|
|
235
|
+
* POST /prisma-terminals/settlements - create settlement.
|
|
228
236
|
* @param {Object} opts
|
|
229
237
|
* @param {string} [opts.token] - API key
|
|
230
238
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
231
239
|
* @param {Object} opts.settlement - Settlement payload
|
|
240
|
+
* @param {PrismaTerminalsQuery} [opts.query] - Query params (providerId)
|
|
232
241
|
* @param {Object} [opts.headers] - Optional headers
|
|
233
242
|
* @returns {Promise<import("axios").AxiosResponse>}
|
|
234
243
|
*/
|
|
@@ -15,14 +15,14 @@ const {authorizationHeaders} = require("./../endpoints_helpers.js");
|
|
|
15
15
|
*/
|
|
16
16
|
function referencedPaymentsFactory({client, internalAuthTokenProvider}) {
|
|
17
17
|
/**
|
|
18
|
-
* GET /referenced-payments/:transactionId/:referenceNumber/status - get status.
|
|
18
|
+
* GET /referenced-payments/:transactionId/:referenceNumber/status - get referenced payment status. Requires backoffice auth. Response body: { paymentResult: { status, result } | null }.
|
|
19
19
|
* @param {Object} opts
|
|
20
20
|
* @param {string} [opts.token] - API key
|
|
21
21
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
22
|
-
* @param {string} opts.transactionId - Transaction
|
|
23
|
-
* @param {string} opts.referenceNumber - Reference number
|
|
22
|
+
* @param {string} opts.transactionId - Transaction ID
|
|
23
|
+
* @param {string} opts.referenceNumber - Reference number of the payment
|
|
24
24
|
* @param {Object} [opts.headers] - Optional headers
|
|
25
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
25
|
+
* @returns {Promise<import("axios").AxiosResponse<{ paymentResult: { status: "error"|"pending"|"success"|"review", result: object } | null }>>}
|
|
26
26
|
*/
|
|
27
27
|
function getStatus({token, jwtToken, transactionId, referenceNumber, headers}) {
|
|
28
28
|
return client.get(`/referenced-payments/${transactionId}/${referenceNumber}/status`, {
|
|
@@ -3,7 +3,7 @@ const {
|
|
|
3
3
|
} = require("./../endpoints_helpers.js");
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Factory for Square webhooks API (btrz-api-payments).
|
|
6
|
+
* Factory for Square webhooks API (btrz-api-payments). Used to forward or simulate Square webhook requests to the Payments API.
|
|
7
7
|
* @param {Object} deps
|
|
8
8
|
* @param {import("axios").AxiosInstance} deps.client
|
|
9
9
|
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
@@ -11,14 +11,14 @@ const {
|
|
|
11
11
|
*/
|
|
12
12
|
function squareWebhooksFactory({client, internalAuthTokenProvider}) {
|
|
13
13
|
/**
|
|
14
|
-
* POST /square-webhooks/:providerId -
|
|
14
|
+
* POST /square-webhooks/:providerId - send Square webhook payload to the Payments API. API verifies x-square-signature when present. Body must include type and data (Square webhook format).
|
|
15
15
|
* @param {Object} opts
|
|
16
16
|
* @param {string} [opts.token] - API key
|
|
17
17
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
18
|
-
* @param {string} opts.providerId - Provider
|
|
19
|
-
* @param {Object} opts.data - Request body
|
|
20
|
-
* @param {Object} [opts.headers] - Optional headers
|
|
21
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
18
|
+
* @param {string} opts.providerId - Provider ID (square_terminal payment method owner)
|
|
19
|
+
* @param {Object} opts.data - Request body (Square webhook payload: type, data required; optional merchant_id, event_id, created_at)
|
|
20
|
+
* @param {Object} [opts.headers] - Optional headers (e.g. x-square-signature for verification)
|
|
21
|
+
* @returns {Promise<import("axios").AxiosResponse<{ status: "OK" }>>}
|
|
22
22
|
*/
|
|
23
23
|
function create({token, jwtToken, data, providerId, headers}) {
|
|
24
24
|
return client({
|
|
@@ -43,12 +43,12 @@ function squareWebhooksFactory({client, internalAuthTokenProvider}) {
|
|
|
43
43
|
*/
|
|
44
44
|
function squareTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
45
45
|
/**
|
|
46
|
-
* GET /square-terminals -
|
|
46
|
+
* GET /square-terminals - list Square terminals for the account. Requires JWT (BETTEREZ_APP or MOBILE_SCANNER). Response body: { terminals } with terminal objects (id, name, code, deviceId, productType, locationId, status, pairBy, createdAt, statusChangedAt).
|
|
47
47
|
* @param {Object} opts
|
|
48
48
|
* @param {string} [opts.token] - API key
|
|
49
49
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
50
50
|
* @param {Object} [opts.headers] - Optional headers
|
|
51
|
-
* @returns {Promise<import("axios").AxiosResponse>}
|
|
51
|
+
* @returns {Promise<import("axios").AxiosResponse<{ terminals: Array<{ id: string, name: string, code: string, deviceId?: string, productType?: string, locationId: string, status?: string, pairBy?: string, createdAt?: string, statusChangedAt?: string }> }>>}
|
|
52
52
|
*/
|
|
53
53
|
function get({token, jwtToken, headers}) {
|
|
54
54
|
return client.get("/square-terminals", {
|
|
@@ -5,7 +5,15 @@ const {
|
|
|
5
5
|
/**
|
|
6
6
|
* Query params for GET /stripe-terminals (btrz-api-payments). See get-handler getSpec().
|
|
7
7
|
* @typedef {Object} StripeTerminalsListQuery
|
|
8
|
-
* @property {string} [providerId] - Account provider (operator) ID; used by agencies/sellers
|
|
8
|
+
* @property {string} [providerId] - Account provider (operator) ID; used by agencies/sellers; when omitted, authenticated account ID is used
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Response for GET /stripe-terminals. Paginated list of Stripe readers.
|
|
13
|
+
* @typedef {Object} GetStripeTerminalsResponse
|
|
14
|
+
* @property {Object[]} stripeTerminals - Stripe Terminal reader objects (id, label, serial_number, status, etc.)
|
|
15
|
+
* @property {string} next - Next page link; empty if no next page
|
|
16
|
+
* @property {string} previous - Previous page link; empty if no previous page
|
|
9
17
|
*/
|
|
10
18
|
|
|
11
19
|
/**
|
|
@@ -17,13 +25,13 @@ const {
|
|
|
17
25
|
*/
|
|
18
26
|
function stripeTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
19
27
|
/**
|
|
20
|
-
* GET /stripe-terminals - list Stripe
|
|
28
|
+
* GET /stripe-terminals - list Stripe Terminal readers for the account (paginated).
|
|
21
29
|
* @param {Object} opts
|
|
22
30
|
* @param {string} [opts.token] - API key
|
|
23
31
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
24
|
-
* @param {StripeTerminalsListQuery} [opts.query] -
|
|
32
|
+
* @param {StripeTerminalsListQuery} [opts.query] - Optional providerId
|
|
25
33
|
* @param {Object} [opts.headers] - Optional headers
|
|
26
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
34
|
+
* @returns {Promise<import("axios").AxiosResponse<GetStripeTerminalsResponse>>} Rejects with 400 (STRIPE_SECRET_KEY_INVALID), 401, 404 (PAYMENT_METHOD_NOT_FOUND), 500.
|
|
27
35
|
*/
|
|
28
36
|
function all({token, jwtToken, headers, query = {}}) {
|
|
29
37
|
return client.get("/stripe-terminals", {
|
|
@@ -35,21 +43,20 @@ function stripeTerminalsFactory({client, internalAuthTokenProvider}) {
|
|
|
35
43
|
}
|
|
36
44
|
|
|
37
45
|
/**
|
|
38
|
-
* POST /stripe-terminals/:
|
|
46
|
+
* POST /stripe-terminals/:terminalId/simulate - simulate a payment on a Stripe Terminal reader. API does not accept query params.
|
|
39
47
|
* @param {Object} opts
|
|
40
48
|
* @param {string} [opts.token] - API key
|
|
41
49
|
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
42
|
-
* @param {string} opts.id - Terminal id
|
|
43
|
-
* @param {
|
|
50
|
+
* @param {string} opts.id - Terminal ID (Stripe reader id, e.g. tmr_xxx)
|
|
51
|
+
* @param {{ ccNumber: string }} opts.stripePayment - Payment to simulate; ccNumber required
|
|
44
52
|
* @param {Object} [opts.headers] - Optional headers
|
|
45
|
-
* @returns {Promise<import("axios").AxiosResponse
|
|
53
|
+
* @returns {Promise<import("axios").AxiosResponse<{ stripeTerminalPayment: Object }>>} Rejects with 400 (WRONG_DATA), 401, 404 (PAYMENT_METHOD_NOT_FOUND, TRANSACTION_NOT_FOUND), 409 (errorCode/errorMessage), 500.
|
|
46
54
|
*/
|
|
47
|
-
function simulate({token, jwtToken, id, stripePayment,
|
|
55
|
+
function simulate({token, jwtToken, id, stripePayment, headers}) {
|
|
48
56
|
return client({
|
|
49
57
|
url: `/stripe-terminals/${id}/simulate`,
|
|
50
58
|
method: "post",
|
|
51
59
|
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
|
|
52
|
-
params: query,
|
|
53
60
|
data: {stripePayment}
|
|
54
61
|
});
|
|
55
62
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
const {authorizationHeaders} = require("../endpoints_helpers.js");
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Request body for POST /stripe-payment-intent (btrz-api-payments). PaymentIntentPostData.
|
|
6
|
+
* @typedef {Object} PaymentIntentPostData
|
|
7
|
+
* @property {string} providerName - Provider name (e.g. "stripe") used to resolve the payment method with Stripe 3DS
|
|
8
|
+
* @property {Object} data - Payment data: card details, amount, currency, transactionId, customer info, etc.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Factory for Stripe 3DS API (btrz-api-payments): create Stripe Payment Intent for 3DS flows.
|
|
13
|
+
* @param {Object} deps
|
|
14
|
+
* @param {import("axios").AxiosInstance} deps.client
|
|
15
|
+
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
16
|
+
* @returns {{ createPaymentIntent: function }}
|
|
17
|
+
*/
|
|
18
|
+
function stripe3dsFactory({client, internalAuthTokenProvider}) {
|
|
19
|
+
/**
|
|
20
|
+
* POST /stripe-payment-intent - creates a Stripe Payment Intent for 3DS; returns requires_action and payment_intent_client_secret.
|
|
21
|
+
* @param {Object} opts
|
|
22
|
+
* @param {string} [opts.token] - API key
|
|
23
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
24
|
+
* @param {string} opts.providerName - Provider name (e.g. "stripe")
|
|
25
|
+
* @param {Object} opts.data - Payment data (card, amount, currency, transactionId, etc.)
|
|
26
|
+
* @param {Object} [opts.headers] - Optional request headers
|
|
27
|
+
* @returns {Promise<import("axios").AxiosResponse<{ requires_action: boolean, payment_intent_client_secret: string }>>} PaymentIntentResponse. Rejects with 400 (WRONG_DATA, PAYMENT_INTENT_MISSING_PAYMENT_DATA, PAYMENT_INTENT_MISSING_PROVIDER, PROVIDER_NOT_FOUND, MISSING_PAYMENT_METHOD_PARAMS, PAYMENT_METHOD_NOT_FOUND, STRIPE_MISSING_PRIVATE_KEY, MISSING_PAYMENT_DATA), 401, 500.
|
|
28
|
+
*/
|
|
29
|
+
function createPaymentIntent({token, jwtToken, providerName, data, headers}) {
|
|
30
|
+
return client.post("/stripe-payment-intent", {providerName, data}, {
|
|
31
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
createPaymentIntent
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = stripe3dsFactory;
|