Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import React from 'react';
- // import ContentGeneralLoading from 'Components/molecules/content/content-general-loading';
- import HeaderBack, { IHeaderProps } from 'Components/organism/header/header-back';
- import {
- ContentPaymentConfirmation,
- IProps as IPaymentConfirmation,
- } from 'Components/molecules/content/content-payment-confirmation';
- import { useRouter } from 'next/router';
- import { customDateConstructor, exchangeRateConversionHelper, stringToArrayNumber, timezoneFormatDayDateTime } from 'Helpers/common-helper';
- import { TransactionHandler } from 'handlers/transaction-handler';
- import { WalletHandler } from 'handlers/wallet-handler';
- import { parseTransactionStatus, TRANSACTION_STATUS } from 'Helpers/transaction-helper';
- import { DEFAULT_PAYMENT, PAYMENT_SOURCE, openSandbox } from 'Helpers/payment-helper';
- import { shallowEqual, useDispatch, useSelector } from 'react-redux';
- import paymentObject from 'Redux/reducers/payment';
- import coinObject from 'Redux/reducers/coin';
- import { IReducers } from 'Redux/reducers';
- import navigationObject from 'Redux/reducers/navigation';
- import { routeBuilder, ROUTER_NAME } from 'Helpers/navigation-helper';
- import Head from 'next/head';
- import FinishOrderSkeleton from 'Components/atoms/skeleton/finish-order-skeleton';
- import transactionObject from 'Redux/reducers/transaction';
- import loadingComponentObject from 'Redux/reducers/loading-component';
- import { getErrorMessage, ERR_TYPES } from 'Helpers/error-helper';
- import statusObject from 'Redux/reducers/status';
- import rpgObject from 'Redux/reducers/rpg';
- import persistObject from 'Redux/reducers/persist-state';
- import { SUBSCRIPTION_TRANSACTION_SOURCE } from 'Helpers/subscription-helper';
- import { REGION_CODE, useLanguage } from 'Helpers/translation-helper';
- import { CurrencyHandler } from 'handlers/currency-handler';
- const ConfirmationElement = (props: IHeaderProps & IPaymentConfirmation & { isLoading: boolean }) => {
- const waitingPaymentText = useLanguage('menunggu_pembayaran');
- const paymentStatusText = useLanguage('status_pembayaran');
- return (
- <div className='w-full min-h-screen bg-white max-w-600px pb-10'>
- <Head>
- <title>{props.differentiator === 'wait' ? waitingPaymentText : paymentStatusText} | itemku</title>
- </Head>
- <div className='w-full sticky top-0 z-10'>
- <HeaderBack
- title={props.differentiator === 'wait' ? waitingPaymentText : paymentStatusText}
- leftOnClick={props.leftOnClick}
- />
- </div>
- {props.isLoading ? (
- <FinishOrderSkeleton />
- ) : (
- <ContentPaymentConfirmation
- differentiator={props.differentiator}
- paymentMethod={props.paymentMethod}
- paymentMethodImageURL={props.paymentMethodImageURL}
- timeDesc={props.timeDesc}
- paymentNumber={props.paymentNumber}
- timeStart={props.timeStart}
- payments={props.payments}
- extraCharge={props.extraCharge}
- totalPayment={props.totalPayment}
- discount={props.discount}
- discountPrice={props.discountPrice}
- discountPriceCoupon={props.discountPriceCoupon}
- usedDompetkuBalance={props.usedDompetkuBalance}
- grandTotal={props.grandTotal}
- paymentGuideContents={props.paymentGuideContents}
- primaryButtonClick={props.primaryButtonClick}
- secondaryButtonClick={props.secondaryButtonClick}
- withCopyButton={props.withCopyButton}
- isOfficialStoreVoucher={props.isOfficialStoreVoucher}
- userEmail={props.userEmail}
- userPhoneNUmber={props.userPhoneNUmber}
- getTransaction={props.getTransaction}
- noteDirectPaymentOvo={props.noteDirectPaymentOvo}
- usedItemkuWorldCoin={props.usedItemkuWorldCoin}
- itemkuWorldCoinMaxDisc={props.itemkuWorldCoinMaxDisc}
- isConnected={props.isConnected}
- updateTheTimeRemains={props.updateTheTimeRemains}
- isShowDiamondBanner={props.isShowDiamondBanner}
- pinDompetkuClick={props.pinDompetkuClick}
- isSubscription={props.isSubscription}
- isCreditCard={props.isCreditCard}
- dompetkuCashback={props.dompetkuCashback}
- />
- )}
- </div>
- );
- };
- interface IProps {
- paymentSource: PAYMENT_SOURCE;
- }
- export const PaymentConfirmationTemplate = ({ paymentSource }: IProps) => {
- const router = useRouter();
- const dispatch = useDispatch();
- const [paymentDetail, setPaymentDetail] = React.useState<IPaymentConfirmation>();
- const [cancelPayment, setCancelPayment] = React.useState(false);
- const paymentMethodWithoutPaymentCode = useSelector(
- (state: any) => state.configReducers.configList.PAYMENT_METHOD_WITHOUT_PAYMENT_CODE,
- shallowEqual,
- );
- const ovoPaymentSync = useSelector((state: IReducers) => state.paymentReducers.isReqSyncPaymentOvo, shallowEqual);
- const [noteForDirectPaymentOvo, setNoteForDirectPaymentOvo] = React.useState<string>('');
- const [connectStatus, setConnectStatus] = React.useState<boolean>(true);
- const [timeRemaining, setTimeRemaining] = React.useState<number>(9999999999);
- const [isReloadable, setIsReloadable] = React.useState<boolean>(false);
- // Route Intercept //
- const isRedirectIntercepted = useSelector(
- (state: IReducers) => state.navigationReducers.isRedirectIntercepted,
- shallowEqual,
- );
- // Payment Data //
- const paymentDetailDataFromPaymentService = useSelector(
- (state: IReducers) => state.paymentReducers.paymentDetailData, shallowEqual
- );
- const userId = useSelector((state: IReducers) => state.loginReducers.userData.id, shallowEqual);
- const setPaymentDetailData = (transactionId: number, transactionNumbers?: string) => {
- const params = {
- transaction_id: transactionId,
- buyer_id: Number(userId),
- transaction_type: transactionNumbers?.slice(0, 2),
- };
- dispatch(paymentObject.actions.reqPaymentDetailData(params));
- };
- React.useEffect(() => {
- if (paymentDetailDataFromPaymentService) {
- if (
- paymentDetailDataFromPaymentService.payment_method_id === 47 &&
- paymentDetailDataFromPaymentService.note != null
- ) {
- setNoteForDirectPaymentOvo(paymentDetailDataFromPaymentService.note);
- }
- }
- }, [paymentDetailDataFromPaymentService]);
- React.useEffect(() => {
- if (noteForDirectPaymentOvo === 'ITEMKU_WAITING') {
- setConnectStatus(false);
- } else {
- setConnectStatus(true);
- }
- }, [noteForDirectPaymentOvo, paymentDetailDataFromPaymentService?.note]);
- // Payment Data End
- // Discount Games From Coin
- const discountGamesData = useSelector((state: IReducers) => state.coinReducers.discountGames);
- const [maxCoinDiscount, setMaxCoinDiscount] = React.useState<number>(0);
- React.useEffect(() => {
- dispatch(coinObject.actions.requestDiscountGames());
- }, []);
- // Discount Games From Coin End
- // Transaction Data //
- const {
- transactionDetail,
- transactionDetailLoading,
- getTransactionDetail,
- getTransactionDetailOSTopup,
- getTransactionDetailOSVoucher,
- } = TransactionHandler.useTransactionDetail();
- React.useEffect(() => {
- if (router.query.TR_id) {
- getTransaction();
- }
- }, [router]);
- React.useEffect(() => {
- if (transactionDetail) {
- if (discountGamesData) {
- if (transactionDetail.orders?.length > 0 && discountGamesData.length > 0) {
- const gameIds: number[] = transactionDetail.orders.map((item: any) => item.game_id);
- for (const item of discountGamesData) {
- if (gameIds.includes(item.game_id)) return setMaxCoinDiscount(item.max_percent_discount);
- }
- }
- }
- }
- }, [discountGamesData, transactionDetail]);
- React.useEffect(() => {
- if (router.query.TR_id && transactionDetail?.transaction_number) {
- setPaymentDetailData(Number(router.query.TR_id), transactionDetail.transaction_number);
- }
- }, [router, transactionDetail]);
- const getTransaction = () => {
- const trxid = parseInt(router.query.TR_id as string);
- if (trxid && !isNaN(trxid)) {
- switch (paymentSource) {
- case PAYMENT_SOURCE.OFFICIAL_STORE_TOPUP:
- getTransactionDetailOSTopup(trxid);
- break;
- case PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER:
- getTransactionDetailOSVoucher(trxid);
- break;
- default:
- getTransactionDetail(trxid);
- break;
- }
- }
- };
- // End Transaction Data //
- // Diamonds Calculation //
- const checkGamesBonus = useSelector((state: IReducers) => state.rpgReducers.gameHasBonus);
- const isShowDiamondBanner = (listGame: any[]) => {
- if (listGame.length === 0) return false;
- for (let i of listGame) {
- if (i.has_diamond_rewards) return true;
- }
- return false;
- };
- React.useEffect(() => {
- if (
- transactionDetail &&
- paymentSource !== PAYMENT_SOURCE.OFFICIAL_STORE_TOPUP &&
- paymentSource !== PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER
- ) {
- const gameIds: number[] = transactionDetail.orders.map((item: any) => item.game_id);
- if (gameIds) dispatch(rpgObject.actions.requestCheckGamesBonus({ game_ids: gameIds }));
- }
- }, [transactionDetail]);
- // Diamonds Calculation End //
- // Payment FAQ //
- const paymentMethodFaq = useSelector((state: IReducers) => state.paymentReducers.paymentMethodFaq, shallowEqual);
- React.useEffect(() => {
- if (transactionDetail) {
- if (transactionDetail.payment_method_name) { dispatch(paymentObject.actions.requestPaymentMethodFaq(transactionDetail.payment_instruction_text)); }
- }
- }, [transactionDetail]);
- // End Payment FAQ //
- // Redirect to detail page based on trx condition //
- const redirectLoading = useSelector(
- (state: IReducers) =>
- state.statusReducers.loadingState[transactionObject.names.redirectToOrderFromPaymentConfirmation],
- shallowEqual,
- );
- const updateTheTimeRemains = (remainingMs: number) => {
- setTimeRemaining(remainingMs);
- };
- React.useEffect(() => {
- if (timeRemaining < 1000) setIsReloadable(true);
- else setIsReloadable(false);
- }, [timeRemaining]);
- const goToDetailPage = () => {
- if (!connectStatus && !isReloadable) {
- dispatch(
- statusObject.actions.errorSetNew({
- errorCode: ERR_TYPES.CONNECTION_LOSS_REFRESH_FAIL,
- errorMessage: getErrorMessage(ERR_TYPES.CONNECTION_LOSS_REFRESH_FAIL),
- }),
- );
- } else if (!connectStatus && isReloadable) {
- if (paymentDetailDataFromPaymentService) {
- if (paymentDetailDataFromPaymentService.transaction_type) {
- dispatch(
- paymentObject.actions.reqSyncPaymentOvo({
- transaction_id: Number(router.query.TR_id),
- transaction_type: paymentDetailDataFromPaymentService.transaction_type,
- }),
- );
- }
- }
- } else if (paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER) {
- dispatch(
- navigationObject.actions.routeNavigateTo({
- routeName: ROUTER_NAME.OFFICIAL_STORE_VOUCHER_ORDER_DETAIL,
- params: { id: transactionDetail.id },
- }),
- );
- } else if (paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_TOPUP) {
- dispatch(
- navigationObject.actions.routeNavigateTo({
- routeName: ROUTER_NAME.OFFICIAL_STORE_TOPUP_ORDER_DETAIL,
- params: { id: transactionDetail.id },
- }),
- );
- } else {
- dispatch(
- transactionObject.actions.redirectToOrderFromPaymentConfirmation({ transaction_id: transactionDetail.id }),
- );
- }
- };
- const goToDirectPayment = () => {
- openSandbox(
- transactionDetail.payment_method_name,
- transactionDetail.direct_payment?.gateway,
- transactionDetail.direct_payment?.payload,
- );
- };
- React.useEffect(() => {
- if (isReloadable && ovoPaymentSync) router.reload();
- }, [isReloadable, ovoPaymentSync]);
- const gotoHome = () => {
- dispatch(navigationObject.actions.routeNavigateTo({ routeName: ROUTER_NAME.HOME }));
- };
- // End redirect to detail page based on trx condition //
- const region = useSelector((state: IReducers) => state.regionReducers.regionData);
- const isGlobal: boolean = region.country_code !== REGION_CODE.INDONESIA;
- const { foreignExchangeRate } = CurrencyHandler.useForeignExchangeRate();
- const adminFeeText = useLanguage('biaya_admin');
- const displayTransactionData = () => {
- if (transactionDetail) {
- const extraCharge = transactionDetail.transaction_fees.map((item: any) => ({
- name: item.info === 'PREMIUM_BUYER' ? 'Biaya Layanan Premium' : '',
- nominal: item.amount,
- }));
- if (transactionDetail.payment_method_name && transactionDetail.payment_method_name !== DEFAULT_PAYMENT.name) {
- extraCharge.push({
- name: adminFeeText,
- nominal: transactionDetail.total_payment_fee,
- });
- }
- const paymentStatus = parseTransactionStatus(transactionDetail.status);
- let paymentDueDate = customDateConstructor(transactionDetail.created_at);
- switch (transactionDetail.status) {
- case TRANSACTION_STATUS.PENDING:
- paymentDueDate = customDateConstructor(transactionDetail.payment_due_date);
- break;
- case TRANSACTION_STATUS.CONFIRMED:
- case TRANSACTION_STATUS.PAID:
- paymentDueDate = customDateConstructor(transactionDetail.confirmed_at);
- break;
- default:
- paymentDueDate = customDateConstructor(transactionDetail.created_at);
- break;
- }
- let timerCountDown;
- if (transactionDetail.payment_method_id === 47 || transactionDetail.payment_method_name === 'OVO') {
- const createAt = customDateConstructor(transactionDetail.created_at);
- timerCountDown = createAt.getTime() + 60000 - Date.now(); // one minute
- const dueDateOvo = createAt.getTime() + 60000;
- paymentDueDate = new Date(dueDateOvo);
- } else {
- timerCountDown = paymentDueDate.getTime() - Date.now();
- }
- const paymentNumber = !stringToArrayNumber(paymentMethodWithoutPaymentCode).includes(transactionDetail.payment_method_id) ?
- ((transactionDetail.payment_account || transactionDetail.payment_code) || 'needLoadCode') : null;
- let discountPriceCoupon = null;
- if (transactionDetail.coupon_code != null) {
- if (paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER) {
- discountPriceCoupon = transactionDetail.orders.reduce(
- (acc: any, val: any) => acc.discount_code_amount + val.discount_code_amount,
- )?.discount_code_amount;
- } else if (paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_TOPUP) {
- discountPriceCoupon = transactionDetail.orders.reduce(
- (acc: any, val: any) => acc.discount_amount + val.discount_amount,
- )?.discount_amount;
- } else if ((paymentSource === PAYMENT_SOURCE.CART) || (paymentSource === PAYMENT_SOURCE.QUICK_BUY)) {
- discountPriceCoupon = transactionDetail.orders.reduce(
- (acc: any, val: any) => acc.discount_amount + val.discount_amount,
- )?.discount_amount;
- }
- }
- let totalPayment = 0;
- if (paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER) {
- totalPayment = transactionDetail.total_order_value + (discountPriceCoupon ? discountPriceCoupon : 0);
- } else {
- // total payment exclude discount from using coin or coupon
- totalPayment =
- transactionDetail.total_order_value +
- (transactionDetail.total_discount_amount ? transactionDetail.total_discount_amount : 0);
- }
- let convertedTotalPayment = 0;
- transactionDetail.orders.forEach((order: any) => {
- let convertedPrice = exchangeRateConversionHelper(foreignExchangeRate, region, order.price);
- convertedTotalPayment += convertedPrice * order.quantity;
- });
- let convertedExtraCharge = 0;
- extraCharge.forEach((item: any) => {
- const convertedAmount = exchangeRateConversionHelper(foreignExchangeRate, region, item.nominal);
- convertedExtraCharge += convertedAmount;
- });
- let convertedGrandTotal = convertedTotalPayment + convertedExtraCharge;
- const isCreditCard = Boolean(transactionDetail.is_credit_card);
- setPaymentDetail({
- differentiator: paymentStatus,
- timeStart: timerCountDown,
- paymentMethod: transactionDetail.payment_method_name || DEFAULT_PAYMENT.name,
- paymentMethodImageURL: transactionDetail.payment_method_media_url || DEFAULT_PAYMENT.media_url,
- timeDesc: timezoneFormatDayDateTime(paymentDueDate, region), // TODO
- paymentNumber: paymentNumber,
- withCopyButton: Boolean(transactionDetail.payment_code), // TODO
- payments: transactionDetail.orders.map((order: any) => ({
- name: order.product_name,
- nominal: (!isGlobal ? order.price : exchangeRateConversionHelper(foreignExchangeRate, region, order.price)), // entar cek make sure lebih dari satu
- qty: order.quantity,
- })),
- extraCharge: extraCharge, // cek lagi make sure pake premium
- totalPayment: (!isGlobal ? totalPayment : convertedTotalPayment),
- discount: transactionDetail.discount_percentage ? transactionDetail.discount_percentage : 0,
- discountPrice: transactionDetail.discount_amounts ? transactionDetail.discount_amounts : 0,
- discountPriceCoupon: discountPriceCoupon,
- usedDompetkuBalance: transactionDetail.used,
- grandTotal: (!isGlobal ? transactionDetail.invoice_amount : convertedGrandTotal),
- paymentGuideContents: [{ title: paymentMethodFaq?.title || '', content: paymentMethodFaq?.body }],
- primaryButtonClick: (isCreditCard && paymentStatus === 'wait') ? goToDirectPayment : goToDetailPage,
- secondaryButtonClick: gotoHome,
- userEmail: paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER ? transactionDetail.buyer_email : '',
- userPhoneNUmber: paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER ? transactionDetail.buyer_phone : '',
- getTransaction: getTransaction,
- isCreditCard: isCreditCard,
- });
- }
- };
- // Display Transaction Data //
- React.useEffect(() => {
- displayTransactionData();
- }, [transactionDetail, paymentMethodFaq, isReloadable, paymentMethodWithoutPaymentCode, paymentSource, adminFeeText]);
- // End Display Transaction Data //
- // Handle Back //
- const paymentEntryUrl = useSelector((state: IReducers) => state.paymentReducers.paymentEntryUrl, shallowEqual);
- const defaultRedirectUrl = React.useRef(routeBuilder(ROUTER_NAME.HOME, {}, region.country_code));
- const backUrl: string = paymentDetail?.differentiator === 'failed' ? paymentEntryUrl : defaultRedirectUrl.current;
- React.useEffect(() => {
- if (cancelPayment) {
- const timer = setTimeout(() => {
- router.replace(backUrl || defaultRedirectUrl.current);
- document.body.scrollIntoView();
- }, 1000);
- return () => clearTimeout(timer);
- }
- }, [cancelPayment]);
- React.useEffect(() => {
- // Handleback browser
- const handler = () => router.replace(backUrl || defaultRedirectUrl.current);
- window.addEventListener('popstate', handler);
- return () => {
- const timeout = setTimeout(() => {
- window.removeEventListener('popstate', handler);
- clearTimeout(timeout);
- }, 500);
- };
- }, []);
- // End Handle Back //
- // BEGIN ITEMKU WORLD COIN
- const [usedItemkuWorldCoin, setUsedItemkuWorldCoin] = React.useState<number>(0);
- const [grandTotal, setGrandTotal] = React.useState<number>(0);
- React.useEffect(() => {
- if (transactionDetail) {
- setUsedItemkuWorldCoin(transactionDetail.coupon_code != null ? 0 : transactionDetail.total_discount_amount);
- }
- }, [transactionDetail]);
- React.useEffect(() => {
- if (paymentDetail?.grandTotal) {
- const grandTotalSum: number = paymentDetail?.grandTotal;
- setGrandTotal(grandTotalSum);
- }
- }, [paymentDetail]);
- // END ITEMKU WORLD COIN
- // Wallet Flow Data //
- const {
- walletFlows,
- loadWalletFlows,
- } = WalletHandler.useWalletFlow();
- const [cashback, setCashback] = React.useState<number>(0);
- React.useEffect(() => {
- if (transactionDetail && transactionDetail.is_credit_card) {
- loadWalletFlows({
- page: 1,
- per_page: 10,
- transaction_groups: ['cashback_kartu_kredit'],
- reference_id: transactionDetail.payment_id,
- });
- }
- }, [transactionDetail]);
- React.useEffect(() => {
- if (walletFlows && walletFlows.length > 0) {
- setCashback(walletFlows[0].balance);
- }
- }, [walletFlows]);
- // begin loading
- React.useEffect(() => {
- if (redirectLoading || isRedirectIntercepted || cancelPayment) {
- dispatch(
- loadingComponentObject.actions.triggerLoading({
- type: 'spinner-overlay',
- }),
- );
- }
- }, [isRedirectIntercepted, cancelPayment, redirectLoading]);
- // end loading
- // Subscription
- const subscriptionStatus = useSelector((state: IReducers) => state.persistReducers.subscriptionStatus);
- const handlePinDompetku = () => {
- dispatch(navigationObject.actions.routeNavigateTo({ routeName: ROUTER_NAME.AUTODEBIT_ACTIVATION,
- query: { is_premium: router.query.is_premium || 0, page_source: SUBSCRIPTION_TRANSACTION_SOURCE.UPDATE_FROM_PD_QB } }));
- };
- React.useEffect(() => {
- if (router.query.TR_id && subscriptionStatus) {
- const trxId = parseInt(router.query.TR_id as string);
- dispatch(persistObject.actions.setSubscriptionStatusSuccess({
- ...subscriptionStatus,
- transaction_id: trxId,
- payment_source: paymentSource,
- }));
- }
- }, [router, subscriptionStatus]);
- // Subscription End
- return (
- <ConfirmationElement
- differentiator={paymentDetail?.differentiator}
- leftOnClick={() => setCancelPayment(true)}
- paymentMethod={paymentDetail?.paymentMethod}
- paymentMethodImageURL={paymentDetail?.paymentMethodImageURL}
- timeDesc={paymentDetail?.timeDesc}
- paymentNumber={paymentDetail?.paymentNumber}
- timeStart={paymentDetail?.timeStart}
- payments={paymentDetail?.payments}
- extraCharge={paymentDetail?.extraCharge}
- totalPayment={paymentDetail?.totalPayment ? paymentDetail.totalPayment : 0}
- discount={paymentDetail?.discount}
- discountPrice={paymentDetail?.discountPrice}
- usedDompetkuBalance={paymentDetail?.usedDompetkuBalance}
- paymentGuideContents={paymentDetail?.paymentGuideContents}
- primaryButtonClick={paymentDetail?.primaryButtonClick}
- secondaryButtonClick={paymentDetail?.secondaryButtonClick}
- withCopyButton={paymentDetail?.withCopyButton}
- isOfficialStoreVoucher={paymentSource === PAYMENT_SOURCE.OFFICIAL_STORE_VOUCHER}
- userEmail={paymentDetail?.userEmail}
- userPhoneNUmber={paymentDetail?.userPhoneNUmber}
- discountPriceCoupon={paymentDetail?.discountPriceCoupon}
- isLoading={transactionDetailLoading || (!transactionDetailLoading && !transactionDetail)}
- getTransaction={paymentDetail?.getTransaction}
- noteDirectPaymentOvo={noteForDirectPaymentOvo}
- grandTotal={grandTotal}
- usedItemkuWorldCoin={usedItemkuWorldCoin}
- itemkuWorldCoinMaxDisc={maxCoinDiscount}
- isConnected={connectStatus}
- updateTheTimeRemains={updateTheTimeRemains}
- isShowDiamondBanner={checkGamesBonus ? isShowDiamondBanner(checkGamesBonus) : false}
- pinDompetkuClick={handlePinDompetku}
- isSubscription={paymentSource !== PAYMENT_SOURCE.SUBSCRIPTION_BUY_NOW && subscriptionStatus != null}
- isCreditCard={!!paymentDetail?.isCreditCard}
- dompetkuCashback={cashback}
- />
- );
- };
- export default PaymentConfirmationTemplate;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement