| @@ -1,249 +0,0 @@ | |||||
| // material-ui | |||||
| import { | |||||
| Grid, | |||||
| Typography, | |||||
| Stack, | |||||
| Button, | |||||
| } from '@mui/material'; | |||||
| import * as React from "react"; | |||||
| import * as HttpUtils from "utils/HttpUtils"; | |||||
| import { useNavigate } from "react-router-dom"; | |||||
| import FpsIcon from "assets/images/icons/fps.svg"; | |||||
| import { useLocation } from 'react-router-dom'; | |||||
| import {paymentPath} from "auth/utils"; | |||||
| // import {poll} from "utils/Utils"; | |||||
| import Loadable from 'components/Loadable'; | |||||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||||
| const BackgroundHead = { | |||||
| backgroundImage: `url(${titleBackgroundImg})`, | |||||
| width: '100%', | |||||
| height: '100%', | |||||
| backgroundSize: 'contain', | |||||
| backgroundRepeat: 'no-repeat', | |||||
| backgroundColor: '#0C489E', | |||||
| backgroundPosition: 'right' | |||||
| } | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||||
| const Index = () => { | |||||
| const navigate = useNavigate() | |||||
| const location = useLocation(); | |||||
| const [paymentData, setPaymentData] = React.useState({}); | |||||
| const [onReady, setOnReady] = React.useState(false); | |||||
| const [paymentid, setPaymentid] = React.useState(""); | |||||
| const [fpsmerchanttimeoutdatetime, setFpsmerchanttimeoutdatetime] = React.useState(""); | |||||
| const [fpsqrcodeimgbase64, setFpsqrcodeimgbase64] = React.useState(""); | |||||
| const [fpsqrcodeurl, setFpsqrcodeurl] = React.useState(""); | |||||
| const loadPaymentUrl = "/api/payment/wallet/fps"; | |||||
| const cancelPaymentUrl = "/api/payment/cancelpayment"; | |||||
| const paymentStatusApi = "/api/payment/status/"; | |||||
| // const payloadUrl = "/api/payment/wallet/fps/enquiryfpspayload/"; | |||||
| // const receiverUrl = "/noti-api/payment/payment-notification"; | |||||
| React.useEffect(() => { | |||||
| setFpsqrcodeimgbase64("") | |||||
| if(location.state != undefined){ | |||||
| setPaymentData(location.state) | |||||
| } | |||||
| loadForm(); | |||||
| }, []); | |||||
| React.useEffect(() => { | |||||
| setOnReady(true); | |||||
| }, [fpsqrcodeimgbase64]); | |||||
| const loadForm = () => { | |||||
| HttpUtils.post({ | |||||
| url: paymentPath+loadPaymentUrl, | |||||
| params:{ | |||||
| "transactionid": paymentData.transactionid, | |||||
| "webtoken": paymentData.webtoken, | |||||
| "paymentmethod":"04,BCFP,FPS", | |||||
| "order": { | |||||
| "totalamount":paymentData.amount, | |||||
| "currency":"HKD", | |||||
| "orderdetail": | |||||
| [ | |||||
| { | |||||
| "itemid": "1", | |||||
| "qty":"1", | |||||
| "unitprice":paymentData.amount, | |||||
| "amount":paymentData.amount | |||||
| }, | |||||
| ] | |||||
| }, | |||||
| // "locale":"<locale>", | |||||
| // "eserviceid":"<eserviceid>" | |||||
| }, | |||||
| onSuccess: function(responseData){ | |||||
| /* | |||||
| { | |||||
| "paymentid": "<paymentid>", | |||||
| "paymentstatus": "<paymentstatus>", | |||||
| "fpsmerchanttimeoutdatetime": <fpsmerchanttimeoutdatetime>, | |||||
| "fpsqrcodeimgbase64": "<fpsqrcodeimgbase64>", | |||||
| "fpsqrcodeurl": "<fpsqrcodeurl>" | |||||
| } | |||||
| */ | |||||
| setFpsqrcodeimgbase64(responseData.fpsqrcodeimgbase64); | |||||
| setPaymentid(responseData.paymentid); | |||||
| setFpsmerchanttimeoutdatetime(responseData.fpsmerchanttimeoutdatetime); | |||||
| const parsedUrl = new URL(responseData.fpsqrcodeurl); | |||||
| const fpsqrcodeurl = parsedUrl.pathname | |||||
| setFpsqrcodeurl(fpsqrcodeurl) | |||||
| polling() | |||||
| } | |||||
| }); | |||||
| } | |||||
| const getPaymentStatus = () => { | |||||
| HttpUtils.post({ | |||||
| url: paymentPath+paymentStatusApi+paymentid, | |||||
| params:{ | |||||
| "apprefid": paymentData.transactionid, | |||||
| "webtoken": paymentData.webtoken, | |||||
| }, | |||||
| onSuccess: function(responseData){ | |||||
| const paymentstatuscode = responseData.paymentdetail.result.paymentstatuscode; | |||||
| if (paymentstatuscode === 'APPR') { | |||||
| const timestamp = '?t=' + Date.now(); | |||||
| window.top.location.href = payment.config.domain + payment.config.ackPagePath + timestamp; | |||||
| } else if (paymentstatuscode === 'CANC') { | |||||
| window.top.location.href = payment.config.domain + payment.config.indexPagePath; | |||||
| } else { | |||||
| window.top.location.href = payment.config.domain + payment.config.errPagePath; | |||||
| } | |||||
| }, | |||||
| onError: function(){ | |||||
| cancelPayment() | |||||
| } | |||||
| }); | |||||
| }; | |||||
| React.useEffect(() => { | |||||
| //Fake | |||||
| setFpsmerchanttimeoutdatetime(new Date().now()?500:null); | |||||
| // | |||||
| const timeOut = fpsmerchanttimeoutdatetime; | |||||
| const interval = setInterval(() => { | |||||
| getPaymentStatus(); | |||||
| console.log("test"); | |||||
| }, timeOut); | |||||
| return () => clearInterval(interval); | |||||
| }, []); | |||||
| const cancelPayment = ()=>{ | |||||
| HttpUtils.post({ | |||||
| url: paymentPath+cancelPaymentUrl, | |||||
| params:{ | |||||
| "transactionid": paymentData.transactionid, | |||||
| "webtoken": paymentData.webtoken, | |||||
| "paymentid": paymentid | |||||
| }, | |||||
| onSuccess: function(){ | |||||
| navigate("/dashboard"); | |||||
| } | |||||
| }); | |||||
| } | |||||
| // const getPayload = ()=>{ | |||||
| // HttpUtils.get({ | |||||
| // url: payloadUrl+"<paymenttoken>", | |||||
| // onSuccess: function(responseData){ | |||||
| // /* | |||||
| // { | |||||
| // "payload": "<payload>" | |||||
| // } | |||||
| // */ | |||||
| // } | |||||
| // }); | |||||
| // } | |||||
| // const getReceiver = ()=>{ | |||||
| // HttpUtils.get({ | |||||
| // url: receiverUrl+"<paymenttoken>", | |||||
| // onSuccess: function(responseData){ | |||||
| // /* | |||||
| // { | |||||
| // "payload": "<payload>" | |||||
| // } | |||||
| // */ | |||||
| // } | |||||
| // }); | |||||
| // } | |||||
| return ( | |||||
| !onReady ? | |||||
| <LoadingComponent /> | |||||
| : | |||||
| ( | |||||
| <Grid container sx={{ minHeight: '110vh', backgroundColor: '#fff' }} direction="column" justifyContent="flex-start" alignItems="center" > | |||||
| <Grid item xs={12} width="100%"> | |||||
| <div style={BackgroundHead} width="100%"> | |||||
| <Stack direction="row" height='70px'> | |||||
| <Typography ml={15} color='#FFF' variant="h4" sx={{ pt: 2 }}>公共啟事:FPS付款</Typography> | |||||
| </Stack> | |||||
| </div> | |||||
| </Grid> | |||||
| {/*row 1*/} | |||||
| <Grid item xs={12} md={12} > | |||||
| <Grid container justifyContent="flex-start" alignItems="center" > | |||||
| <center> | |||||
| <Grid item xs={12} md={12} > | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||||
| <img src={FpsIcon} width="80" height="80" alt="FPS"></img> | |||||
| <br /> | |||||
| 支付金額 | |||||
| <br /> | |||||
| {"$HK " + paymentData.amount} | |||||
| </Typography> | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||||
| 請掃描以下二維碼 | |||||
| <br /> | |||||
| <img src={fpsqrcodeimgbase64} alt="QR Code"/> | |||||
| <img src={fpsqrcodeurl} alt="QR Code"/> | |||||
| <br /> | |||||
| 二維碼有效期限10分鐘 | |||||
| <br /> | |||||
| 請在規定時間內完成付款流程 | |||||
| </Typography> | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||||
| <Button | |||||
| component="span" | |||||
| variant="contained" | |||||
| size="large" | |||||
| color="error" | |||||
| onClick={()=>{ | |||||
| cancelPayment(); | |||||
| }} | |||||
| sx={{ m: 4 }} | |||||
| >取消付款</Button> | |||||
| </Typography> | |||||
| </Grid> | |||||
| </center> | |||||
| </Grid> | |||||
| </Grid> | |||||
| {/*row 2*/} | |||||
| </Grid > | |||||
| ) | |||||
| ); | |||||
| }; | |||||
| export default Index; | |||||
| @@ -1,11 +1,242 @@ | |||||
| // material-ui | |||||
| import { | |||||
| Grid, | |||||
| Typography, | |||||
| Stack, | |||||
| Button, | |||||
| } from '@mui/material'; | |||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import * as HttpUtils from "utils/HttpUtils"; | |||||
| import { useNavigate } from "react-router-dom"; | |||||
| import FpsIcon from "assets/images/icons/fps.svg"; | |||||
| import { useLocation } from 'react-router-dom'; | |||||
| import {paymentPath} from "auth/utils"; | |||||
| // import {poll} from "utils/Utils"; | |||||
| import Loadable from 'components/Loadable'; | import Loadable from 'components/Loadable'; | ||||
| const Card = Loadable(React.lazy(() => import('./card'))); | |||||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||||
| const BackgroundHead = { | |||||
| backgroundImage: `url(${titleBackgroundImg})`, | |||||
| width: '100%', | |||||
| height: '100%', | |||||
| backgroundSize: 'contain', | |||||
| backgroundRepeat: 'no-repeat', | |||||
| backgroundColor: '#0C489E', | |||||
| backgroundPosition: 'right' | |||||
| } | |||||
| const Index = ({ isPopUp, url }) => { | |||||
| const navigate = useNavigate() | |||||
| const location = useLocation(); | |||||
| const [paymentData, setPaymentData] = React.useState({}); | |||||
| const [onReady, setOnReady] = React.useState(false); | |||||
| const [paymentid, setPaymentid] = React.useState(""); | |||||
| const [fpsmerchanttimeoutdatetime, setFpsmerchanttimeoutdatetime] = React.useState(""); | |||||
| const [redirecturl, setRedirectUrl] = React.useState(""); | |||||
| // const [paymentstatuscode, setPaymentstatuscode] = React.useState(""); | |||||
| // const [fpsqrcodeurl, setFpsqrcodeurl] = React.useState(""); | |||||
| // const pasgPath = 'https://fps.payapps.hkicl.com.hk'; //PRD | |||||
| // const pasgPath = 'https://sim.fps.payapps.hkicl.com.hk'; //Testing | |||||
| // const loadPaymentUrl = "/api/payment/web/"; | |||||
| const cancelPaymentUrl = "/api/payment/cancelpayment"; | |||||
| // const paymentStatusApi = "/api/payment/status/"; | |||||
| // const payloadUrl = "/api/payment/wallet/fps/enquiryfpspayload/"; | |||||
| // const receiverUrl = "/noti-api/payment/payment-notification"; | |||||
| //timer | |||||
| const currentTimer = React.useRef(); | |||||
| const [time, setTime] = React.useState(0); | |||||
| React.useEffect(() => { | |||||
| setFpsqrcodeimgbase64("") | |||||
| if (location.state != undefined) { | |||||
| setPaymentData(location.state) | |||||
| } | |||||
| loadForm(); | |||||
| currentTimer.current = setInterval(() => { | |||||
| getPaymentStatus(); | |||||
| setTime((prevTime) => prevTime + 1); | |||||
| }, 500); | |||||
| return () => clearInterval(currentTimer.current); | |||||
| }, []); | |||||
| React.useEffect(() => { | |||||
| setOnReady(true); | |||||
| }, [redirecturl]); | |||||
| const loadForm = () => { | |||||
| const timeoutdatetime = "2023-10-26T09:04:30Z[UTC]" | |||||
| const convertedDateString = timeoutdatetime.replace("[UTC]", ""); | |||||
| setFpsmerchanttimeoutdatetime(convertedDateString) | |||||
| setPaymentid("C202310268000681") | |||||
| // HttpUtils.post({ | |||||
| // url: paymentPath+loadPaymentUrl+paymentData.type, | |||||
| // params:{ | |||||
| // "transactionid": paymentData.transactionid, | |||||
| // "apprefid:": paymentData.transactionid, | |||||
| // "webtoken": paymentData.webtoken, | |||||
| // "paymentmethod":paymentData.paymentMethod, | |||||
| // "order": { | |||||
| // "totalamount":paymentData.amount, | |||||
| // "currency":"HKD", | |||||
| // "orderdetail": | |||||
| // [ | |||||
| // { | |||||
| // "itemid": "1", | |||||
| // "qty":"1", | |||||
| // "unitprice":paymentData.amount, | |||||
| // "amount":paymentData.amount | |||||
| // }, | |||||
| // ] | |||||
| // }, | |||||
| // // "locale":"<locale>", | |||||
| // // "eserviceid":"<eserviceid>", | |||||
| // "returnurl": window.location.hostname+"/payment/success" | |||||
| // }, | |||||
| // onSuccess: function(responseData){ | |||||
| // /* | |||||
| // { | |||||
| // "transactionid": "<transactionid>", | |||||
| // "redirecturl": "<redirecturl>" | |||||
| // } | |||||
| // */ | |||||
| // setRedirectUrl(responseData.redirecturl); | |||||
| // | |||||
| // } | |||||
| // }); | |||||
| } | |||||
| const getPaymentStatus = () => { | |||||
| // HttpUtils.post({ | |||||
| // url: paymentPath+paymentStatusApi+paymentid, | |||||
| // params:{ | |||||
| // "apprefid": paymentData.transactionid, | |||||
| // "webtoken": paymentData.webtoken, | |||||
| // }, | |||||
| // onSuccess: function(responseData){ | |||||
| // const paymentstatuscode = responseData.paymentdetail.result.paymentstatuscode; | |||||
| // if (paymentstatuscode === 'APPR') { | |||||
| // const timestamp = '?t=' + Date.now(); | |||||
| // window.top.location.href = paymentPath + payment.config.ackPagePath + timestamp; | |||||
| // } else if (paymentstatuscode === 'CANC') { | |||||
| // window.top.location.href = paymentPath + payment.config.indexPagePath; | |||||
| // } else { | |||||
| // window.top.location.href = paymentPath + payment.config.errPagePath; | |||||
| // } | |||||
| // }, | |||||
| // onError: function(){ | |||||
| // cancelPayment() | |||||
| // clearInterval(currentTimer.current); | |||||
| // } | |||||
| // }); | |||||
| }; | |||||
| React.useEffect(() => { | |||||
| const timeOutDate = new Date(fpsmerchanttimeoutdatetime); | |||||
| const currentTime = new Date; | |||||
| if (timeOutDate.getTime() < currentTime.getTime()) { | |||||
| console.log("stop"); | |||||
| clearInterval(currentTimer.current); | |||||
| } | |||||
| }, [time]) | |||||
| const cancelPayment = () => { | |||||
| HttpUtils.post({ | |||||
| url: paymentPath + cancelPaymentUrl, | |||||
| params: { | |||||
| "transactionid": paymentData.transactionid, | |||||
| "webtoken": paymentData.webtoken, | |||||
| "paymentid": paymentid | |||||
| }, | |||||
| onSuccess: function () { | |||||
| navigate("/dashboard"); | |||||
| } | |||||
| }); | |||||
| } | |||||
| // const getPayload = ()=>{ | |||||
| // HttpUtils.get({ | |||||
| // url: payloadUrl+"<paymenttoken>", | |||||
| // onSuccess: function(responseData){ | |||||
| // /* | |||||
| // { | |||||
| // "payload": "<payload>" | |||||
| // } | |||||
| // */ | |||||
| // } | |||||
| // }); | |||||
| // } | |||||
| // const getReceiver = ()=>{ | |||||
| // HttpUtils.get({ | |||||
| // url: receiverUrl+"<paymenttoken>", | |||||
| // onSuccess: function(responseData){ | |||||
| // /* | |||||
| // { | |||||
| // "payload": "<payload>" | |||||
| // } | |||||
| // */ | |||||
| // } | |||||
| // }); | |||||
| // } | |||||
| const Index = () => { | |||||
| return ( | return ( | ||||
| <Card/> | |||||
| !onReady ? | |||||
| <LoadingComponent /> | |||||
| : | |||||
| ( | |||||
| <Grid container sx={{ minHeight: '110vh', backgroundColor: '#fff' }} direction="column" justifyContent="flex-start" alignItems="center" > | |||||
| <Grid item xs={12} width="100%"> | |||||
| <div style={BackgroundHead} width="100%"> | |||||
| <Stack direction="row" height='70px'> | |||||
| <Typography ml={15} color='#FFF' variant="h4" sx={{ pt: 2 }}>公共啟事: 信用卡付款</Typography> | |||||
| </Stack> | |||||
| </div> | |||||
| </Grid> | |||||
| {/*row 1*/} | |||||
| <Grid item xs={12} md={12} > | |||||
| <Grid container justifyContent="flex-start" alignItems="center" > | |||||
| <center> | |||||
| <Grid item xs={12} md={12} > | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||||
| <img src={FpsIcon} width="80" height="80" alt="FPS"></img> | |||||
| <br /> | |||||
| 支付金額 | |||||
| <br /> | |||||
| {"$HK " + paymentData.amount} | |||||
| </Typography> | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||||
| <Button | |||||
| component="span" | |||||
| variant="contained" | |||||
| size="large" | |||||
| color="error" | |||||
| onClick={() => { | |||||
| cancelPayment(); | |||||
| }} | |||||
| sx={{ m: 4 }} | |||||
| >取消付款</Button> | |||||
| </Typography> | |||||
| </Grid> | |||||
| </center> | |||||
| </Grid> | |||||
| </Grid> | |||||
| {/*row 2*/} | |||||
| </Grid > | |||||
| ) | |||||
| ); | ); | ||||
| } | } | ||||
| @@ -233,7 +233,7 @@ const Index = () => { | |||||
| <br /> | <br /> | ||||
| 二維碼有效期限10分鐘 | 二維碼有效期限10分鐘 | ||||
| <br /> | <br /> | ||||
| 請在規定時間內完成付款流程 ({fpsmerchanttimeoutdatetime}) | |||||
| 請在規定時間內完成付款流程 | |||||
| </Typography> | </Typography> | ||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | ||||
| @@ -0,0 +1,98 @@ | |||||
| // material-ui | |||||
| import { | |||||
| Grid, | |||||
| Typography, | |||||
| Stack, | |||||
| } from '@mui/material'; | |||||
| import * as UrlUtils from "utils/ApiPathConst"; | |||||
| import * as React from "react"; | |||||
| import * as HttpUtils from "utils/HttpUtils"; | |||||
| import { useParams } from "react-router-dom"; | |||||
| import { useNavigate } from "react-router-dom"; | |||||
| import Loadable from 'components/Loadable'; | |||||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||||
| const BackgroundHead = { | |||||
| backgroundImage: `url(${titleBackgroundImg})`, | |||||
| width: '100%', | |||||
| height: '100%', | |||||
| backgroundSize: 'contain', | |||||
| backgroundRepeat: 'no-repeat', | |||||
| backgroundColor: '#0C489E', | |||||
| backgroundPosition: 'right' | |||||
| } | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||||
| const Index = () => { | |||||
| const params = useParams(); | |||||
| const navigate = useNavigate() | |||||
| const [record, setRecord] = React.useState(); | |||||
| const [onReady, setOnReady] = React.useState(false); | |||||
| React.useEffect(() => { | |||||
| loadForm(); | |||||
| }, []); | |||||
| React.useEffect(() => { | |||||
| setOnReady(true); | |||||
| }, [record]); | |||||
| const loadForm = () => { | |||||
| if (params.id > 0) { | |||||
| HttpUtils.get({ | |||||
| url: UrlUtils.GET_PROOF_PAY + "/" + params.id, | |||||
| onSuccess: (responseData) => { | |||||
| if (!responseData.data?.id) { | |||||
| navigate("/proof/search"); | |||||
| } | |||||
| setRecord(responseData.data); | |||||
| } | |||||
| }); | |||||
| } | |||||
| } | |||||
| return ( | |||||
| !onReady ? | |||||
| <LoadingComponent /> | |||||
| : | |||||
| ( | |||||
| <Grid container sx={{ minHeight: '110vh', backgroundColor: '#fff' }} direction="column" justifyContent="flex-start" alignItems="center" > | |||||
| <Grid item xs={12} width="100%"> | |||||
| <div style={BackgroundHead} width="100%"> | |||||
| <Stack direction="row" height='70px'> | |||||
| <Typography ml={15} color='#FFF' variant="h4" sx={{ pt: 2 }}>公共啟事: 付款</Typography> | |||||
| </Stack> | |||||
| </div> | |||||
| </Grid> | |||||
| {/*row 1*/} | |||||
| <Grid item xs={12} md={12} > | |||||
| <Grid container justifyContent="flex-start" alignItems="center" > | |||||
| <center> | |||||
| <Grid item xs={12} md={8} > | |||||
| <Typography variant="h2" sx={{ textAlign: "left", ml: 4, mr: 4, mt: 4, borderBottom: "1px solid black" }}> | |||||
| 公共啟事:完成付款 | |||||
| </Typography> | |||||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "left" }}> | |||||
| 付款成功 | |||||
| </Typography> | |||||
| </Grid> | |||||
| </center> | |||||
| </Grid> | |||||
| </Grid> | |||||
| {/*row 2*/} | |||||
| </Grid > | |||||
| ) | |||||
| ); | |||||
| }; | |||||
| export default Index; | |||||
| @@ -1,8 +1,7 @@ | |||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import { lazy } from 'react'; | |||||
| import * as HttpUtils from "utils/HttpUtils"; | import * as HttpUtils from "utils/HttpUtils"; | ||||
| import Loadable from 'components/Loadable'; | import Loadable from 'components/Loadable'; | ||||
| const MultiPaymentWindow = Loadable(lazy(() => import('./MultiPaymentWindow'))); | |||||
| const MultiPaymentWindow = Loadable(React.lazy(() => import('./MultiPaymentWindow'))); | |||||
| // const FPS = Loadable(React.lazy(() => import('./FPS'))); | // const FPS = Loadable(React.lazy(() => import('./FPS'))); | ||||
| import {useEffect, useState} from "react"; | import {useEffect, useState} from "react"; | ||||
| import {useNavigate} from "react-router-dom"; | import {useNavigate} from "react-router-dom"; | ||||
| @@ -73,9 +72,18 @@ const Index = () => { | |||||
| useEffect(() => { | useEffect(() => { | ||||
| if (confirmPayment){ | if (confirmPayment){ | ||||
| setOpen(false); | setOpen(false); | ||||
| let transactionid = ""; | |||||
| let webtoken = ""; | |||||
| if(selectedPaymentMethod === "FPS"){ | if(selectedPaymentMethod === "FPS"){ | ||||
| navigate('/payment/fps', {state:{amount:totalAmount,transactionid:"",webtoken:""} }); | |||||
| navigate('/payment/fps', {state:{amount:totalAmount,transactionid:transactionid,webtoken:webtoken} }); | |||||
| // navigate('/payment/fps', {state:{amount:totalAmount,transactionid:transactionData.transactionid,webtoken:transactionData.webtoken} }); | // navigate('/payment/fps', {state:{amount:totalAmount,transactionid:transactionData.transactionid,webtoken:transactionData.webtoken} }); | ||||
| }else if(selectedPaymentMethod ==="Visa" || selectedPaymentMethod ==="Mastercard"){ | |||||
| navigate('/payment/card', {state:{amount:totalAmount,transactionid:transactionid,webtoken:webtoken, type:"creditcard", paymentMethod:"02,BCMP,CreditCard"} }); | |||||
| }else if(selectedPaymentMethod ==="UnionPay" || selectedPaymentMethod ==="JCB"){ | |||||
| navigate('/payment/card', {state:{amount:totalAmount,transactionid:transactionid,webtoken:webtoken, type:"creditcard", paymentMethod:"03,BCMP,CreditCard"} }); | |||||
| }else if(selectedPaymentMethod ==="PPS"){ | |||||
| navigate('/payment/card', {state:{amount:totalAmount,transactionid:transactionid,webtoken:webtoken, type:"pps", paymentMethod:"01,PPSB,PPS"} }); | |||||
| } | } | ||||
| } | } | ||||
| @@ -17,6 +17,7 @@ const ProofPayment = Loadable(lazy(() => import('pages/Proof/Payment'))); | |||||
| const Payment_Multi = Loadable(lazy(() => import('pages/Payment'))); | const Payment_Multi = Loadable(lazy(() => import('pages/Payment'))); | ||||
| const Payment_FPS = Loadable(lazy(() => import('pages/Payment/FPS'))); | const Payment_FPS = Loadable(lazy(() => import('pages/Payment/FPS'))); | ||||
| const Payment_Card = Loadable(lazy(() => import('pages/Payment/Card'))); | const Payment_Card = Loadable(lazy(() => import('pages/Payment/Card'))); | ||||
| const Payment_Success = Loadable(lazy(() => import('pages/Payment/PaymentSuccess'))); | |||||
| // ==============================|| MAIN ROUTING ||============================== // | // ==============================|| MAIN ROUTING ||============================== // | ||||
| @@ -75,6 +76,10 @@ const PublicDashboard = { | |||||
| path: 'payment/card', | path: 'payment/card', | ||||
| element: <Payment_Card/> | element: <Payment_Card/> | ||||
| }, | }, | ||||
| { | |||||
| path: 'payment/success', | |||||
| element: <Payment_Success/> | |||||
| }, | |||||
| ] | ] | ||||
| }, | }, | ||||
| ] | ] | ||||