Compare commits
	
		
			2 Commits
		
	
	
		
			be1469abf2
			...
			95d467c513
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 95d467c513 | |||
| a7571e78e4 | 
| @@ -1,8 +1,7 @@ | |||||||
| import React, {useEffect, useState} from 'react'; | import React, {useEffect, useState} from 'react'; | ||||||
| import DefaultLayout from "../../../components/Layout/DefaultLayout"; | import DefaultLayout from "../../../components/Layout/DefaultLayout"; | ||||||
| import {observer} from "mobx-react-lite"; | import {observer} from "mobx-react-lite"; | ||||||
| import Image from "next/image"; | import {Button, Divider, Form, Image, Input, Modal, Spin} from "antd"; | ||||||
| import {Button, Divider, Form, Input, Modal, Spin} from "antd"; |  | ||||||
| import Constraint from "../../../components/Constraint"; | import Constraint from "../../../components/Constraint"; | ||||||
| import Ask from "../../../components/Ask"; | import Ask from "../../../components/Ask"; | ||||||
| import Location from "../../../components/Location"; | import Location from "../../../components/Location"; | ||||||
| @@ -12,11 +11,14 @@ import Countdown from "react-countdown"; | |||||||
| import {useRouter} from "next/router"; | import {useRouter} from "next/router"; | ||||||
| import BottomSheet from "../../../components/BottomSheet"; | import BottomSheet from "../../../components/BottomSheet"; | ||||||
| import { botsRepository } from '../../../repository/bots'; | import { botsRepository } from '../../../repository/bots'; | ||||||
|  | import { useStore } from '../../../components/StoreProvider'; | ||||||
|  |  | ||||||
| const Payment = observer(() => { | const Payment = observer(() => { | ||||||
|     const [form] = Form.useForm(); |     const [form] = Form.useForm(); | ||||||
|     const router = useRouter(); |     const router = useRouter(); | ||||||
|  |     const store = useStore(); | ||||||
|     const { qrCode } = router.query; |     const { qrCode } = router.query; | ||||||
|  |     const [price, setPrice] = useState(0); | ||||||
|     const [open, setOpen] = useState(false); |     const [open, setOpen] = useState(false); | ||||||
|     const [openOrderOut, setOpenOrderOut] = useState(false); |     const [openOrderOut, setOpenOrderOut] = useState(false); | ||||||
|     const [notOrder, setNotOrder] = useState(false); |     const [notOrder, setNotOrder] = useState(false); | ||||||
| @@ -40,6 +42,32 @@ const Payment = observer(() => { | |||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     useEffect(() => { | ||||||
|  |         if (typeof window !== undefined) { | ||||||
|  |             let price = localStorage.getItem("price") | ||||||
|  |             setPrice(price) | ||||||
|  |         } | ||||||
|  |     }, []) | ||||||
|  |  | ||||||
|  |     const handleSubmitPhoneNumber = async () => { | ||||||
|  |         try { | ||||||
|  |             const values = await form.validateFields(); | ||||||
|  |             setOpen(false); | ||||||
|  |             setIsLoading(true); | ||||||
|  |              | ||||||
|  |             const body = { | ||||||
|  |                 phoneNumber: values.phoneNumber, | ||||||
|  |             }; | ||||||
|  |  | ||||||
|  |             await store.lockey.createPayment(body); | ||||||
|  |             form.resetFields(); | ||||||
|  |             setIsLoading(false) | ||||||
|  |         } catch (err) { | ||||||
|  |             console.log(err); | ||||||
|  |             setIsLoading(false); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return ( |     return ( | ||||||
|         <> |         <> | ||||||
|             {isNotComplete ? ( |             {isNotComplete ? ( | ||||||
| @@ -66,7 +94,7 @@ const Payment = observer(() => { | |||||||
|  |  | ||||||
|                 <Form form={form} layout={'vertical'}> |                 <Form form={form} layout={'vertical'}> | ||||||
|                     <div className={'mt-5'}> |                     <div className={'mt-5'}> | ||||||
|                         <Form.Item name="phone" |                         <Form.Item name="phoneNumber" | ||||||
|                                    label={<span className={'font-semibold text-xl'}>Nomor Telepon Pembayaran</span>} |                                    label={<span className={'font-semibold text-xl'}>Nomor Telepon Pembayaran</span>} | ||||||
|                                    rules={[ |                                    rules={[ | ||||||
|                                        {required: true, message: "Silahkan masukan Nomor Ponsel!"}, |                                        {required: true, message: "Silahkan masukan Nomor Ponsel!"}, | ||||||
| @@ -93,7 +121,7 @@ const Payment = observer(() => { | |||||||
|  |  | ||||||
|                     <div className={'flex justify-between'}> |                     <div className={'flex justify-between'}> | ||||||
|                         <h3 className={'text-lg font-bold'}>Total Pembayaran</h3> |                         <h3 className={'text-lg font-bold'}>Total Pembayaran</h3> | ||||||
|                         <h3 className={'text-lg font-bold text-[#FF6103]'}>Rp. 99.000</h3> |                         <h3 className={'text-lg font-bold text-[#FF6103]'}>Rp. {price}</h3> | ||||||
|                     </div> |                     </div> | ||||||
|  |  | ||||||
|                     <Form.Item shouldUpdate> |                     <Form.Item shouldUpdate> | ||||||
| @@ -127,14 +155,16 @@ const Payment = observer(() => { | |||||||
|  |  | ||||||
|             {/*MODAL LOADING*/} |             {/*MODAL LOADING*/} | ||||||
|             <Modal |             <Modal | ||||||
|                 className={'rounded-lg'} |                 className={'rounded-3xl'} | ||||||
|                 open={isLoading} |                 open={isLoading} | ||||||
|                 footer={null} |                 footer={null} | ||||||
|                 closable={false} |                 closable={false} | ||||||
|                 maskClosable={false} |                 maskClosable={false} | ||||||
|                 bodyStyle={{paddingLeft: 5, paddingRight: 5}}> |                 bodyStyle={{paddingLeft: 5, paddingRight: 5}}> | ||||||
|                 <div className={'flex flex-col justify-center'}> |                 <div className={'flex flex-col justify-center items-center'}> | ||||||
|                     <Spin size={'large'}/> |                     <div className='flex justify-center items-center'> | ||||||
|  |                         <Image src={'/assets/icons/Load_Logo_CP.gif'} width={35} height={48} alt={'gif'} preview={false} /> | ||||||
|  |                     </div> | ||||||
|                     <span className={'text-center font-semibold'}>Mohon tunggu</span> |                     <span className={'text-center font-semibold'}>Mohon tunggu</span> | ||||||
|                     <span className={'text-center text-sm'}>Saat ini pemesanan LOCKEY anda sedang di proses. </span> |                     <span className={'text-center text-sm'}>Saat ini pemesanan LOCKEY anda sedang di proses. </span> | ||||||
|                 </div> |                 </div> | ||||||
| @@ -145,7 +175,7 @@ const Payment = observer(() => { | |||||||
|                 <div className={'px-5 max-w-lg'}> |                 <div className={'px-5 max-w-lg'}> | ||||||
|                     <div className={'flex justify-center'}> |                     <div className={'flex justify-center'}> | ||||||
|                         <Image src={'/assets/images/confirmation.svg'} width={200} height={200} |                         <Image src={'/assets/images/confirmation.svg'} width={200} height={200} | ||||||
|                                alt={'confirmation'}/> |                             alt={'confirmation'} preview={false} /> | ||||||
|                     </div> |                     </div> | ||||||
|  |  | ||||||
|                     <h3 className={'text-lg font-bold'}>Konfirmasi Pembayaran?</h3> |                     <h3 className={'text-lg font-bold'}>Konfirmasi Pembayaran?</h3> | ||||||
| @@ -154,11 +184,8 @@ const Payment = observer(() => { | |||||||
|                     <div className={'flex justify-between gap-4'}> |                     <div className={'flex justify-between gap-4'}> | ||||||
|                         <Button size={'large'} className={'w-full rounded-lg'} |                         <Button size={'large'} className={'w-full rounded-lg'} | ||||||
|                                 onClick={onCloseSheet}>Cancel</Button> |                                 onClick={onCloseSheet}>Cancel</Button> | ||||||
|                         <Button size={'large'} className={'w-full rounded-lg bg-black text-white'} |                         <Button size={'large'} htmlType={'submit'} className={'w-full rounded-lg bg-black text-white'} | ||||||
|                                 onClick={() => { |                             onClick={handleSubmitPhoneNumber}>Bayar</Button> | ||||||
|                                     setOpen(false) |  | ||||||
|                                     setIsLoading(true) |  | ||||||
|                                 }}>Bayar</Button> |  | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|             </BottomSheet> |             </BottomSheet> | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								public/assets/icons/Load_Logo_CP.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/assets/icons/Load_Logo_CP.gif
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 84 KiB | 
| @@ -7,9 +7,9 @@ const url = { | |||||||
| const hooks = {} | const hooks = {} | ||||||
|  |  | ||||||
| const api = { | const api = { | ||||||
|     async usePayment(data) { |     // async usePayment(data) { | ||||||
|         return await http.post(url.payment, data) |     //     return await http.post(url.payment, data) | ||||||
|     }, |     // }, | ||||||
| } | } | ||||||
|  |  | ||||||
| export const orderRepository = { | export const orderRepository = { | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import {http} from "../utils/http"; | import {http} from "../utils/http"; | ||||||
| import {botsRepository} from "../repository/bots"; | import {botsRepository} from "../repository/bots"; | ||||||
|  | import { orderRepository } from "../repository/order"; | ||||||
|  |  | ||||||
| export class LockeyStore { | export class LockeyStore { | ||||||
|     constructor(context) { |     constructor(context) { | ||||||
| @@ -9,4 +10,8 @@ export class LockeyStore { | |||||||
|     createOrder(body) { |     createOrder(body) { | ||||||
|         return http.post(botsRepository.url.createOrder(), body); |         return http.post(botsRepository.url.createOrder(), body); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     createPayment(body) { | ||||||
|  |         return http.post(orderRepository.url.payment(), body); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user