@stamhoofd/models 2.103.0 → 2.104.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.
|
@@ -6,7 +6,8 @@ export declare class PayconiqPayment extends QueryableModel {
|
|
|
6
6
|
id: string;
|
|
7
7
|
paymentId: string;
|
|
8
8
|
payconiqId: string;
|
|
9
|
-
|
|
9
|
+
getResponseStatus(response: any): PaymentStatus;
|
|
10
|
+
getStatus(organization: Organization, payment: Payment): Promise<PaymentStatus>;
|
|
10
11
|
cancel(organization: Organization): Promise<boolean>;
|
|
11
12
|
static createTest(organization: Organization, payconiqAccount: PayconiqAccount): Promise<undefined | object>;
|
|
12
13
|
static createPayment(payment: Payment, organization: Organization, description: string, returnUrl?: string, callbackUrl?: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayconiqPayment.d.ts","sourceRoot":"","sources":["../../../src/models/PayconiqPayment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAW,MAAM,uBAAuB,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG3C,qBAAa,eAAgB,SAAQ,cAAc;IAC/C,MAAM,CAAC,KAAK,SAAuB;IAOnC,EAAE,EAAG,MAAM,CAAC;IAGZ,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PayconiqPayment.d.ts","sourceRoot":"","sources":["../../../src/models/PayconiqPayment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAW,MAAM,uBAAuB,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG3C,qBAAa,eAAgB,SAAQ,cAAc;IAC/C,MAAM,CAAC,KAAK,SAAuB;IAOnC,EAAE,EAAG,MAAM,CAAC;IAGZ,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB,CAAC,QAAQ,EAAE,GAAG;IAwBzB,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAuD/E,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;WAoB7C,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;WAsBrG,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAqD/L;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;CAgHzB"}
|
|
@@ -14,16 +14,7 @@ class PayconiqPayment extends sql_1.QueryableModel {
|
|
|
14
14
|
id;
|
|
15
15
|
paymentId;
|
|
16
16
|
payconiqId;
|
|
17
|
-
|
|
18
|
-
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
19
|
-
if (!apiKey) {
|
|
20
|
-
throw new simple_errors_1.SimpleError({
|
|
21
|
-
code: '',
|
|
22
|
-
message: 'Payconiq API key missing to check the status of the payment',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const testMode = organization.privateMeta.useTestPayments ?? (STAMHOOFD.environment !== 'production');
|
|
26
|
-
const response = await PayconiqPayment.request('GET', '/v3/payments/' + this.payconiqId, {}, apiKey, testMode);
|
|
17
|
+
getResponseStatus(response) {
|
|
27
18
|
if (response.status) {
|
|
28
19
|
switch (response.status) {
|
|
29
20
|
case 'AUTHORIZED': return structures_1.PaymentStatus.Pending;
|
|
@@ -42,6 +33,53 @@ class PayconiqPayment extends sql_1.QueryableModel {
|
|
|
42
33
|
message: 'Status missing in response',
|
|
43
34
|
});
|
|
44
35
|
}
|
|
36
|
+
async getStatus(organization, payment) {
|
|
37
|
+
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
38
|
+
if (!apiKey) {
|
|
39
|
+
throw new simple_errors_1.SimpleError({
|
|
40
|
+
code: '',
|
|
41
|
+
message: 'Payconiq API key missing to check the status of the payment',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const testMode = organization.privateMeta.useTestPayments ?? (STAMHOOFD.environment !== 'production');
|
|
45
|
+
const response = await PayconiqPayment.request('GET', '/v3/payments/' + this.payconiqId, {}, apiKey, testMode);
|
|
46
|
+
if (typeof response !== 'object' || response === null) {
|
|
47
|
+
throw new simple_errors_1.SimpleError({
|
|
48
|
+
code: '',
|
|
49
|
+
message: 'Invalid Payconiq response',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const status = this.getResponseStatus(response);
|
|
53
|
+
// Check debtor
|
|
54
|
+
if ('debtor' in response && typeof response.debtor === 'object' && response.debtor !== null) {
|
|
55
|
+
try {
|
|
56
|
+
const name = response.debtor.name;
|
|
57
|
+
const iban = response.debtor.iban;
|
|
58
|
+
if (typeof iban === 'string') {
|
|
59
|
+
payment.iban = utility_1.Formatter.iban(iban);
|
|
60
|
+
}
|
|
61
|
+
if (typeof name === 'string') {
|
|
62
|
+
payment.ibanName = name.substring(0, 128);
|
|
63
|
+
}
|
|
64
|
+
await payment.save();
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
console.error('Failed to save iban in Payconiq payment');
|
|
68
|
+
console.error(e);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Check and save amount
|
|
72
|
+
if (typeof response.amount === 'number' && status === structures_1.PaymentStatus.Succeeded) {
|
|
73
|
+
const amount = response.amount;
|
|
74
|
+
if (amount < payment.price) {
|
|
75
|
+
// We do NOT allow lower prices
|
|
76
|
+
console.error('Manual price change detected by Payconiq user. Failing the payment');
|
|
77
|
+
console.error('Expected: ' + payment.price + '; Received: ' + amount);
|
|
78
|
+
return structures_1.PaymentStatus.Failed;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return status;
|
|
82
|
+
}
|
|
45
83
|
async cancel(organization) {
|
|
46
84
|
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
47
85
|
if (!apiKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayconiqPayment.js","sourceRoot":"","sources":["../../../src/models/PayconiqPayment.ts"],"names":[],"mappings":";;;;AAAA,iEAAqD;AACrD,6DAAwD;AACxD,wCAAgD;AAChD,sDAAgF;AAEhF,0DAA0B;AAC1B,+BAAoC;AAGpC,gDAA+C;AAE/C,MAAa,eAAgB,SAAQ,oBAAc;IAC/C,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IAOnC,EAAE,CAAU;IAGZ,SAAS,CAAS;IAGlB,UAAU,CAAS;IAEnB,KAAK,CAAC,SAAS,CAAC,YAA0B;
|
|
1
|
+
{"version":3,"file":"PayconiqPayment.js","sourceRoot":"","sources":["../../../src/models/PayconiqPayment.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/models",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.104.0",
|
|
4
4
|
"main": "./dist/src/index.js",
|
|
5
5
|
"types": "./dist/src/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "b0ab736ce6f13f9f663503ff0967caa8bb660723"
|
|
34
34
|
}
|
|
@@ -25,18 +25,7 @@ export class PayconiqPayment extends QueryableModel {
|
|
|
25
25
|
@column({ type: 'string' })
|
|
26
26
|
payconiqId: string;
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
30
|
-
if (!apiKey) {
|
|
31
|
-
throw new SimpleError({
|
|
32
|
-
code: '',
|
|
33
|
-
message: 'Payconiq API key missing to check the status of the payment',
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const testMode = organization.privateMeta.useTestPayments ?? (STAMHOOFD.environment !== 'production');
|
|
38
|
-
|
|
39
|
-
const response = await PayconiqPayment.request('GET', '/v3/payments/' + this.payconiqId, {}, apiKey, testMode);
|
|
28
|
+
getResponseStatus(response: any) {
|
|
40
29
|
if (response.status) {
|
|
41
30
|
switch (response.status) {
|
|
42
31
|
case 'AUTHORIZED': return PaymentStatus.Pending;
|
|
@@ -53,12 +42,68 @@ export class PayconiqPayment extends QueryableModel {
|
|
|
53
42
|
}
|
|
54
43
|
return PaymentStatus.Pending; // default to pending
|
|
55
44
|
}
|
|
45
|
+
|
|
56
46
|
throw new SimpleError({
|
|
57
47
|
code: '',
|
|
58
48
|
message: 'Status missing in response',
|
|
59
49
|
});
|
|
60
50
|
}
|
|
61
51
|
|
|
52
|
+
async getStatus(organization: Organization, payment: Payment): Promise<PaymentStatus> {
|
|
53
|
+
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
54
|
+
if (!apiKey) {
|
|
55
|
+
throw new SimpleError({
|
|
56
|
+
code: '',
|
|
57
|
+
message: 'Payconiq API key missing to check the status of the payment',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const testMode = organization.privateMeta.useTestPayments ?? (STAMHOOFD.environment !== 'production');
|
|
62
|
+
const response = await PayconiqPayment.request('GET', '/v3/payments/' + this.payconiqId, {}, apiKey, testMode);
|
|
63
|
+
|
|
64
|
+
if (typeof response !== 'object' || response === null) {
|
|
65
|
+
throw new SimpleError({
|
|
66
|
+
code: '',
|
|
67
|
+
message: 'Invalid Payconiq response',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const status = this.getResponseStatus(response);
|
|
71
|
+
|
|
72
|
+
// Check debtor
|
|
73
|
+
if ('debtor' in response && typeof response.debtor === 'object' && response.debtor !== null) {
|
|
74
|
+
try {
|
|
75
|
+
const name = response.debtor.name;
|
|
76
|
+
const iban = response.debtor.iban;
|
|
77
|
+
|
|
78
|
+
if (typeof iban === 'string') {
|
|
79
|
+
payment.iban = Formatter.iban(iban);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (typeof name === 'string') {
|
|
83
|
+
payment.ibanName = name.substring(0, 128);
|
|
84
|
+
}
|
|
85
|
+
await payment.save();
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
console.error('Failed to save iban in Payconiq payment');
|
|
89
|
+
console.error(e);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Check and save amount
|
|
94
|
+
if (typeof response.amount === 'number' && status === PaymentStatus.Succeeded) {
|
|
95
|
+
const amount = response.amount;
|
|
96
|
+
if (amount < payment.price) {
|
|
97
|
+
// We do NOT allow lower prices
|
|
98
|
+
console.error('Manual price change detected by Payconiq user. Failing the payment');
|
|
99
|
+
console.error('Expected: ' + payment.price + '; Received: ' + amount);
|
|
100
|
+
return PaymentStatus.Failed;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return status;
|
|
105
|
+
}
|
|
106
|
+
|
|
62
107
|
async cancel(organization: Organization): Promise<boolean> {
|
|
63
108
|
const apiKey = organization.privateMeta.payconiqApiKey;
|
|
64
109
|
if (!apiKey) {
|