UNPKG

gapp-checkout

Version:

Mobile Gapp flow for Checkout

77 lines (76 loc) 3.15 kB
import CryptoJS from 'crypto-js'; // for checkout api export default function useCheckout(_ref) { let { dataIn } = _ref; const handleCheckoutPayload = _ref2 => { var _order$, _CryptoJS$SHA; let { order, details } = _ref2; const trackerNumber = (order === null || order === void 0 ? void 0 : (_order$ = order[0]) === null || _order$ === void 0 ? void 0 : _order$.tracking_number) || ''; const fullName = `${details.customer.first_name} ${details.customer.last_name}`; const amount = order.reduce((acc, cv) => acc + cv.total_amount, 0); const payloadHash = [ // merchant_public_key details.public_key, // merchant_secret_key details.secret_key, // merchant_processor_id details.payment_method.id, // amount amount, // payee fullName, // merchant_transaction_reference trackerNumber].join('/'); const hashed = (_CryptoJS$SHA = CryptoJS.SHA256(payloadHash)) === null || _CryptoJS$SHA === void 0 ? void 0 : _CryptoJS$SHA.toString(CryptoJS.enc.Hex); const orderedItems = order.reduce((acc, cv) => { if (cv.items) { acc.push(...cv.items); } return acc; }, []); const initialGatewayCheckoutPayload = { payment_token: hashed, merchant_processor_id: details.payment_method.id, merchant_transaction_reference: trackerNumber, amount: amount, currency: 'PHP', payment_method: details.payment_method.name, first_name: details.customer.first_name, last_name: details.customer.last_name, payee: fullName, contact_number: details.customer.contact_number, email: details.customer.email, processor: { token: details.processor.token || '', redirect_url: { success: details.processor.redirect_url.success || '', failure: details.processor.redirect_url.failure || '', cancel: details.processor.redirect_url.cancel || '' } }, items: orderedItems.map(d => ({ name: d.name, description: d.description, quantity: d.price ? parseFloat(d.quantity) : null, price: d.price ? parseFloat(d.price) : null })), description: (details === null || details === void 0 ? void 0 : details.description) || '', parameter_1: (details === null || details === void 0 ? void 0 : details.parameter_1) || '', parameter_2: (details === null || details === void 0 ? void 0 : details.parameter_2) || '', parameter_3: (details === null || details === void 0 ? void 0 : details.parameter_3) || '', parameter_4: (details === null || details === void 0 ? void 0 : details.parameter_4) || '', parameter_5: (details === null || details === void 0 ? void 0 : details.parameter_5) || '' }; const payloadCheckout = dataIn !== null && dataIn !== void 0 && dataIn.constructCheckoutPayload ? dataIn === null || dataIn === void 0 ? void 0 : dataIn.constructCheckoutPayload(initialGatewayCheckoutPayload) : initialGatewayCheckoutPayload; return payloadCheckout; }; return { handleCheckoutPayload }; } //# sourceMappingURL=useCheckout.js.map