@develit-services/bank 0.8.8 → 0.8.10
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 +150 -275
- package/dist/database/schema.cjs +1 -1
- package/dist/database/schema.d.cts +2 -2
- package/dist/database/schema.d.mts +2 -2
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.mjs +1 -1
- package/dist/export/worker.cjs +405 -549
- package/dist/export/worker.d.cts +855 -86
- package/dist/export/worker.d.mts +855 -86
- package/dist/export/worker.d.ts +855 -86
- package/dist/export/worker.mjs +405 -549
- package/dist/export/workflows.cjs +16 -16
- package/dist/export/workflows.mjs +16 -16
- package/dist/export/wrangler.cjs +0 -12
- package/dist/export/wrangler.d.cts +1 -8
- package/dist/export/wrangler.d.mts +1 -8
- package/dist/export/wrangler.d.ts +1 -8
- package/dist/export/wrangler.mjs +0 -12
- package/dist/shared/{bank.JVlyPAAb.cjs → bank.BBXoZ5QU.cjs} +26 -13
- package/dist/shared/{bank.DRTuKO8S.d.ts → bank.BCop1cDT.d.mts} +4 -15
- package/dist/shared/{bank.Bg3Pdwm4.cjs → bank.BsIiXsFH.cjs} +5 -13
- package/dist/shared/{bank.BoZtXQpG.mjs → bank.CR0UlyRi.mjs} +1 -1
- package/dist/shared/{bank.CtnsGHM8.cjs → bank.CUvVxlHy.cjs} +126 -152
- package/dist/shared/{bank.DJnDSYqE.cjs → bank.CVi6R7fr.cjs} +1 -1
- package/dist/shared/{bank.C6jjS1Pl.mjs → bank.CXBeULUL.mjs} +25 -14
- package/dist/shared/{bank.DT6bg8k5.cjs → bank.Cev1E9sk.cjs} +2 -2
- package/dist/shared/{bank.B-NJB8GB.d.cts → bank.Cj2Goq7s.d.cts} +104 -176
- package/dist/shared/{bank.B-NJB8GB.d.mts → bank.Cj2Goq7s.d.mts} +104 -176
- package/dist/shared/{bank.B-NJB8GB.d.ts → bank.Cj2Goq7s.d.ts} +104 -176
- package/dist/shared/{bank.BzobShUU.d.cts → bank.CjTfEd1Q.d.cts} +4 -15
- package/dist/shared/{bank.BtszLapg.mjs → bank.D-O_gmmZ.mjs} +127 -152
- package/dist/shared/{bank.BP_3WMIF.d.cts → bank.DMjtitKo.d.cts} +0 -1
- package/dist/shared/{bank.BP_3WMIF.d.mts → bank.DMjtitKo.d.mts} +0 -1
- package/dist/shared/{bank.BP_3WMIF.d.ts → bank.DMjtitKo.d.ts} +0 -1
- package/dist/shared/{bank.CAVvvZZO.d.mts → bank.OlDt7dpb.d.ts} +4 -15
- package/dist/shared/{bank.CbAwwIhZ.mjs → bank.vz1uqEYa.mjs} +5 -11
- package/dist/shared/{bank.B5bZRvgq.mjs → bank.xB9eTN77.mjs} +2 -2
- package/dist/types.cjs +6 -6
- package/dist/types.d.cts +26 -45
- package/dist/types.d.mts +26 -45
- package/dist/types.d.ts +26 -45
- package/dist/types.mjs +3 -3
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { uuidv4, createInternalError, useResult } from '@develit-io/backend-sdk';
|
|
2
2
|
import { format, parseISO } from 'date-fns';
|
|
3
3
|
import { CURRENCY_CODES } from '@develit-io/general-codes';
|
|
4
|
-
import './bank.
|
|
4
|
+
import './bank.CXBeULUL.mjs';
|
|
5
5
|
import 'drizzle-orm';
|
|
6
6
|
import { importPKCS8, SignJWT } from 'jose';
|
|
7
7
|
import 'node:crypto';
|
|
@@ -12,10 +12,9 @@ function toIncomingPayment(input) {
|
|
|
12
12
|
correlationId: input.correlationId,
|
|
13
13
|
refId: input.refId,
|
|
14
14
|
amount: input.amount,
|
|
15
|
-
direction: "OUTGOING",
|
|
16
15
|
paymentType: input.paymentType,
|
|
17
16
|
currency: input.currency,
|
|
18
|
-
status: "
|
|
17
|
+
status: "OPENED",
|
|
19
18
|
statusReason: null,
|
|
20
19
|
batchId: null,
|
|
21
20
|
initiatedAt: null,
|
|
@@ -47,7 +46,7 @@ function toBatchedPayment(payment) {
|
|
|
47
46
|
function toPreparedPayment(payment, bankRefId, initiatedAt) {
|
|
48
47
|
return {
|
|
49
48
|
...payment,
|
|
50
|
-
status: "
|
|
49
|
+
status: "OPENED",
|
|
51
50
|
bankRefId,
|
|
52
51
|
initiatedAt: initiatedAt ?? /* @__PURE__ */ new Date()
|
|
53
52
|
};
|
|
@@ -71,7 +70,7 @@ function toPaymentRequestInsert(payment, batchId) {
|
|
|
71
70
|
amount: payment.amount,
|
|
72
71
|
paymentType: payment.paymentType,
|
|
73
72
|
currency: payment.currency,
|
|
74
|
-
status: "
|
|
73
|
+
status: "OPENED",
|
|
75
74
|
vs: payment.vs ?? null,
|
|
76
75
|
ss: payment.ss ?? null,
|
|
77
76
|
ks: payment.ks ?? null,
|
|
@@ -93,10 +92,9 @@ function toBatchedPaymentFromPaymentRequest(sp) {
|
|
|
93
92
|
accountId: sp.accountId,
|
|
94
93
|
connectorKey: sp.connectorKey,
|
|
95
94
|
amount: sp.amount,
|
|
96
|
-
direction: "OUTGOING",
|
|
97
95
|
paymentType: sp.paymentType,
|
|
98
96
|
currency: sp.currency,
|
|
99
|
-
status: "
|
|
97
|
+
status: "OPENED",
|
|
100
98
|
statusReason: sp.statusReason,
|
|
101
99
|
batchId: sp.batchId,
|
|
102
100
|
initiatedAt: sp.initiatedAt,
|
|
@@ -352,43 +350,25 @@ const FINBRICKS_ENDPOINTS = {
|
|
|
352
350
|
const mapFinbricksStatus = (status) => {
|
|
353
351
|
switch (status) {
|
|
354
352
|
case "BOOK":
|
|
355
|
-
return "
|
|
353
|
+
return "BOOKED";
|
|
356
354
|
case "PDNG":
|
|
357
355
|
return "PENDING";
|
|
358
356
|
case "CANCL":
|
|
359
|
-
return "
|
|
357
|
+
return "CANCELLED";
|
|
360
358
|
case "RJCT":
|
|
361
|
-
return "
|
|
359
|
+
return "REJECTED";
|
|
362
360
|
case "SCHDL":
|
|
363
|
-
return "
|
|
361
|
+
return "SCHEDULED";
|
|
364
362
|
case "HOLD":
|
|
365
|
-
return "
|
|
363
|
+
return "HOLD";
|
|
366
364
|
case "INFO":
|
|
367
|
-
return "
|
|
365
|
+
return "INFO";
|
|
368
366
|
default:
|
|
369
367
|
return "PENDING";
|
|
370
368
|
}
|
|
371
369
|
};
|
|
372
|
-
const mapFinbricksTransactionStatus = (status
|
|
373
|
-
|
|
374
|
-
case "OPENED":
|
|
375
|
-
return "PREPARED";
|
|
376
|
-
case "AUTHORIZED":
|
|
377
|
-
return finalBankStatus ? "COMPLETED" : "PENDING";
|
|
378
|
-
case "COMPLETED":
|
|
379
|
-
return finalBankStatus ? "COMPLETED" : "PENDING";
|
|
380
|
-
case "BOOKED":
|
|
381
|
-
return finalBankStatus ? "COMPLETED" : "PENDING";
|
|
382
|
-
case "SETTLED":
|
|
383
|
-
return "COMPLETED";
|
|
384
|
-
case "REJECTED":
|
|
385
|
-
return "FAILED";
|
|
386
|
-
case "CLOSED":
|
|
387
|
-
return "FAILED";
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
const mapFinbricksBatchStatus = (status) => {
|
|
391
|
-
return status === "REJECTED" ? "SIGNATURE_FAILED" : status === "AUTHORIZED" ? "SIGNED" : void 0;
|
|
370
|
+
const mapFinbricksTransactionStatus = (status) => {
|
|
371
|
+
return status;
|
|
392
372
|
};
|
|
393
373
|
|
|
394
374
|
const mapFinbricksAccountInsert = ({
|
|
@@ -551,7 +531,6 @@ class FinbricksConnector extends IBankConnector {
|
|
|
551
531
|
}) {
|
|
552
532
|
super();
|
|
553
533
|
this.connectorKey = "FINBRICKS";
|
|
554
|
-
this.lifecycleMode = "batch";
|
|
555
534
|
this.connectedAccounts = [];
|
|
556
535
|
this.PROVIDER = provider;
|
|
557
536
|
this.finbricks = new FinbricksClient(
|
|
@@ -821,7 +800,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
821
800
|
},
|
|
822
801
|
creditorName: payment.creditor.holderName || ""
|
|
823
802
|
},
|
|
824
|
-
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=
|
|
803
|
+
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`
|
|
825
804
|
}
|
|
826
805
|
})
|
|
827
806
|
);
|
|
@@ -837,7 +816,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
837
816
|
payment: {
|
|
838
817
|
...payment,
|
|
839
818
|
bankRefId,
|
|
840
|
-
status: "
|
|
819
|
+
status: "OPENED",
|
|
841
820
|
initiatedAt: /* @__PURE__ */ new Date(),
|
|
842
821
|
accountId: this.connectedAccounts.find(
|
|
843
822
|
(acc) => acc.iban === payment.debtorIban
|
|
@@ -875,7 +854,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
875
854
|
creditorAccountIban: payment.creditor.iban,
|
|
876
855
|
creditorName: payment.creditor.holderName
|
|
877
856
|
},
|
|
878
|
-
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=
|
|
857
|
+
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`
|
|
879
858
|
}
|
|
880
859
|
})
|
|
881
860
|
);
|
|
@@ -891,7 +870,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
891
870
|
payment: {
|
|
892
871
|
...payment,
|
|
893
872
|
bankRefId,
|
|
894
|
-
status: "
|
|
873
|
+
status: "OPENED",
|
|
895
874
|
initiatedAt: /* @__PURE__ */ new Date(),
|
|
896
875
|
accountId: this.connectedAccounts.find(
|
|
897
876
|
(acc) => acc.iban === payment.debtorIban
|
|
@@ -914,7 +893,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
914
893
|
creditorName: payment.creditor.holderName,
|
|
915
894
|
description: payment.message,
|
|
916
895
|
variableSymbol: payment.vs ?? (payment.ss ? void 0 : autoVariableSymbol(payment.id)),
|
|
917
|
-
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=
|
|
896
|
+
callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`,
|
|
918
897
|
paymentProvider: this.PROVIDER
|
|
919
898
|
}
|
|
920
899
|
})
|
|
@@ -930,7 +909,7 @@ class FinbricksConnector extends IBankConnector {
|
|
|
930
909
|
authorizationUrl: response.redirectUrl,
|
|
931
910
|
payment: {
|
|
932
911
|
...payment,
|
|
933
|
-
status: "
|
|
912
|
+
status: "OPENED",
|
|
934
913
|
initiatedAt: /* @__PURE__ */ new Date()
|
|
935
914
|
}
|
|
936
915
|
};
|
|
@@ -1004,37 +983,32 @@ class FinbricksConnector extends IBankConnector {
|
|
|
1004
983
|
message: "Finbricks: failed to fetch payment status"
|
|
1005
984
|
});
|
|
1006
985
|
}
|
|
1007
|
-
return mapFinbricksTransactionStatus(
|
|
1008
|
-
response.resultCode,
|
|
1009
|
-
response.finalBankStatus ?? false
|
|
1010
|
-
);
|
|
986
|
+
return mapFinbricksTransactionStatus(response.resultCode);
|
|
1011
987
|
}
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
);
|
|
1026
|
-
if (
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
988
|
+
parseAuthorizationCallback(callbackUrl) {
|
|
989
|
+
const url = new URL(callbackUrl);
|
|
990
|
+
const params = url.searchParams;
|
|
991
|
+
const error = params.get("error");
|
|
992
|
+
if (error) {
|
|
993
|
+
return {
|
|
994
|
+
success: false,
|
|
995
|
+
error,
|
|
996
|
+
code: params.get("code")
|
|
997
|
+
};
|
|
998
|
+
}
|
|
999
|
+
const type = params.get("type");
|
|
1000
|
+
const paymentRequestId = params.get("paymentRequestId");
|
|
1001
|
+
const batchId = params.get("batchId");
|
|
1002
|
+
if (type === "paymentRequest" && paymentRequestId) {
|
|
1003
|
+
return { success: true, type: "paymentRequest", paymentRequestId };
|
|
1004
|
+
}
|
|
1005
|
+
if (type === "batch" && batchId) {
|
|
1006
|
+
return { success: true, type: "batch", batchId };
|
|
1030
1007
|
}
|
|
1031
|
-
const allAuthorized = response.payments.every(
|
|
1032
|
-
(p) => p.resultCode === "AUTHORIZED" || p.resultCode === "BOOKED" || p.resultCode === "SETTLED" || p.resultCode === "COMPLETED"
|
|
1033
|
-
);
|
|
1034
|
-
const status = allAuthorized ? "SIGNED" : mapFinbricksBatchStatus(response.batchResultCode) ?? currentStatus;
|
|
1035
1008
|
return {
|
|
1036
|
-
|
|
1037
|
-
|
|
1009
|
+
success: false,
|
|
1010
|
+
error: `Unknown callback format: type=${type}`,
|
|
1011
|
+
code: null
|
|
1038
1012
|
};
|
|
1039
1013
|
}
|
|
1040
1014
|
}
|
|
@@ -1060,7 +1034,6 @@ class AirBankConnector extends FinbricksConnector {
|
|
|
1060
1034
|
class CreditasConnector extends FinbricksConnector {
|
|
1061
1035
|
constructor(config) {
|
|
1062
1036
|
super("CREDITAS", config);
|
|
1063
|
-
this.lifecycleMode = "per-payment";
|
|
1064
1037
|
}
|
|
1065
1038
|
/**
|
|
1066
1039
|
* Creditas bank doesn't support batch payments at all.
|
|
@@ -1330,7 +1303,6 @@ class DbuConnector extends IBankConnector {
|
|
|
1330
1303
|
}) {
|
|
1331
1304
|
super();
|
|
1332
1305
|
this.connectorKey = "DBU";
|
|
1333
|
-
this.lifecycleMode = "per-payment";
|
|
1334
1306
|
this.connectedAccounts = [];
|
|
1335
1307
|
this.baseUrl = BASE_URL;
|
|
1336
1308
|
this.username = USERNAME;
|
|
@@ -1446,71 +1418,59 @@ class DbuConnector extends IBankConnector {
|
|
|
1446
1418
|
parsed
|
|
1447
1419
|
};
|
|
1448
1420
|
}
|
|
1449
|
-
|
|
1421
|
+
mapDbuStatusToPaymentRequestStatus(dbuStatus) {
|
|
1450
1422
|
const statusCode = dbuStatus.trim();
|
|
1451
1423
|
switch (statusCode) {
|
|
1424
|
+
// OPENED - New, waiting for authorization
|
|
1425
|
+
case "0":
|
|
1426
|
+
// RQT_STATUS_NEW
|
|
1427
|
+
case "50":
|
|
1428
|
+
// RQT_STATUS_4E (four-eye approval)
|
|
1429
|
+
case "51":
|
|
1430
|
+
return "OPENED";
|
|
1452
1431
|
// COMPLETED - Transaction is fully realized
|
|
1432
|
+
case "2":
|
|
1433
|
+
// RQT_STATUS_PARTIAL_REALIZED
|
|
1453
1434
|
case "3":
|
|
1454
1435
|
return "COMPLETED";
|
|
1455
|
-
//
|
|
1456
|
-
case "
|
|
1457
|
-
return "
|
|
1458
|
-
//
|
|
1459
|
-
case "
|
|
1460
|
-
//
|
|
1436
|
+
// CLOSED - Expired (timeout, not active rejection)
|
|
1437
|
+
case "14":
|
|
1438
|
+
return "CLOSED";
|
|
1439
|
+
// REJECTED - Cancelled, suspended, reverted, rejected
|
|
1440
|
+
case "10":
|
|
1441
|
+
// RQT_STATUS_CANCELLED
|
|
1442
|
+
case "12":
|
|
1443
|
+
// RQT_STATUS_SUSPENDED
|
|
1444
|
+
case "13":
|
|
1445
|
+
// RQT_STATUS_REVERTED
|
|
1446
|
+
case "15":
|
|
1447
|
+
// RQT_STATUS_REJECTED
|
|
1448
|
+
case "33":
|
|
1449
|
+
// RQT_STATUS_HD_CANCELLED
|
|
1450
|
+
case "39":
|
|
1451
|
+
return "REJECTED";
|
|
1452
|
+
// AUTHORIZED - All other processing states
|
|
1453
|
+
default:
|
|
1454
|
+
return "AUTHORIZED";
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
mapDbuStatusToPaymentStatus(dbuStatus) {
|
|
1458
|
+
const statusCode = dbuStatus.trim();
|
|
1459
|
+
switch (statusCode) {
|
|
1460
|
+
// BOOKED - Realized
|
|
1461
1461
|
case "2":
|
|
1462
1462
|
// RQT_STATUS_PARTIAL_REALIZED
|
|
1463
|
+
case "3":
|
|
1464
|
+
return "BOOKED";
|
|
1465
|
+
// HOLD - Held/blocked
|
|
1463
1466
|
case "4":
|
|
1464
1467
|
// RQT_STATUS_PARTIAL_HOLDED
|
|
1465
1468
|
case "5":
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
// RQT_STATUS_WAIT_FOR_COT
|
|
1469
|
-
case "11":
|
|
1470
|
-
// RQT_STATUS_UNHOLDED
|
|
1471
|
-
case "30":
|
|
1472
|
-
// RQT_STATUS_RQ_TO_HD
|
|
1473
|
-
case "31":
|
|
1474
|
-
// RQT_STATUS_RQ_TO_HD_SENT
|
|
1475
|
-
case "32":
|
|
1476
|
-
// RQT_STATUS_WAIT_TO_HD_VERIFY
|
|
1477
|
-
case "34":
|
|
1478
|
-
// RQT_STATUS_HD_NEW_COLLECTION
|
|
1479
|
-
case "35":
|
|
1480
|
-
// RQT_STATUS_HD_RQ_COLLECTION
|
|
1469
|
+
return "HOLD";
|
|
1470
|
+
// SCHEDULED - SIPO charge
|
|
1481
1471
|
case "40":
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
// RQT_STATUS_4E
|
|
1485
|
-
case "51":
|
|
1486
|
-
// RQT_STATUS_4E_EDIT
|
|
1487
|
-
case "60":
|
|
1488
|
-
// RQT_STATUS_READY_TO_CANCELLED
|
|
1489
|
-
case "61":
|
|
1490
|
-
// RQT_STATUS_READY_TO_UNHOLDED
|
|
1491
|
-
case "63":
|
|
1492
|
-
// RQT_STATUS_READY_TO_REVERTED
|
|
1493
|
-
case "64":
|
|
1494
|
-
// RQT_STATUS_CC_CREATED
|
|
1495
|
-
case "65":
|
|
1496
|
-
// RQT_STATUS_CC_WAIT_FOR_RATE
|
|
1497
|
-
case "66":
|
|
1498
|
-
// RQT_STATUS_WAIT_FOR_DEBTOR
|
|
1499
|
-
case "70":
|
|
1500
|
-
// RQT_STATUS_RQ_TO_SEPA
|
|
1501
|
-
case "71":
|
|
1502
|
-
// RQT_STATUS_RQ_TO_SEPA_SENT
|
|
1503
|
-
case "72":
|
|
1504
|
-
// RQT_STATUS_RQ_TO_SEPA_CNC
|
|
1505
|
-
case "73":
|
|
1506
|
-
// RQT_STATUS_RQ_TO_SEPA_CNC_URG
|
|
1507
|
-
case "74":
|
|
1508
|
-
// RQT_STATUS_RQ_TO_SEPA_CNC_CLIENT
|
|
1509
|
-
case "75":
|
|
1510
|
-
// RQT_STATUS_RQ_TO_SEPA_056
|
|
1511
|
-
case "80":
|
|
1512
|
-
return "PENDING";
|
|
1513
|
-
// FAILED - Transaction is cancelled, rejected, reverted, suspended or expired
|
|
1472
|
+
return "SCHEDULED";
|
|
1473
|
+
// CANCELLED - Cancelled, suspended, reverted, expired
|
|
1514
1474
|
case "10":
|
|
1515
1475
|
// RQT_STATUS_CANCELLED
|
|
1516
1476
|
case "12":
|
|
@@ -1519,13 +1479,14 @@ class DbuConnector extends IBankConnector {
|
|
|
1519
1479
|
// RQT_STATUS_REVERTED
|
|
1520
1480
|
case "14":
|
|
1521
1481
|
// RQT_STATUS_EXPIRED
|
|
1522
|
-
case "15":
|
|
1523
|
-
// RQT_STATUS_REJECTED
|
|
1524
1482
|
case "33":
|
|
1525
1483
|
// RQT_STATUS_HD_CANCELLED
|
|
1526
1484
|
case "39":
|
|
1527
|
-
return "
|
|
1528
|
-
//
|
|
1485
|
+
return "CANCELLED";
|
|
1486
|
+
// REJECTED - Explicitly rejected by bank
|
|
1487
|
+
case "15":
|
|
1488
|
+
return "REJECTED";
|
|
1489
|
+
// PENDING - All other processing states
|
|
1529
1490
|
default:
|
|
1530
1491
|
return "PENDING";
|
|
1531
1492
|
}
|
|
@@ -1620,7 +1581,7 @@ class DbuConnector extends IBankConnector {
|
|
|
1620
1581
|
authorizationUrl: `${this.txAuthUri}/${bankRefId}`,
|
|
1621
1582
|
payment: {
|
|
1622
1583
|
...payment,
|
|
1623
|
-
status: "
|
|
1584
|
+
status: "OPENED",
|
|
1624
1585
|
bankRefId
|
|
1625
1586
|
}
|
|
1626
1587
|
};
|
|
@@ -1674,7 +1635,7 @@ class DbuConnector extends IBankConnector {
|
|
|
1674
1635
|
authorizationUrl: `${this.txAuthUri}/${bankRefId}`,
|
|
1675
1636
|
payment: {
|
|
1676
1637
|
...payment,
|
|
1677
|
-
status: "
|
|
1638
|
+
status: "OPENED",
|
|
1678
1639
|
bankRefId
|
|
1679
1640
|
}
|
|
1680
1641
|
};
|
|
@@ -1771,14 +1732,28 @@ class DbuConnector extends IBankConnector {
|
|
|
1771
1732
|
`/required-transactions/${paymentId}`,
|
|
1772
1733
|
uuidv4()
|
|
1773
1734
|
);
|
|
1774
|
-
return this.
|
|
1735
|
+
return this.mapDbuStatusToPaymentRequestStatus(response.status);
|
|
1775
1736
|
}
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1737
|
+
parseAuthorizationCallback(callbackUrl) {
|
|
1738
|
+
const url = new URL(callbackUrl);
|
|
1739
|
+
const params = url.searchParams;
|
|
1740
|
+
const error = params.get("error");
|
|
1741
|
+
if (error) {
|
|
1742
|
+
return { success: false, error, code: params.get("code") };
|
|
1743
|
+
}
|
|
1744
|
+
const type = params.get("type");
|
|
1745
|
+
const paymentRequestId = params.get("paymentRequestId");
|
|
1746
|
+
const batchId = params.get("batchId");
|
|
1747
|
+
if (type === "paymentRequest" && paymentRequestId) {
|
|
1748
|
+
return { success: true, type: "paymentRequest", paymentRequestId };
|
|
1749
|
+
}
|
|
1750
|
+
if (type === "batch" && batchId) {
|
|
1751
|
+
return { success: true, type: "batch", batchId };
|
|
1752
|
+
}
|
|
1779
1753
|
return {
|
|
1780
|
-
|
|
1781
|
-
|
|
1754
|
+
success: false,
|
|
1755
|
+
error: `Unknown callback format: type=${type}`,
|
|
1756
|
+
code: null
|
|
1782
1757
|
};
|
|
1783
1758
|
}
|
|
1784
1759
|
}
|
|
@@ -1787,7 +1762,6 @@ class ErsteConnector extends IBankConnector {
|
|
|
1787
1762
|
constructor(config) {
|
|
1788
1763
|
super();
|
|
1789
1764
|
this.connectorKey = "ERSTE";
|
|
1790
|
-
this.lifecycleMode = "batch";
|
|
1791
1765
|
this.accessToken = null;
|
|
1792
1766
|
this.API_KEY = config.API_KEY;
|
|
1793
1767
|
this.CLIENT_ID = config.CLIENT_ID;
|
|
@@ -1924,9 +1898,8 @@ class ErsteConnector extends IBankConnector {
|
|
|
1924
1898
|
return {
|
|
1925
1899
|
...payment,
|
|
1926
1900
|
bankRefId: erstePayment.paymentIdentification.transactionIdentification,
|
|
1927
|
-
direction: "OUTGOING",
|
|
1928
1901
|
paymentType: payment.paymentType,
|
|
1929
|
-
status: "
|
|
1902
|
+
status: "OPENED",
|
|
1930
1903
|
initiatedAt: /* @__PURE__ */ new Date(),
|
|
1931
1904
|
accountId: this.connectedAccounts.find(
|
|
1932
1905
|
(acc) => acc.iban === payment.debtor.iban
|
|
@@ -2086,7 +2059,7 @@ class ErsteConnector extends IBankConnector {
|
|
|
2086
2059
|
ss: symbols.ss,
|
|
2087
2060
|
ks: symbols.ks,
|
|
2088
2061
|
processedAt: parseISO(payment.bookingDate.date),
|
|
2089
|
-
status: "
|
|
2062
|
+
status: "BOOKED"
|
|
2090
2063
|
};
|
|
2091
2064
|
return {
|
|
2092
2065
|
raw: payment,
|
|
@@ -2098,11 +2071,13 @@ class ErsteConnector extends IBankConnector {
|
|
|
2098
2071
|
});
|
|
2099
2072
|
return payments;
|
|
2100
2073
|
}
|
|
2101
|
-
getPaymentStatus(_) {
|
|
2102
|
-
throw new Error("
|
|
2074
|
+
async getPaymentStatus(_) {
|
|
2075
|
+
throw new Error("Erste connector: getPaymentStatus not implemented");
|
|
2103
2076
|
}
|
|
2104
|
-
|
|
2105
|
-
throw new Error(
|
|
2077
|
+
parseAuthorizationCallback(_callbackUrl) {
|
|
2078
|
+
throw new Error(
|
|
2079
|
+
"Erste connector: parseAuthorizationCallback not implemented"
|
|
2080
|
+
);
|
|
2106
2081
|
}
|
|
2107
2082
|
}
|
|
2108
2083
|
|
|
@@ -2119,7 +2094,6 @@ class MockConnector extends IBankConnector {
|
|
|
2119
2094
|
constructor() {
|
|
2120
2095
|
super();
|
|
2121
2096
|
this.connectorKey = "MOCK";
|
|
2122
|
-
this.lifecycleMode = "batch";
|
|
2123
2097
|
this.connectedAccounts = [];
|
|
2124
2098
|
}
|
|
2125
2099
|
supportsBatch(_paymentType) {
|
|
@@ -2141,7 +2115,7 @@ class MockConnector extends IBankConnector {
|
|
|
2141
2115
|
const preparedPayment = {
|
|
2142
2116
|
...payment,
|
|
2143
2117
|
bankRefId: uuidv4(),
|
|
2144
|
-
status: "
|
|
2118
|
+
status: "OPENED",
|
|
2145
2119
|
initiatedAt: /* @__PURE__ */ new Date()
|
|
2146
2120
|
};
|
|
2147
2121
|
return {
|
|
@@ -2163,7 +2137,7 @@ class MockConnector extends IBankConnector {
|
|
|
2163
2137
|
const preparedPayments = payments.map((payment) => ({
|
|
2164
2138
|
...payment,
|
|
2165
2139
|
bankRefId: uuidv4(),
|
|
2166
|
-
status: "
|
|
2140
|
+
status: "OPENED",
|
|
2167
2141
|
initiatedAt: /* @__PURE__ */ new Date()
|
|
2168
2142
|
}));
|
|
2169
2143
|
return {
|
|
@@ -2185,14 +2159,15 @@ class MockConnector extends IBankConnector {
|
|
|
2185
2159
|
return [];
|
|
2186
2160
|
}
|
|
2187
2161
|
async getPaymentStatus(_) {
|
|
2188
|
-
return "
|
|
2162
|
+
return "SETTLED";
|
|
2189
2163
|
}
|
|
2190
|
-
|
|
2164
|
+
parseAuthorizationCallback(_callbackUrl) {
|
|
2191
2165
|
return {
|
|
2192
|
-
|
|
2193
|
-
|
|
2166
|
+
success: true,
|
|
2167
|
+
type: "paymentRequest",
|
|
2168
|
+
paymentRequestId: "mock-pr-id"
|
|
2194
2169
|
};
|
|
2195
2170
|
}
|
|
2196
2171
|
}
|
|
2197
2172
|
|
|
2198
|
-
export { CsobConnector as C, DbuConnector as D, ErsteConnector as E, FINBRICKS_ENDPOINTS as F, IBankConnector as I, KBConnector as K, MockCobsConnector as M, FinbricksClient as a, FinbricksConnector as b, MockConnector as c, assignAccount as d, toBatchedPaymentFromPaymentRequest as e, toCompletedPayment as f, toIncomingPayment as g, toPaymentRequestInsert as h, toPreparedPayment as i, initiateConnector as j,
|
|
2173
|
+
export { CsobConnector as C, DbuConnector as D, ErsteConnector as E, FINBRICKS_ENDPOINTS as F, IBankConnector as I, KBConnector as K, MockCobsConnector as M, FinbricksClient as a, FinbricksConnector as b, MockConnector as c, assignAccount as d, toBatchedPaymentFromPaymentRequest as e, toCompletedPayment as f, toIncomingPayment as g, toPaymentRequestInsert as h, toPreparedPayment as i, initiateConnector as j, signFinbricksJws as s, toBatchedPayment as t, useFinbricksFetch as u };
|
|
@@ -26,7 +26,6 @@ interface BankServiceEnvironmentConfig {
|
|
|
26
26
|
ERSTE_ACCOUNTS_URI: 'https://webapi.developers.erstegroup.com/api/csas/public/sandbox/v3/accounts';
|
|
27
27
|
FINBRICKS_BASE_URI: 'https://api.sandbox.finbricks.com';
|
|
28
28
|
FINBRICKS_MERCHANT_ID: string;
|
|
29
|
-
CRON_BATCH_STATUSES: string;
|
|
30
29
|
CRON_PAYMENT_STATUSES: string;
|
|
31
30
|
BANK_AUTH_RECIPIENT: string;
|
|
32
31
|
DBUCS_BASE_URI: string;
|
|
@@ -26,7 +26,6 @@ interface BankServiceEnvironmentConfig {
|
|
|
26
26
|
ERSTE_ACCOUNTS_URI: 'https://webapi.developers.erstegroup.com/api/csas/public/sandbox/v3/accounts';
|
|
27
27
|
FINBRICKS_BASE_URI: 'https://api.sandbox.finbricks.com';
|
|
28
28
|
FINBRICKS_MERCHANT_ID: string;
|
|
29
|
-
CRON_BATCH_STATUSES: string;
|
|
30
29
|
CRON_PAYMENT_STATUSES: string;
|
|
31
30
|
BANK_AUTH_RECIPIENT: string;
|
|
32
31
|
DBUCS_BASE_URI: string;
|
|
@@ -26,7 +26,6 @@ interface BankServiceEnvironmentConfig {
|
|
|
26
26
|
ERSTE_ACCOUNTS_URI: 'https://webapi.developers.erstegroup.com/api/csas/public/sandbox/v3/accounts';
|
|
27
27
|
FINBRICKS_BASE_URI: 'https://api.sandbox.finbricks.com';
|
|
28
28
|
FINBRICKS_MERCHANT_ID: string;
|
|
29
|
-
CRON_BATCH_STATUSES: string;
|
|
30
29
|
CRON_PAYMENT_STATUSES: string;
|
|
31
30
|
BANK_AUTH_RECIPIENT: string;
|
|
32
31
|
DBUCS_BASE_URI: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as CurrencyCode,
|
|
1
|
+
import { d as CurrencyCode, O as BankCode, $ as CountryCode } from './bank.Cj2Goq7s.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
type ReferenceType = `${'VS' | 'SS' | 'KS'}:${number}`;
|
|
@@ -210,18 +210,6 @@ type FinbricksAccountTransactionsResponse = {
|
|
|
210
210
|
transactions: FinbricksTransaction[];
|
|
211
211
|
};
|
|
212
212
|
|
|
213
|
-
/**
|
|
214
|
-
* @deprecated Use IncomingPayment from './payment-lifecycle' instead
|
|
215
|
-
* This type is kept for backward compatibility during migration
|
|
216
|
-
*/
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Message pushed to PAYMENTS_READY_TO_BATCH_QUEUE after payment_request is created in DB
|
|
220
|
-
*/
|
|
221
|
-
type PaymentQueueMessage = {
|
|
222
|
-
paymentId: string;
|
|
223
|
-
};
|
|
224
|
-
|
|
225
213
|
declare const sendPaymentInputSchema: z.ZodObject<{
|
|
226
214
|
correlationId: z.ZodString;
|
|
227
215
|
refId: z.ZodOptional<z.ZodString>;
|
|
@@ -996,7 +984,8 @@ declare const sendPaymentInputSchema: z.ZodObject<{
|
|
|
996
984
|
interface SendPaymentInput extends z.infer<typeof sendPaymentInputSchema> {
|
|
997
985
|
}
|
|
998
986
|
type SendPaymentOutput = {
|
|
999
|
-
|
|
987
|
+
paymentRequestId: string;
|
|
988
|
+
authorizationUrl: string;
|
|
1000
989
|
};
|
|
1001
990
|
|
|
1002
991
|
declare const sendPaymentSyncInputSchema: z.ZodObject<{
|
|
@@ -1777,4 +1766,4 @@ type SendPaymentSyncOutput = {
|
|
|
1777
1766
|
authorizationUrl: string;
|
|
1778
1767
|
};
|
|
1779
1768
|
|
|
1780
|
-
export type { FinbricksSupportedBanksResponse as F,
|
|
1769
|
+
export type { FinbricksSupportedBanksResponse as F, ReferenceType as R, SendPaymentInput as S, SendPaymentOutput as a, SendPaymentSyncInput as b, SendPaymentSyncOutput as c, FinbricksAccount as d, FinbricksAccountTransactionsResponse as e, FinbricksAccountsListResponse as f, FinbricksAuthTokenResponse as g, FinbricksBatchResponse as h, FinbricksConnectAccountResponse as i, FinbricksPaymentResponse as j, FinbricksSupportedBank as k };
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
function hasPaymentAccountAssigned(payment) {
|
|
2
2
|
return "accountId" in payment && "connectorKey" in payment && payment.accountId !== void 0 && payment.connectorKey !== void 0;
|
|
3
3
|
}
|
|
4
|
-
function isPaymentPrepared(payment) {
|
|
5
|
-
return payment.status === "PREPARED";
|
|
6
|
-
}
|
|
7
4
|
function isPaymentCompleted(payment) {
|
|
8
|
-
return (payment.status === "COMPLETED" || payment.status === "
|
|
5
|
+
return (payment.status === "COMPLETED" || payment.status === "BOOKED" || payment.status === "SETTLED" || payment.status === "REJECTED" || payment.status === "CLOSED") && "bankRefId" in payment && typeof payment.bankRefId === "string";
|
|
9
6
|
}
|
|
10
7
|
|
|
11
8
|
function isBatchInitiated(batch) {
|
|
@@ -14,20 +11,17 @@ function isBatchInitiated(batch) {
|
|
|
14
11
|
function isBatchReadyToSign(batch) {
|
|
15
12
|
return "status" in batch && batch.status === "READY_TO_SIGN";
|
|
16
13
|
}
|
|
17
|
-
function
|
|
18
|
-
return "status" in batch && batch.status === "
|
|
14
|
+
function isBatchAuthorized(batch) {
|
|
15
|
+
return "status" in batch && batch.status === "AUTHORIZED";
|
|
19
16
|
}
|
|
20
17
|
function isBatchProcessing(batch) {
|
|
21
18
|
return "status" in batch && batch.status === "PROCESSING";
|
|
22
19
|
}
|
|
23
20
|
function isBatchCompleted(batch) {
|
|
24
|
-
return "status" in batch && (batch.status === "COMPLETED" || batch.status === "FAILED"
|
|
25
|
-
}
|
|
26
|
-
function isBatchOpen(batch) {
|
|
27
|
-
return "status" in batch && batch.status === "OPEN";
|
|
21
|
+
return "status" in batch && (batch.status === "COMPLETED" || batch.status === "FAILED");
|
|
28
22
|
}
|
|
29
23
|
function isBatchFailed(batch) {
|
|
30
24
|
return "status" in batch && batch.status === "FAILED";
|
|
31
25
|
}
|
|
32
26
|
|
|
33
|
-
export {
|
|
27
|
+
export { isBatchCompleted as a, isBatchFailed as b, isBatchInitiated as c, isBatchProcessing as d, isBatchReadyToSign as e, isPaymentCompleted as f, hasPaymentAccountAssigned as h, isBatchAuthorized as i };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { sql, and, eq, isNull } from 'drizzle-orm';
|
|
2
2
|
import { uuidv4 } from '@develit-io/backend-sdk';
|
|
3
|
-
import './bank.
|
|
3
|
+
import './bank.CXBeULUL.mjs';
|
|
4
4
|
import 'date-fns';
|
|
5
5
|
import 'jose';
|
|
6
6
|
import '@develit-io/general-codes';
|
|
7
7
|
import { createHash } from 'node:crypto';
|
|
8
|
-
import { s as schema } from './bank.
|
|
8
|
+
import { s as schema } from './bank.CR0UlyRi.mjs';
|
|
9
9
|
|
|
10
10
|
const createPaymentCommand = (db, { payment }) => {
|
|
11
11
|
return {
|