UNPKG

trailpack-proxy-cart

Version:

eCommerce - Trailpack for Proxy Engine

148 lines (143 loc) 4.26 kB
'use strict' const _ = require('lodash') const shortId = require('shortid') const Generic = require('trailpack-proxy-generics').Generic module.exports = class FakePaymentProcessor extends Generic { constructor(options) { super() this.options = options } authorize(transaction) { transaction.kind = 'authorize' transaction.authorization = 'abc123' if (transaction.payment_details.length == 0) { transaction.error_code = 'processing_error' transaction.status = 'failure' } else { transaction.status = 'success' transaction.payment_details.avs_result_code = '123' transaction.payment_details.credit_card_iin = '123' transaction.payment_details.credit_card_company = 'visa' transaction.payment_details.credit_card_number = '**** **** **** 1234' transaction.payment_details.cvv_result_code = 'Y' } return Promise.resolve(transaction) } capture(transaction) { transaction.status = 'success' transaction.kind = 'capture' return Promise.resolve(transaction) } sale(transaction) { transaction.authorization = 'abc123' transaction.status = 'success' transaction.kind = 'sale' transaction.payment_details.avs_result_code = '123' transaction.payment_details.credit_card_iin = '123' transaction.payment_details.credit_card_company = 'visa' transaction.payment_details.credit_card_number = '**** **** **** 1234' transaction.payment_details.cvv_result_code = 'Y' return Promise.resolve(transaction) } void(transaction) { transaction.kind = 'void' transaction.status = 'success' return Promise.resolve(transaction) } refund(transaction) { transaction.kind = 'refund' transaction.status = 'success' return Promise.resolve(transaction) } createCustomer(customer) { const res = { gateway: 'payment_processor', foreign_key: 'customer', foreign_id: 'customer_' + shortId.generate(), data: customer } return Promise.resolve(res) } createCustomerSource(source) { const res = { gateway: 'payment_processor', account_foreign_key: 'customer', account_foreign_id: source.account_foreign_id, foreign_key: 'customer', foreign_id: 'source_' + shortId.generate(), payment_details: source } return Promise.resolve(res) } findCustomer(customer) { const res = { gateway: 'payment_processor', foreign_key: 'customer', foreign_id: customer.foreign_id, data: customer } return Promise.resolve(res) } findCustomerSource(source) { const res = { gateway: 'payment_processor', account_foreign_key: 'customer', account_foreign_id: source.account_foreign_id, foreign_key: 'source', foreign_id: source.foreign_key, payment_details: source } return Promise.resolve(res) } getCustomerSources(customer) { const res = { gateway: 'payment_processor', foreign_key: 'customer', foreign_id: customer.foreign_id, data: customer, sources: [ { gateway: 'payment_processor', account_foreign_key: 'customer', account_foreign_id: customer.foreign_id, foreign_key: 'source', foreign_id: 'source_' + shortId.generate(), payment_details: {} } ] } return Promise.resolve(res) } updateCustomer(customer) { const res = { gateway: 'payment_processor', foreign_key: 'customer', foreign_id: customer.id, data: customer } return Promise.resolve(res) } updateCustomerSource(source) { const res = { gateway: 'payment_processor', account_foreign_id: source.account_foreign_id, account_foreign_key: 'customer', foreign_key: 'source', foreign_id: source.foreign_id, payment_details: source } return Promise.resolve(res) } removeCustomerSource(source) { const res = { gateway: 'payment_processor', account_foreign_id: source.account_foreign_id, account_foreign_key: 'customer', foreign_key: 'source', foreign_id: source.foreign_id, payment_details: source } return Promise.resolve(res) } }