gapp-checkout
Version:
Mobile Gapp flow for Checkout
77 lines (76 loc) • 3.15 kB
JavaScript
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