From 75243ebd6e14bb78354e0751f950f19672704c0b Mon Sep 17 00:00:00 2001 From: Michael Paul Date: Fri, 17 Jun 2022 08:20:55 +0000 Subject: [PATCH] PW-6628: Serialize SaleToAcquirerData Using same option (base64 encoded JSON string) on all terminal requests. --- src/__tests__/terminalCloudAPI.spec.ts | 7 ++++--- src/services/terminalCloudAPI.ts | 8 -------- src/services/terminalLocalAPI.ts | 6 ------ src/typings/terminal/models.ts | 3 +++ 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/__tests__/terminalCloudAPI.spec.ts b/src/__tests__/terminalCloudAPI.spec.ts index 30ab857..378893b 100644 --- a/src/__tests__/terminalCloudAPI.spec.ts +++ b/src/__tests__/terminalCloudAPI.spec.ts @@ -89,13 +89,14 @@ describe("Terminal Cloud API", (): void => { const pOITransactionId = terminalAPIResponse.SaleToPOIResponse!.PaymentResponse!.POIData!.POITransactionID; expect(pOITransactionId).toBeTruthy(); - scope.post("/sync").reply(200, syncRefund); const terminalAPIRefundRequest = createTerminalAPIRefundRequest(pOITransactionId); + const id = Math.floor(Math.random() * Math.floor(10000000)).toString(); + terminalAPIRefundRequest.SaleToPOIRequest.MessageHeader.ServiceID = id; terminalAPIRefundRequest.SaleToPOIRequest.ReversalRequest!.SaleData!.SaleToAcquirerData!.currency = 'EUR'; const terminalAPIRefundResponse = await terminalCloudAPI.sync(terminalAPIRefundRequest); - expect(terminalAPIRefundResponse.SaleToPOIResponse?.ReversalResponse).toBeDefined(); - }); + expect(terminalAPIRefundResponse.SaleToPOIResponse?.ReversalResponse?.Response.Result).toBe('Success'); + }, 20000); }); diff --git a/src/services/terminalCloudAPI.ts b/src/services/terminalCloudAPI.ts index 3adda40..13c1736 100644 --- a/src/services/terminalCloudAPI.ts +++ b/src/services/terminalCloudAPI.ts @@ -46,14 +46,6 @@ class TerminalCloudAPI extends ApiKeyAuthenticatedService { const reqWithAppInfo = {saleToPOIRequest}; mergeDeep(request, reqWithAppInfo); - const formattedRequest = ObjectSerializer.serialize(request, "TerminalApiRequest"); - - if (formattedRequest.SaleToPOIRequest?.PaymentRequest?.SaleData?.SaleToAcquirerData) { - const dataString = JSON.stringify(formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData); - formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData = Buffer.from(dataString).toString("base64"); - } - - return formattedRequest; } return ObjectSerializer.serialize(request, "TerminalApiRequest"); diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index e92e8c9..3d2a86e 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -47,12 +47,6 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { securityKey: SecurityKey, ): Promise { const formattedRequest = ObjectSerializer.serialize(terminalApiRequest, "TerminalApiRequest"); - - if (formattedRequest.SaleToPOIRequest?.PaymentRequest?.SaleData?.SaleToAcquirerData) { - const dataString = JSON.stringify(formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData); - formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData = Buffer.from(dataString).toString("base64"); - } - const saleToPoiSecuredMessage: SaleToPOISecuredMessage = NexoCrypto.encrypt( terminalApiRequest.SaleToPOIRequest.MessageHeader, JSON.stringify(formattedRequest), diff --git a/src/typings/terminal/models.ts b/src/typings/terminal/models.ts index 19ae473..2a8c2ba 100644 --- a/src/typings/terminal/models.ts +++ b/src/typings/terminal/models.ts @@ -853,6 +853,9 @@ export class ObjectSerializer { return transformedData; } else if (type === "Date") { return data.toISOString(); + } else if (type === "SaleToAcquirerData") { + const dataString = JSON.stringify(data); + return Buffer.from(dataString).toString("base64"); } else { if (enumsMap[type]) { return data;