ソースを参照

fix: 修复扫码支付金额为小数点导致支付时参数错误的问题

kuns 3 ヶ月 前
コミット
f93ef3d671

+ 3 - 3
app/(auth)/(tabs)/(home)/scanQrPage.tsx

@@ -60,7 +60,7 @@ const ScanQrPage = () => {
     const appState = useRef(AppState.currentState);
     const [paymentStatus, setPaymentStatus] = useState(null);
     const [isExpectingPayment, setIsExpectingPayment] = useState(false);
-    const paymentInitiatedTime = useRef(null);
+    const paymentInitiatedTime = useRef<number | null>(null);
     const PAYMENT_CHECK_TIMEOUT = 5 * 60 * 1000; // 5 minutes in milliseconds
     const [outTradeNo, setOutTradeNo] = useState('');
     const [totalFee, setTotalFee] = useState(0);
@@ -297,7 +297,7 @@ const ScanQrPage = () => {
         return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
     }
 
-    const oneTimeCharging = async (inputAmount) => {
+    const oneTimeCharging = async (inputAmount: number) => {
         try {
             const response = await walletService.getOutTradeNo();
             // console.log('outtradeno in oneTimeCharging', response);
@@ -309,7 +309,7 @@ const ScanQrPage = () => {
                 const now = new Date();
                 const formattedTime = formatTime(now);
 
-                let amount = inputAmount * 100;
+                let amount = Math.round(inputAmount * 100);
 
                 const origin = 'https://openapi-hk.qfapi.com/checkstand/#/?';
                 const obj = {

+ 2 - 3
app/(auth)/(tabs)/(home)/totalPayment.tsx

@@ -462,8 +462,7 @@ const TotalPayment = () => {
                 const now = new Date();
                 const formattedTime = formatTime(now);
 
-                let amount = inputAmount * 100;
-
+                let amount = Math.round(inputAmount * 100);
                 const origin = 'https://openapi-hk.qfapi.com/checkstand/#/?';
                 const obj = {
                     // appcode: '6937EF25DF6D4FA78BB2285441BC05E9',
@@ -484,7 +483,7 @@ const TotalPayment = () => {
                     let str = '';
                     let keysArr = Object.keys(json);
                     keysArr.sort().forEach((val) => {
-                        if (!json[val]) return;
+                        if (json[val] === undefined || json[val] === null) return;
                         str += `${val}=${flag ? encodeURIComponent(json[val]) : json[val]}&`;
                     });
                     return str.slice(0, -1);