Explorar el Código

Merge branch 'paymentApi' into Paging_Enhancement

# Conflicts:
#	src/pages/Payment/MultiPaymentWindow.js
#	src/pages/Proof/Payment/Pay.js
#	src/pages/PublicNotice/Details_Public/ApplicationDetailCard.js
#	src/pages/PublicNotice/ListPanel/PendingPaymentTab.js
#	src/pages/PublicNotice/ListPanel/index.js
master
Alex Cheung hace 1 año
padre
commit
456152986f
Se han modificado 16 ficheros con 268 adiciones y 146 borrados
  1. +4
    -3
      src/pages/Payment/Card/index.js
  2. +1
    -1
      src/pages/Payment/Details_GLD/PaymentDetails.js
  3. +18
    -8
      src/pages/Payment/Details_Public/PaymentDetails.js
  4. +43
    -9
      src/pages/Payment/Details_Public/index.js
  5. +56
    -38
      src/pages/Payment/FPS/AckPage.js
  6. +53
    -20
      src/pages/Payment/FPS/FPS.js
  7. +9
    -20
      src/pages/Payment/FPS/fpscallback.js
  8. +3
    -1
      src/pages/Payment/MultiPaymentWindow.js
  9. +41
    -29
      src/pages/Payment/PaymentCallback.js
  10. +2
    -1
      src/pages/Payment/Search_Public/DataGrid.js
  11. +6
    -3
      src/pages/Payment/index.js
  12. +3
    -1
      src/pages/Proof/Payment/Pay.js
  13. +3
    -1
      src/pages/PublicNotice/Details_Public/ApplicationDetailCard.js
  14. +7
    -6
      src/pages/PublicNotice/ListPanel/PendingPaymentTab.js
  15. +18
    -4
      src/utils/ApiPathConst.js
  16. +1
    -1
      src/utils/statusUtils/PaymentStatus.js

+ 4
- 3
src/pages/Payment/Card/index.js Ver fichero

@@ -7,10 +7,11 @@ import {
} from '@mui/material';
import * as React from "react";
import * as HttpUtils from "utils/HttpUtils";
import * as UrlUtils from "utils/ApiPathConst";
import { useNavigate } from "react-router-dom";

import { useLocation } from 'react-router-dom';
import {paymentPath} from "auth/utils";
// import {paymentPath} from "auth/utils";
// import {poll} from "utils/Utils";
import VisaIcon from "assets/images/icons/visacard.svg";
import MasterIcon from "assets/images/icons/mastercard.svg";
@@ -45,7 +46,7 @@ const Index = () => {
// 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 loadPaymentUrl = "/api/payment/web/";
// const paymentStatusApi = "/api/payment/status/";
// const payloadUrl = "/api/payment/wallet/fps/enquiryfpspayload/";
// const receiverUrl = "/noti-api/payment/payment-notification";
@@ -74,7 +75,7 @@ const Index = () => {
localStorage.setItem("webtoken", paymentData.webtoken)

HttpUtils.post({
url: paymentPath+loadPaymentUrl+(paymentData.type=="PPS"?"pps":"creditcard"),
url: UrlUtils.LOAD_PAYMENT_URL+(paymentData.type=="PPS"?"pps":"creditcard"),
params:{
"transactionid": paymentData.transactionid,
//"apprefid:": paymentData.transactionid,


+ 1
- 1
src/pages/Payment/Details_GLD/PaymentDetails.js Ver fichero

@@ -32,7 +32,7 @@ const PaymentDetails = ({ formData,doPrint,onDownload }) => {
}, [data]);

const getPaymentMethod=()=>{
let paymentmethod = data.payload.paymentdetail.paymentmethod;
let paymentmethod = data.payload?.paymentdetail.paymentmethod;
if("01" == paymentmethod) return "PPS";
if("02" == paymentmethod || "03" == paymentmethod) return "Credit Card";
if("04" == paymentmethod) return "FPS";


+ 18
- 8
src/pages/Payment/Details_Public/PaymentDetails.js Ver fichero

@@ -24,21 +24,31 @@ const PaymentDetails = ({ formData,doPrint,onDownload }) => {

React.useEffect(() => {
if (formData != null && formData != undefined && Object.keys(formData).length > 0) {
console.log(formData)
setData(formData);
}
}, [formData]);
React.useEffect(() => {
if (formData != null && formData != undefined && Object.keys(formData).length > 0) {
if (data != null && data != undefined && Object.keys(data).length > 0) {
console.log(data)
setOnReady(data != {});
}
}, [data]);

const getPaymentMethod=()=>{
let paymentmethod = data?.payload?.paymentdetail?.paymentmethod;
if("01" == paymentmethod) return "PPS";
if("02" == paymentmethod || "03" == paymentmethod) return "Credit Card";
if("04" == paymentmethod) return "FPS";
let paymentmethod = ""
if (data?.payload!=null) {
paymentmethod = data.payload?.paymentdetail.paymentmethod;
if("01" == paymentmethod) return "PPS";
if("02" == paymentmethod || "03" == paymentmethod) return "Credit Card";
if("04" == paymentmethod) return "FPS";
} else {
paymentmethod = data.payMethod;
if("01,PPSB,PPS" == paymentmethod) return "PPS";
if("02,BCMP,CreditCard" == paymentmethod || "03,BCMP,CreditCard" == paymentmethod) return "Credit Card";
if("04,BCFP,FPS" == paymentmethod) return "FPS";
}
return paymentmethod;
}

@@ -85,7 +95,7 @@ const PaymentDetails = ({ formData,doPrint,onDownload }) => {
</Grid>
<Grid item xs={6} md={6} sx={{ textAlign: "left" }}>
<FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
{data.payload?.transactionid}
{data.payload?.transactionid?data.payload?.transactionid:data.transNo}
</FormLabel>
</Grid>
</Grid>
@@ -141,7 +151,7 @@ const PaymentDetails = ({ formData,doPrint,onDownload }) => {
</Grid>
<Grid item xs={6} md={6} sx={{textAlign: "left" }}>
<FormLabel sx={{ fontSize: "16px", color: "#000000" }}>
{"HK$ " + FormatUtils.currencyFormat(data.payload?.amount)}
{"HK$ " + FormatUtils.currencyFormat(data.payload?.amount?data.payload?.amount:data.payAmount)}
</FormLabel>
</Grid>
</Grid>


+ 43
- 9
src/pages/Payment/Details_Public/index.js Ver fichero

@@ -36,8 +36,10 @@ const Index = () => {
const params = useParams();
const navigate = useNavigate()
const intl = useIntl();
const [responeData, setResponeData] = React.useState({});
const [transactionData, setTransactionData] = React.useState({});

const [record, setRecord] = React.useState();
const [record, setRecord] = React.useState({});
const [itemList, setItemList] = React.useState([]);
const [onReady, setOnReady] = React.useState(false);
const [onDownload, setOnDownload] = React.useState(false);
@@ -46,13 +48,23 @@ const Index = () => {

React.useEffect(() => {
loadForm();

// window.addEventListener('resize', handleResize)
}, []);

React.useEffect(() => {
setOnReady(true);
}, [record]);
if (Object.keys(responeData).length > 0) {
setTransactionData(responeData);
}
}, [responeData]);
React.useEffect(() => {
if (Object.keys(transactionData).length > 0) {
console.log(transactionData)
console.log(itemList)
console.log(record)
setOnReady(true);
}
}, [transactionData]);

// const handleResize = () => {
// setDetailsOrder(window.innerWidth > 1023 ? 2 : -1);
@@ -77,17 +89,39 @@ const Index = () => {

const loadForm = () => {
if (params.id > 0) {

HttpUtils.get({
url: UrlUtils.PAYMENT_LOAD + "/" + params.id,
onSuccess: (responseData) => {
if (!responseData.data?.id) {
navigate("/paymentPage/search");
}
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setItemList(responseData.paymentItemList)
setRecord(responseData.data);
if(responseData.data.status==null||responseData.data.status=="INPR"){
HttpUtils.post({
url: UrlUtils.PAYMENT_RETRY_STATUS_API,
params:{
"paymentId": params.id
},
onSuccess: function(responseData2){
responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
setResponeData(responseData2.transactionData)
setItemList(responseData2.paymentItemList)
setRecord(responseData2.data);
},
onError: function(){
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setResponeData(responseData)

}
});
}else{
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setResponeData(responseData)
setItemList(responseData.paymentItemList)
setRecord(responseData.data);
}
}
});
}


+ 56
- 38
src/pages/Payment/FPS/AckPage.js Ver fichero

@@ -12,8 +12,8 @@ import * as HttpUtils from "utils/HttpUtils";
import * as UrlUtils from "utils/ApiPathConst";
// 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 { useLocation } from 'react-router-dom';
// import {paymentPath} from "auth/utils";
// import {poll} from "utils/Utils";
import * as DateUtils from "utils/DateUtils"

@@ -38,10 +38,11 @@ const BackgroundHead = {

const AckPage = () => {
// const navigate = useNavigate()
// const location = useLocation();
const location = useLocation();

// const [locationData, setLocationData] = React.useState({});
const [paymentData, setPaymentData] = React.useState({});
const [locationData, setLocationData] = React.useState({});
const [responeData, setResponeDataData] = React.useState({});
const [itemList, setItemList] = React.useState([]);
// const [paymentId, setPaymentId] = React.useState("");
@@ -50,17 +51,25 @@ const AckPage = () => {
// const [transactionDate, setTransactionDate] = React.useState("");
// const [transactionTime, setTransactionTime] = React.useState("");
const [onReady, setOnReady] = React.useState(false);
const paymentStatusApi = "/api/payment/status/";
// const paymentStatusApi = "/api/payment/status/";
const [onDownload, setOnDownload] = React.useState(false);
const intl = useIntl();
const { locale } = intl;

React.useEffect(() => {
loadForm();
if (location.state != undefined) {
setLocationData(location.state)
}
}, []);

React.useEffect(() => {
console.log(responeData)
if (Object.keys(locationData).length > 0){
loadForm();
}
}, [locationData]);

React.useEffect(() => {
// console.log(responeData)
if(Object.keys(responeData).length > 0){
setTransactionData(responeData)
}
@@ -68,7 +77,7 @@ const AckPage = () => {

React.useEffect(() => {
// console.log(paymentData)
console.log(transactionData)
// console.log(transactionData)
if(Object.keys(transactionData).length > 0 ){
setOnReady(true);
}
@@ -81,41 +90,49 @@ const AckPage = () => {
// const trnTime = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
// setTransactionDate(trnDate)
// setTransactionTime(trnTime)
let transactionid = localStorage.getItem("transactionid")
let webtoken = localStorage.getItem("webtoken")
// let transactionid = localStorage.getItem("transactionid")
// let webtoken = localStorage.getItem("webtoken")
let transactionid = locationData.transactionid
HttpUtils.post({
url: paymentPath+paymentStatusApi+transactionid,
url: UrlUtils.PAYMENT_CALLBACK_STATUS_API,
params:{
"apprefid": transactionid,
"webtoken": webtoken,
// "webtoken": webtoken,
// "paymentId": localStorage.getItem("paymentId"),
"transactionid":Number(transactionid)
},
onSuccess: function(responseData){
setResponeDataData(responseData)
if (responseData.paymentdetail?.result?.paymentstatuscode === "APPR") {
localStorage.removeItem("webtoken");
localStorage.removeItem("transactionid");
}
HttpUtils.post({
url: UrlUtils.PAYMENT_SAVE,
params: {
id: localStorage.getItem("paymentId"),
transNo: responseData.transactionid,
transDateTime: new Date(responseData.paymentdetail.time).toISOString(),
egisRefNo: responseData.paymentdetail.paymentid,
status: responseData.paymentdetail.result.paymentstatuscode,
payload: responseData
},
onSuccess: function (responseData2) {
responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
setItemList(responseData2.paymentItemList)
setPaymentData(responseData2.data);
// localStorage.removeItem("paymentId");
// setPaymentId(responseData2.id)
}
});
localStorage.removeItem("webtoken");
localStorage.removeItem("transactionid");
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setResponeDataData(responseData.transactionData)
setItemList(responseData.paymentItemList)
setPaymentData(responseData.data);


// if (responseData.paymentdetail?.result?.paymentstatuscode === "APPR") {
// }
// HttpUtils.post({
// url: UrlUtils.PAYMENT_SAVE,
// params: {
// id: localStorage.getItem("paymentId"),
// transNo: responseData.transactionid,
// transDateTime: new Date(responseData.paymentdetail.time).toISOString(),
// egisRefNo: responseData.paymentdetail.paymentid,
// status: responseData.paymentdetail.result.paymentstatuscode,
// payload: responseData
// },
// onSuccess: function (responseData2) {
// responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
// responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
// setItemList(responseData2.paymentItemList)
// setPaymentData(responseData2.data);
// // localStorage.removeItem("paymentId");
// // setPaymentId(responseData2.id)
// }
// });
}
});
@@ -147,7 +164,8 @@ const AckPage = () => {
setOnDownload(true)
const local = locale
HttpUtils.fileDownload({
url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+localStorage.getItem("paymentId")+"/"+local,
// url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+localStorage.getItem("paymentId")+"/"+local,
url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+paymentData.data.id+"/"+local,
onResponse:()=>{
setOnDownload(false)
},


+ 53
- 20
src/pages/Payment/FPS/FPS.js Ver fichero

@@ -7,10 +7,11 @@ import {
} from '@mui/material';
import * as React from "react";
import * as HttpUtils from "utils/HttpUtils";
import * as UrlUtils from "utils/ApiPathConst";
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 {paymentPath} from "auth/utils";
import {currencyFormat} from "utils/FormatUtils";
// import {poll} from "utils/Utils";

@@ -53,9 +54,9 @@ const Index = () => {
const pasgPathPrd = 'https://fps.payapps.hkicl.com.hk'; //PRD
const pasgPath = 'https://sim.fps.payapps.hkicl.com.hk'; //Testing
const loadPaymentUrl = "/api/payment/wallet/fps";
const cancelPaymentUrl = "/api/payment/cancelpayment";
const paymentStatusApi = "/api/payment/status/";
// 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";
@@ -115,11 +116,6 @@ const Index = () => {


const loadForm = () => {
// const timeoutdatetime = "2023-10-26T09:04:30Z[UTC]"
// const convertedDateString = timeoutdatetime.replace("[UTC]", "");
// setFpsmerchanttimeoutdatetime(convertedDateString)
// setPaymentid("C202310268000681")
// setPaymentstatuscode("APPR")
const webtoken = paymentData.webtoken;
const transactionid = paymentData.transactionid;
console.log(webtoken)
@@ -129,9 +125,8 @@ const Index = () => {
localStorage.setItem("transactionid", transactionid)
localStorage.setItem("webtoken", webtoken)


HttpUtils.post({
url: paymentPath+loadPaymentUrl,
url: UrlUtils.LOAD_PAYMENT_FPS_URL,
params:{
"transactionid": transactionid,
"webtoken": webtoken,
@@ -189,29 +184,64 @@ const Index = () => {
setFpsqrcodeurl(openPASGUrl)
setFpsqrcodeurlPrd(openPASGUrlPrd)
setFpsqrcodeurlFps(openPASGUrlPrdFps)

}
});

//testing
// const timeoutdatetime = "2024-05-06T11:10:30Z[UTC]"
// const convertedDateString = timeoutdatetime.replace("[UTC]", "");
// setFpsmerchanttimeoutdatetime(convertedDateString)
// setPaymentId("C202310268000681")
// const responseData=
// {
// "paymentid": "C202310268000681",
// "paymentstatus": "INPR",
// "fpsmerchanttimeoutdatetime": "2024-05-06T11:10:30Z[UTC]",
// "fpsqrcodeimgbase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAuyklEQVR4Xu3dfcy/d1nff2IAAAAASUVORK5CYII=",
// "fpsqrcodeurl": "http://127.0.0.1:8080/api/payment/wallet/fps/enquiryfpspayload/vm.JKDDlTOavR3ASviSwUnS1Lw4-"
// }
// setResponeDataData(responseData)
// const parsedUrl = new URL(responseData.fpsqrcodeurl);
// const fpsqrcodeurl = "https://"+window.location.hostname+'/payment'+parsedUrl.pathname;
// const fpsqrcodeurlwithFps = "https://"+"fps."+window.location.hostname+parsedUrl.pathname;
// console.log(parsedUrl)
// console.log(fpsqrcodeurl)
// console.log(fpsqrcodeurlwithFps)

// const openPASGUrl = pasgPath + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurl) + '&callback='
// + encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
// const openPASGUrlPrd = pasgPathPrd + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurl) + '&callback='
// + encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
// const openPASGUrlPrdFps = pasgPath + '?pay_req_obj=' + encodeURIComponent(fpsqrcodeurlwithFps) + '&callback='
// + encodeURIComponent("https://"+window.location.hostname+ '/paymentPage/fps/fpscallback?TRANSACTION_ID='+transactionid+"&WEB_TOKEN="+webtoken+"&PAYMENT_ID="+localStorage.getItem("paymentId"));
// setFpsqrcodeurl(openPASGUrl)
// setFpsqrcodeurlPrd(openPASGUrlPrd)
// setFpsqrcodeurlFps(openPASGUrlPrdFps)

}

const getPaymentStatus = () => {
if(Object.keys(paymentData).length > 0){
HttpUtils.post({
url: paymentPath+paymentStatusApi+paymentData.transactionid,
url: UrlUtils.PAYMENT_STATUS_API,
params:{
"apprefid": paymentData.transactionid,
"webtoken": paymentData.webtoken,
// "webtoken": paymentData.webtoken,
"transactionid":Number(paymentData.transactionid)
},
onSuccess: function(responseData){
const paymentstatuscode = responseData.paymentdetail.result.paymentstatuscode;
if (paymentstatuscode != "" && paymentstatuscode != "INPR" ){
if (paymentstatuscode === 'APPR') {
// const timestamp = Date.now();
navigate('/paymentPage/fps/ackpage');
let page = '/paymentPage/fps/ackpage';
let stateParams = { state: { transactionid: paymentData.transactionid} }
navigate(page, stateParams);
} else if (paymentstatuscode === 'CANC') {
// const timestamp = Date.now();
navigate('/paymentPage/fps/ackpage');
let page = '/paymentPage/fps/ackpage';
let stateParams = { state: { transactionid: paymentData.transactionid} }
navigate(page, stateParams);
} else {
// window.top.location.href = paymentPath + payment.config.errPagePath;
alert("ERROR")
@@ -237,7 +267,7 @@ const Index = () => {
// console.log(timeOutDate.getTime()-currentTime.getTime())
getPaymentStatus();
if (timeOutDate.getTime()<currentTime.getTime()){
console.log("stop");
// console.log("stop");
clearInterval(currentTimer.current);
cancelPayment()
}
@@ -246,14 +276,17 @@ const Index = () => {
const cancelPayment = ()=>{
if (Object.keys(paymentData).length>0){
HttpUtils.post({
url: paymentPath+cancelPaymentUrl,
url: UrlUtils.CANCEL_PAYMENT_URL,
params:{
"transactionid": paymentData.transactionid,
"webtoken": paymentData.webtoken,
"paymentid": fpsTransctionData.paymentid
},
onSuccess: function(){
navigate('/paymentPage/fps/ackpage');
// navigate('/paymentPage/fps/ackpage');
let page = '/paymentPage/fps/ackpage';
let stateParams = { state: { transactionid: paymentData.transactionid} }
navigate(page, stateParams);
}
});
}


+ 9
- 20
src/pages/Payment/FPS/fpscallback.js Ver fichero

@@ -86,10 +86,12 @@ const Fpscallback = () => {
console.log(paymentId)

HttpUtils.post({
url: UrlUtils.PAYMENT_STATUS_API+transactionid,
url: UrlUtils.PAYMENT_CALLBACK_STATUS_API,
params:{
"apprefid": transactionid,
"webtoken": webtoken,
"webtoken": webtoken,
"paymentId": paymentId,
"transactionid":Number(transactionid)
},
onSuccess: function(responseData){
setResponeDataData(responseData)
@@ -97,24 +99,11 @@ const Fpscallback = () => {
localStorage.removeItem("webtoken");
localStorage.removeItem("transactionid");
}
HttpUtils.post({
url: UrlUtils.PAYMENT_SAVE,
params: {
id: paymentId,
transNo: responseData.transactionid,
transDateTime: new Date(responseData.paymentdetail.time).toISOString(),
egisRefNo: responseData.paymentdetail.paymentid,
status: responseData.paymentdetail.result.paymentstatuscode,
payload: responseData
},
onSuccess: function (responseData2) {
responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
setItemList(responseData2.paymentItemList)
setPaymentData(responseData2.data);
// localStorage.removeItem("paymentId");
}
});
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setResponeDataData(responseData.transactionData)
setItemList(responseData.paymentItemList)
setPaymentData(responseData.data);
}
});


+ 3
- 1
src/pages/Payment/MultiPaymentWindow.js Ver fichero

@@ -216,7 +216,9 @@ const MultiPaymentWindow = (props) => {
});
const latestDataObjects = Object.values(latestData);
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status !== "APPR");
// const filteredData = latestDataObjects.filter(item => item.timeDiff > 20 || item.status !== "APPR");
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status == "CANC" || item.status == "REJT");

const filteredAppIds = filteredData.map(item => item.appId);
const appIdsNotInData = appIdList.filter(appId => !latestDataObjects.some(item => item.appId === appId));


+ 41
- 29
src/pages/Payment/PaymentCallback.js Ver fichero

@@ -11,7 +11,7 @@ import * as React from "react";
import * as HttpUtils from "utils/HttpUtils";
import * as UrlUtils from "utils/ApiPathConst";
//import { useNavigate } from 'react-router-dom';
import { paymentPath } from "auth/utils";
// import { paymentPath } from "auth/utils";
import * as DateUtils from "utils/DateUtils"

import Loadable from 'components/Loadable';
@@ -46,8 +46,8 @@ const Index = () => {
// const [transactionDate, setTransactionDate] = React.useState("");
// const [transactionTime, setTransactionTime] = React.useState("");
const [onReady, setOnReady] = React.useState(false);
const updatePaymentApi = "/api/payment/updatepayment";
const paymentStatusApi = "/api/payment/status/";
// const updatePaymentApi = "/api/payment/updatepayment";
// const paymentStatusApi = "/api/payment/status/";
const intl = useIntl();
const { locale } = intl;

@@ -57,15 +57,17 @@ const Index = () => {
}, []);

React.useEffect(() => {
console.log(responeData)
if (Object.keys(responeData).length > 0) {
console.log(responeData)
setTransactionData(responeData)
}
}, [responeData]);

React.useEffect(() => {
console.log(transactionData)
if (Object.keys(transactionData).length > 0) {
console.log(transactionData)
console.log(itemList)
console.log(paymentData)
setOnReady(true);
}
}, [transactionData]);
@@ -81,7 +83,7 @@ const Index = () => {
let receipt_token = params.get("RECEIPT_TOKEN").replace("%3D", "=")

HttpUtils.post({
url: paymentPath + updatePaymentApi,
url: UrlUtils.UPDATE_PAYMENT_API,
params: {
"transactionid": transactionid,
"receipttoken": receipt_token,
@@ -109,36 +111,45 @@ const Index = () => {
// )

HttpUtils.post({
url: paymentPath + paymentStatusApi + transactionid,
url: UrlUtils.PAYMENT_CALLBACK_STATUS_API,
params: {
"apprefid": transactionid,
"webtoken": localStorage.getItem("webtoken"),
// "webtoken": localStorage.getItem("webtoken"),
// "paymentId": localStorage.getItem("paymentId"),
"transactionid":Number(transactionid)
},
onSuccess: function (responseData) {
setResponeDataData(responseData)
if (responseData.paymentdetail?.result?.paymentstatuscode === "APPR") {
localStorage.removeItem("webtoken");
localStorage.removeItem("transactionid");
}
HttpUtils.post({
url: UrlUtils.PAYMENT_SAVE,
params: {
id: localStorage.getItem("paymentId"),
transNo: responseData.transactionid,
transDateTime: new Date(responseData.paymentdetail.time).toISOString(),
egisRefNo: responseData.paymentdetail.paymentid,
status: responseData.paymentdetail.result.paymentstatuscode,
payload: responseData
},
onSuccess: function (responseData2) {
responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
setItemList(responseData2.paymentItemList)
setPaymentData(responseData2.data);
// localStorage.removeItem("paymentId");
// setPaymentId(responseData2.id)
}
});
responseData.data["transDateStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "DD/MM/YYYY");
responseData.data["transTimeStr"] = DateUtils.dateFormat(responseData.data.transDateTime, "HH:mm:ss");
setResponeDataData(responseData.transactionData)
setItemList(responseData.paymentItemList)
setPaymentData(responseData.data);
// if (responseData.paymentdetail?.result?.paymentstatuscode === "APPR") {
// }
// HttpUtils.post({
// url: UrlUtils.PAYMENT_SAVE,
// params: {
// id: localStorage.getItem("paymentId"),
// transNo: responseData.transactionid,
// transDateTime: new Date(responseData.paymentdetail.time).toISOString(),
// egisRefNo: responseData.paymentdetail.paymentid,
// status: responseData.paymentdetail.result.paymentstatuscode,
// payload: responseData
// },
// onSuccess: function (responseData2) {
// responseData2.data["transDateStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "DD/MM/YYYY");
// responseData2.data["transTimeStr"] = DateUtils.dateFormat(responseData2.data.transDateTime, "HH:mm:ss");
// setItemList(responseData2.paymentItemList)
// setPaymentData(responseData2.data);
// // localStorage.removeItem("paymentId");
// // setPaymentId(responseData2.id)
// }
// });
}
});
}
@@ -151,7 +162,8 @@ const Index = () => {
const local = locale
// console.log(local)
HttpUtils.fileDownload({
url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+localStorage.getItem("paymentId")+"/"+local,
// url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+localStorage.getItem("paymentId")+"/"+local,
url: UrlUtils.GEN_PAYMENT_RECEIPT+"/"+paymentData.data.id+"/"+local,
onResponse:()=>{
setOnDownload(false)
},


+ 2
- 1
src/pages/Payment/Search_Public/DataGrid.js Ver fichero

@@ -76,7 +76,8 @@ export default function SearchPublicNoticeTable({ searchCriteria }) {
width: isMdOrLg ? 'auto' : 160,
flex: isMdOrLg ? 1 : undefined,
valueGetter: (params) => {
return DateUtils.dateStr(params?.value);
// console.log(params)
return DateUtils.dateStr(params?.value?params.value:params.row.created);
}
},
{


+ 6
- 3
src/pages/Payment/index.js Ver fichero

@@ -155,7 +155,8 @@ const Index = () => {
transNo: transactionData.transactionid,
payMethod: paymentMethod,
payAmount: totalAmount,
appIdList: location.state?.appIdList ?? []
appIdList: location.state?.appIdList ?? [],
webtoken: transactionData.webtoken
},
onSuccess: function (responData) {
localStorage.removeItem("paymentId");
@@ -166,7 +167,7 @@ const Index = () => {
});
}

//For testing
// For testing
// if (paymentMethod != "") {
// HttpUtils.post({
// url: UrlUtils.PAYMENT_CREATE,
@@ -174,7 +175,9 @@ const Index = () => {
// transNo: "test0002",
// payMethod: paymentMethod,
// payAmount: totalAmount,
// appIdList: location.state?.appIdList ?? []
// appIdList: location.state?.appIdList ?? [],
// webtoken: "test000234123412341234123412354212312412341234124123124124124123124123124124"

// },
// onSuccess: function (responData) {
// localStorage.removeItem("paymentId");


+ 3
- 1
src/pages/Proof/Payment/Pay.js Ver fichero

@@ -61,8 +61,10 @@ const Index = ({ record }) => {
}
});
const latestDataObjects = Object.values(latestData);
// const filteredData = latestDataObjects.filter(item => item.timeDiff > 20 || item.status !== "APPR");
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status == "CANC" || item.status == "REJT");

const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status !== "APPR");
const filteredAppIds = filteredData.map(item => item.appId);

const appIdsNotInData = appIdList.filter(appId => !latestDataObjects.some(item => item.appId === appId));


+ 3
- 1
src/pages/PublicNotice/Details_Public/ApplicationDetailCard.js Ver fichero

@@ -142,7 +142,9 @@ const ApplicationDetailCard = (
});
const latestDataObjects = Object.values(latestData);

const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status !== "APPR");
// const filteredData = latestDataObjects.filter(item => item.timeDiff > 20 || item.status !== "APPR");
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status == "CANC" || item.status == "REJT");

const filteredAppIds = filteredData.map(item => item.appId);

const appIdsNotInData = appIdList.filter(appId => !latestDataObjects.some(item => item.appId === appId));


+ 7
- 6
src/pages/PublicNotice/ListPanel/PendingPaymentTab.js Ver fichero

@@ -136,14 +136,15 @@ export default function SubmittedTab({ setCount, url }) {
const latestData = {};

responseData.forEach(item => {
const { appId, timeDiff } = item;
if (latestData[appId] === undefined || timeDiff < latestData[appId].timeDiff) {
latestData[appId] = item;
}
// console.log(item)
const { appId, timeDiff } = item;
if (latestData[appId] === undefined || timeDiff < latestData[appId].timeDiff) {
latestData[appId] = item;
}
});
const latestDataObjects = Object.values(latestData);
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status !== "APPR");
const filteredData = latestDataObjects.filter(item => item.timeDiff > 30 || item.status == "CANC" || item.status == "REJT");
const filteredAppIds = filteredData.map(item => item.appId);

const appIdsNotInData = appIdList.filter(appId => !latestDataObjects.some(item => item.appId === appId));


+ 18
- 4
src/utils/ApiPathConst.js Ver fichero

@@ -1,4 +1,7 @@
import {apiPath, paymentPath} from "../auth/utils";
import {
apiPath,
// paymentPath
} from "../auth/utils";

// GET request
export const REFRESH_TOKEN = "/refresh-token"
@@ -158,9 +161,20 @@ export const PAYMENT_APP_LIST = apiPath+'/payment/applist';//POST
export const PAYMENT_CHECK = apiPath+'/payment/check-payment';//GET

export const PAYMENT_LIMIT_SETTING_LIST = apiPath+'/settings/payment';//GET
export const PAYMENT_AVAILABLE_PAYMENT = paymentPath+'/api/payment/availability';//POST
export const PAYMENT_TRANSACTION_ID = paymentPath+'/api/payment/transaction';//GET
export const PAYMENT_STATUS_API = paymentPath+'/api/payment/status/';//GET
// export const PAYMENT_AVAILABLE_PAYMENT = paymentPath+'/api/payment/availability';//POST
export const PAYMENT_AVAILABLE_PAYMENT = apiPath+'/payment/api/availability';//POST
// export const PAYMENT_TRANSACTION_ID = paymentPath+'/api/payment/transaction';//GET
export const PAYMENT_TRANSACTION_ID = apiPath+'/payment/api/transaction';//GET
// export const PAYMENT_STATUS_API = paymentPath+'/api/payment/status/';//POST
export const PAYMENT_STATUS_API = apiPath+'/payment/api/status';//POST
// export const LOAD_PAYMENT_URL = paymentPath+ "/api/payment/wallet/fps";//POST
export const LOAD_PAYMENT_FPS_URL = apiPath+ "/payment/api/wallet/fps";//POST
// export const CANCEL_PAYMENT_URL = paymentPath+ "/api/payment/cancelpayment";//POST
export const CANCEL_PAYMENT_URL = apiPath+ "/payment/api/cancelpayment";//POST
export const LOAD_PAYMENT_URL = apiPath+ "/payment/api/web/";//POST
export const PAYMENT_CALLBACK_STATUS_API = apiPath+ "/payment/callback/status";//POST
export const PAYMENT_RETRY_STATUS_API = apiPath+ "/payment/paymentdetail/status";//POST
export const UPDATE_PAYMENT_API = apiPath+ "/payment/api/updatepayment";//POST

export const DEMAND_NOTE_PREVIEW = apiPath+'/demandNote/preview';//GET
export const DEMAND_NOTE_CREATE = apiPath+'/demandNote/create';//POST


+ 1
- 1
src/utils/statusUtils/PaymentStatus.js Ver fichero

@@ -21,6 +21,6 @@ function getStatus(params) {
if(status == "REJT") return REJT;
if(status == "CANC") return CANC;
if(status == "INPR") return INPR;
return CANC;
return INPR;
}


Cargando…
Cancelar
Guardar