UNPKG

@unchainedshop/plugins

Version:

Official plugin collection for the Unchained Engine with payment, delivery, and pricing adapters

53 lines (52 loc) 2.15 kB
const getRedirects = () => { const { EMAIL_WEBSITE_URL, PAYREXX_SUCCESS_PATH = '/payrexx/success', PAYREXX_ERROR_PATH = '/payrexx/error', PAYREXX_CANCEL_PATH = '/payrexx/cancel', } = process.env; return { successRedirectUrl: `${EMAIL_WEBSITE_URL}${PAYREXX_SUCCESS_PATH}`, failedRedirectUrl: `${EMAIL_WEBSITE_URL}${PAYREXX_ERROR_PATH}`, cancelRedirectUrl: `${EMAIL_WEBSITE_URL}${PAYREXX_CANCEL_PATH}`, }; }; export const mapOrderDataToGatewayObject = ({ order, orderPayment, pricing }, options = {}) => { const { currencyCode, amount } = pricing.total({ useNetPrice: false }); const customerData = {}; if (order.contact?.emailAddress) { customerData['fields[email][value]'] = order.contact?.emailAddress; } if (order.billingAddress?.firstName) { customerData['fields[forename][value]'] = order.billingAddress?.firstName; } if (order.billingAddress?.lastName) { customerData['fields[surname][value]'] = order.billingAddress?.lastName; } const gatewayObject = { amount: Math.round(amount), currency: currencyCode.toUpperCase(), purpose: encodeURIComponent(`${process.env.EMAIL_WEBSITE_NAME || 'Unchained'} #${order._id}`), reservation: true, skipResultPage: true, ...getRedirects(), referenceId: orderPayment._id, ...customerData, ...options, }; return gatewayObject; }; export const mapUserToGatewayObject = ({ userId, emailAddress, currencyCode }, options = {}) => { const customerData = {}; if (emailAddress) { customerData['fields[email][value]'] = emailAddress; } customerData['fields[custom_field_1][name][0]'] = 'userId'; customerData['fields[custom_field_1][value]'] = userId; const gatewayObject = { amount: Math.round(0), currency: currencyCode, purpose: encodeURIComponent(`${process.env.EMAIL_WEBSITE_NAME || 'Unchained'} ${userId}`), preAuthorization: true, skipResultPage: true, ...getRedirects(), referenceId: userId, ...options, }; return gatewayObject; };