Skip to content

Commit

Permalink
feat(payments): PAYMENTS-7524 Add human verification to PPSDK payment…
Browse files Browse the repository at this point in the history
… payload
  • Loading branch information
Tharaae committed Jun 9, 2022
1 parent 455dc9b commit f454d89
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
8 changes: 7 additions & 1 deletion src/payment/ppsdk/payment-mappers/ppsdk-payload-mapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default class PpsdkPayloadMapper {
* @returns {Object}
*/
mapToPayload(data) {
const { payment = {}, paymentMethod } = data;
const { additionalAction, payment = {}, paymentMethod } = data;

return omitNil({
instrument: {
Expand All @@ -29,6 +29,12 @@ export default class PpsdkPayloadMapper {
},
form_nonce: payment.hostedFormNonce,
payment_method_id: paymentMethod.id,
human_verification: additionalAction ? {
id: 'recaptcha_v2_verification',
parameters: {
token: additionalAction ? additionalAction.data.human_verification_token : null,
},
} : null,
});
}

Expand Down
10 changes: 10 additions & 0 deletions test/mocks/payment-request-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,14 @@ const paymentRequestDataMock = {
},
};

export const paymentRequestWithAdditionalActionMock = {
additionalAction: {
type: 'recaptcha_v2_verification',
data: {
human_verification_token: 'googleRecaptchaToken',
},
},
...paymentRequestDataMock,
};

export default paymentRequestDataMock;
29 changes: 28 additions & 1 deletion test/payment/ppsdk/payment-mappers/ppsdk-payload-mapper.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import PpsdkPayloadMapper from '../../../../src/payment/ppsdk/payment-mappers/ppsdk-payload-mapper';
import paymentRequestDataMock from '../../../mocks/payment-request-data';
import paymentRequestDataMock, { paymentRequestWithAdditionalActionMock } from '../../../mocks/payment-request-data';

describe('PpsdkPayloadMapper', () => {
let data;
Expand Down Expand Up @@ -36,6 +36,33 @@ describe('PpsdkPayloadMapper', () => {
});
});

it('maps the input data into a payload with human verification data when required for submitting a payment', () => {
const dataWithAdditionalAction = paymentRequestWithAdditionalActionMock;

const output = payloadMapper.mapToPayload(dataWithAdditionalAction);

expect(output).toEqual({
instrument: {
expires: {
month: 1,
year: 2018,
},
name: 'Foo Bar',
number: '4007000000027',
verification_value: '123',
type: 'card',
},
form_nonce: 'fakeHostedFormNonce',
human_verification: {
id: 'recaptcha_v2_verification',
parameters: {
token: 'googleRecaptchaToken',
},
},
payment_method_id: 'paypalprous',
});
});

it('maps the input data into an object containing http headers required for submitting a payment', () => {
const output = payloadMapper.mapToHeaders(data);

Expand Down

0 comments on commit f454d89

Please sign in to comment.