PW-6628: Serialize SaleToAcquirerData

Using same option (base64 encoded JSON string) on all terminal requests.
This commit is contained in:
Michael Paul
2022-06-17 08:20:55 +00:00
committed by GitHub
parent e3f8eef013
commit 75243ebd6e
4 changed files with 7 additions and 17 deletions

View File

@@ -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);
});

View File

@@ -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");

View File

@@ -47,12 +47,6 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService {
securityKey: SecurityKey,
): Promise<TerminalApiResponse> {
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),

View File

@@ -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;