diff --git a/src/payment/v1/payment-mappers/payment-mapper.js b/src/payment/v1/payment-mappers/payment-mapper.js index 3d147f4b..29c18492 100644 --- a/src/payment/v1/payment-mappers/payment-mapper.js +++ b/src/payment/v1/payment-mappers/payment-mapper.js @@ -74,6 +74,7 @@ export default class PaymentMapper { }); } else { objectAssign(payload, { + browser_info: payment.browser_info, credit_card: this.mapToCreditCard(data), }); } diff --git a/test/payment/v1/payment-mappers/payment-mapper.spec.js b/test/payment/v1/payment-mappers/payment-mapper.spec.js index 767de8f4..76eb7d8c 100644 --- a/test/payment/v1/payment-mappers/payment-mapper.spec.js +++ b/test/payment/v1/payment-mappers/payment-mapper.spec.js @@ -49,6 +49,47 @@ describe('PaymentMapper', () => { }); }); + it('maps the input object into a payment object with credit card and browser info data', () => { + const browser_info = { + color_depth: 24, + java_enabled: false, + language: 'en-US', + screen_height: 400, + screen_width: 400, + time_zone_offset: 360, + } + + const output = paymentMapper.mapToPayment({ + ...data, + payment: { + ...data.payment, + browser_info, + } + }); + + expect(output).toEqual({ + credit_card: { + account_name: data.payment.ccName, + number: data.payment.ccNumber, + month: parseInt(data.payment.ccExpiry.month, 10), + verification_value: data.payment.ccCvv, + year: parseInt(data.payment.ccExpiry.year, 10), + customer_code: data.payment.ccCustomerCode, + three_d_secure: data.payment.threeDSecure, + hosted_form_nonce: data.payment.hostedFormNonce, + }, + browser_info, + device: { + fingerprint_id: data.orderMeta.deviceFingerprint, + }, + device_info: data.payment.deviceSessionId, + gateway: data.paymentMethod.id, + notify_url: data.order.callbackUrl, + return_url: data.paymentMethod.returnUrl, + vault_payment_instrument: data.payment.shouldSaveInstrument, + }); + }); + it('maps the input object into a payment object with credit card token', () => { data = merge({}, data, { paymentMethod: {