@defra/forms-engine-plugin 4.0.52 → 4.0.54
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/.server/server/plugins/engine/components/PaymentField.js +2 -2
- package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +14 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/routes/payment-helper.d.ts +22 -0
- package/.server/server/plugins/engine/routes/payment-helper.js +29 -1
- package/.server/server/plugins/engine/routes/payment-helper.js.map +1 -1
- package/.server/server/plugins/engine/routes/payment-helper.test.js +27 -1
- package/.server/server/plugins/engine/routes/payment-helper.test.js.map +1 -1
- package/.server/server/plugins/engine/routes/payment.js +23 -1
- package/.server/server/plugins/engine/routes/payment.js.map +1 -1
- package/.server/server/plugins/payment/service.d.ts +4 -2
- package/.server/server/plugins/payment/service.js +8 -21
- package/.server/server/plugins/payment/service.js.map +1 -1
- package/.server/server/plugins/payment/service.test.js +5 -5
- package/.server/server/plugins/payment/service.test.js.map +1 -1
- package/package.json +1 -1
- package/src/server/plugins/engine/components/PaymentField.ts +5 -1
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +84 -0
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +20 -1
- package/src/server/plugins/engine/routes/payment-helper.js +38 -1
- package/src/server/plugins/engine/routes/payment-helper.test.js +44 -1
- package/src/server/plugins/engine/routes/payment.js +46 -1
- package/src/server/plugins/payment/service.js +32 -24
- package/src/server/plugins/payment/service.test.js +8 -2
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { StatusCodes } from 'http-status-codes'
|
|
2
2
|
|
|
3
3
|
import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
|
|
4
|
+
import {
|
|
5
|
+
buildPaymentInfo,
|
|
6
|
+
convertPenceToPounds
|
|
7
|
+
} from '~/src/server/plugins/engine/routes/payment-helper.js'
|
|
4
8
|
import { get, post, postJson } from '~/src/server/services/httpService.js'
|
|
5
9
|
|
|
6
10
|
const PAYMENT_BASE_URL = 'https://publicapi.payments.service.gov.uk'
|
|
@@ -35,9 +39,17 @@ export class PaymentService {
|
|
|
35
39
|
* @param {string} description
|
|
36
40
|
* @param {string} returnUrl
|
|
37
41
|
* @param {string} reference
|
|
42
|
+
* @param {boolean} isLivePayment
|
|
38
43
|
* @param {{ formId: string, slug: string }} metadata
|
|
39
44
|
*/
|
|
40
|
-
async createPayment(
|
|
45
|
+
async createPayment(
|
|
46
|
+
amount,
|
|
47
|
+
description,
|
|
48
|
+
returnUrl,
|
|
49
|
+
reference,
|
|
50
|
+
isLivePayment,
|
|
51
|
+
metadata
|
|
52
|
+
) {
|
|
41
53
|
const response = await this.postToPayProvider({
|
|
42
54
|
amount,
|
|
43
55
|
description,
|
|
@@ -48,15 +60,13 @@ export class PaymentService {
|
|
|
48
60
|
})
|
|
49
61
|
|
|
50
62
|
logger.info(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
},
|
|
63
|
+
buildPaymentInfo(
|
|
64
|
+
'create-payment',
|
|
65
|
+
'success',
|
|
66
|
+
`amount=${convertPenceToPounds(amount)}`,
|
|
67
|
+
isLivePayment,
|
|
68
|
+
response.payment_id
|
|
69
|
+
),
|
|
60
70
|
`[payment] Created payment and user taken to enter pre-auth details for paymentId=${response.payment_id}`
|
|
61
71
|
)
|
|
62
72
|
|
|
@@ -68,9 +78,10 @@ export class PaymentService {
|
|
|
68
78
|
|
|
69
79
|
/**
|
|
70
80
|
* @param {string} paymentId
|
|
81
|
+
* @param {boolean} isLivePayment
|
|
71
82
|
* @returns {Promise<GetPaymentResponse>}
|
|
72
83
|
*/
|
|
73
|
-
async getPaymentStatus(paymentId) {
|
|
84
|
+
async getPaymentStatus(paymentId, isLivePayment) {
|
|
74
85
|
const getByType = /** @type {typeof get<GetPaymentApiResponse>} */ (get)
|
|
75
86
|
|
|
76
87
|
try {
|
|
@@ -92,18 +103,15 @@ export class PaymentService {
|
|
|
92
103
|
|
|
93
104
|
const state = response.payload.state
|
|
94
105
|
logger.info(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
reference: paymentId
|
|
105
|
-
}
|
|
106
|
-
},
|
|
106
|
+
buildPaymentInfo(
|
|
107
|
+
'get-payment-status',
|
|
108
|
+
state.status === 'capturable' || state.status === 'success'
|
|
109
|
+
? 'success'
|
|
110
|
+
: 'failure',
|
|
111
|
+
`status:${state.status} code:${state.code ?? 'N/A'} message:${state.message ?? 'N/A'}`,
|
|
112
|
+
isLivePayment,
|
|
113
|
+
paymentId
|
|
114
|
+
),
|
|
107
115
|
`[payment] Got payment status for paymentId=${paymentId}: status=${state.status}`
|
|
108
116
|
)
|
|
109
117
|
|
|
@@ -151,7 +159,7 @@ export class PaymentService {
|
|
|
151
159
|
category: 'payment',
|
|
152
160
|
action: 'capture-payment',
|
|
153
161
|
outcome: 'success',
|
|
154
|
-
reason: `amount=${amount}`,
|
|
162
|
+
reason: `amount=${convertPenceToPounds(amount)}`,
|
|
155
163
|
reference: paymentId
|
|
156
164
|
}
|
|
157
165
|
},
|
|
@@ -41,6 +41,7 @@ describe('payment service', () => {
|
|
|
41
41
|
'Payment description',
|
|
42
42
|
returnUrl,
|
|
43
43
|
referenceNumber,
|
|
44
|
+
false,
|
|
44
45
|
metadata
|
|
45
46
|
)
|
|
46
47
|
expect(payment.paymentId).toBe('payment-id-12345')
|
|
@@ -61,6 +62,7 @@ describe('payment service', () => {
|
|
|
61
62
|
'Payment description',
|
|
62
63
|
returnUrl,
|
|
63
64
|
referenceNumber,
|
|
65
|
+
false,
|
|
64
66
|
metadata
|
|
65
67
|
)
|
|
66
68
|
).rejects.toThrow('internal creation error')
|
|
@@ -90,6 +92,7 @@ describe('payment service', () => {
|
|
|
90
92
|
'Payment description',
|
|
91
93
|
returnUrl,
|
|
92
94
|
referenceNumber,
|
|
95
|
+
false,
|
|
93
96
|
metadata
|
|
94
97
|
)
|
|
95
98
|
).rejects.toThrow('Failed to create payment')
|
|
@@ -119,7 +122,10 @@ describe('payment service', () => {
|
|
|
119
122
|
error: undefined
|
|
120
123
|
})
|
|
121
124
|
|
|
122
|
-
const paymentStatus = await service.getPaymentStatus(
|
|
125
|
+
const paymentStatus = await service.getPaymentStatus(
|
|
126
|
+
'payment-id-12345',
|
|
127
|
+
false
|
|
128
|
+
)
|
|
123
129
|
expect(paymentStatus.paymentId).toBe('payment-id-12345')
|
|
124
130
|
expect(paymentStatus._links.next_url?.href).toBe(
|
|
125
131
|
'http://next-url-href/payment'
|
|
@@ -137,7 +143,7 @@ describe('payment service', () => {
|
|
|
137
143
|
})
|
|
138
144
|
|
|
139
145
|
await expect(() =>
|
|
140
|
-
service.getPaymentStatus('payment-id-12345')
|
|
146
|
+
service.getPaymentStatus('payment-id-12345', false)
|
|
141
147
|
).rejects.toThrow('Failed to get payment status: some-error')
|
|
142
148
|
})
|
|
143
149
|
})
|