결제관리 무이자 정보 연결
This commit is contained in:
@@ -34,7 +34,7 @@ export interface MerchantInfo {
|
|||||||
paymentInfoType: string;
|
paymentInfoType: string;
|
||||||
mid: string;
|
mid: string;
|
||||||
};
|
};
|
||||||
export interface CreditCard {
|
export interface PaymentNotificationDataCommonType {
|
||||||
id: number;
|
id: number;
|
||||||
paymentMethodName: string;
|
paymentMethodName: string;
|
||||||
startDate: string;
|
startDate: string;
|
||||||
@@ -46,59 +46,14 @@ export interface CreditCard {
|
|||||||
encryptionStatus: string;
|
encryptionStatus: string;
|
||||||
expandable: boolean;
|
expandable: boolean;
|
||||||
detail: Record<string, any>;
|
detail: Record<string, any>;
|
||||||
};
|
}
|
||||||
export interface AccountTransfer {
|
|
||||||
id: number;
|
export interface CreditCard extends PaymentNotificationDataCommonType {};
|
||||||
paymentMethodName: string;
|
export interface AccountTransfer extends PaymentNotificationDataCommonType {};
|
||||||
startDate: string;
|
export interface VirtualAccount extends PaymentNotificationDataCommonType {};
|
||||||
adminEmail: string;
|
export interface MobilePayment extends PaymentNotificationDataCommonType {};
|
||||||
urlIp: string;
|
export interface EscrowPayment extends PaymentNotificationDataCommonType {};
|
||||||
retransmissionInterval: string;
|
|
||||||
retransmissionCount: string;
|
|
||||||
okCheck: string;
|
|
||||||
encryptionStatus: string;
|
|
||||||
expandable: boolean;
|
|
||||||
detail: Record<string, any>;
|
|
||||||
};
|
|
||||||
export interface VirtualAccount {
|
|
||||||
id: number;
|
|
||||||
paymentMethodName: string;
|
|
||||||
startDate: string;
|
|
||||||
adminEmail: string;
|
|
||||||
urlIp: string;
|
|
||||||
retransmissionInterval: string;
|
|
||||||
retransmissionCount: string;
|
|
||||||
okCheck: string;
|
|
||||||
encryptionStatus: string;
|
|
||||||
expandable: boolean;
|
|
||||||
detail: Record<string, any>;
|
|
||||||
};
|
|
||||||
export interface MobilePayment {
|
|
||||||
id: 1,
|
|
||||||
paymentMethodName: string;
|
|
||||||
startDate: string;
|
|
||||||
adminEmail: string;
|
|
||||||
urlIp: string;
|
|
||||||
retransmissionInterval: string;
|
|
||||||
retransmissionCount: string;
|
|
||||||
okCheck: string;
|
|
||||||
encryptionStatus: string;
|
|
||||||
expandable: boolean;
|
|
||||||
detail: Record<string, any>;
|
|
||||||
};
|
|
||||||
export interface EscrowPayment {
|
|
||||||
id: 1,
|
|
||||||
paymentMethodName: string;
|
|
||||||
startDate: string;
|
|
||||||
adminEmail: string;
|
|
||||||
urlIp: string;
|
|
||||||
retransmissionInterval: string;
|
|
||||||
retransmissionCount: string;
|
|
||||||
okCheck: string;
|
|
||||||
encryptionStatus: string;
|
|
||||||
expandable: boolean;
|
|
||||||
detail: Record<string, any>;
|
|
||||||
};
|
|
||||||
export interface PaymentNonCardParams extends PaymentCommonParams {
|
export interface PaymentNonCardParams extends PaymentCommonParams {
|
||||||
paymentMethod: string;
|
paymentMethod: string;
|
||||||
};
|
};
|
||||||
@@ -125,13 +80,19 @@ export interface PaymentInstallmentParams extends PaymentCommonParams {
|
|||||||
export interface PaymentInstallmentResponse {
|
export interface PaymentInstallmentResponse {
|
||||||
installmentData: Array<Record<string, any>>;
|
installmentData: Array<Record<string, any>>;
|
||||||
};
|
};
|
||||||
|
export interface InstallmentDetails {
|
||||||
|
id: number;
|
||||||
|
installmentMonths: string;
|
||||||
|
applicationPeriod: string;
|
||||||
|
applicationAmount: number;
|
||||||
|
};
|
||||||
export interface PaymentInstallmentDetailParams extends PaymentCommonParams {
|
export interface PaymentInstallmentDetailParams extends PaymentCommonParams {
|
||||||
cardCompany: string;
|
cardCompany: string;
|
||||||
};
|
};
|
||||||
export interface PaymentInstallmentDetailResponse {
|
export interface PaymentInstallmentDetailResponse {
|
||||||
cardCompany: string;
|
cardCompany: string;
|
||||||
cardCompanyOptions: Array<string>;
|
cardCompanyOptions: Array<string>;
|
||||||
installmentDetails: Array<Record<string, any>>;
|
installmentDetails: Array<InstallmentDetails>;
|
||||||
};
|
};
|
||||||
export interface PaymentCardParams extends PaymentCommonParams{
|
export interface PaymentCardParams extends PaymentCommonParams{
|
||||||
paymentMethod: string;
|
paymentMethod: string;
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { PaymentInfoItemType } from '../model/types';
|
import {
|
||||||
|
PaymentInfoItemType,
|
||||||
|
} from '../model/types';
|
||||||
|
|
||||||
export interface InfoItemProps {
|
export interface InfoItemProps {
|
||||||
type?: PaymentInfoItemType;
|
type?: PaymentInfoItemType;
|
||||||
@@ -17,8 +19,8 @@ export const InfoItem = ({
|
|||||||
}: InfoItemProps) => {
|
}: InfoItemProps) => {
|
||||||
|
|
||||||
const onClickToOpenBottomSheet = () => {
|
const onClickToOpenBottomSheet = () => {
|
||||||
if(!!infoLink){
|
if(setNoInterestInfoBottomSheetOn){
|
||||||
|
setNoInterestInfoBottomSheetOn(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,20 +1,25 @@
|
|||||||
|
import { useEffect, useState } from 'react';
|
||||||
import { IMAGE_ROOT } from '@/shared/constants/common';
|
import { IMAGE_ROOT } from '@/shared/constants/common';
|
||||||
import { InfoItem } from './info-item';
|
import { InfoItem } from './info-item';
|
||||||
|
import { NoInterestInfoBottomSheet } from './no-interest-info-bottom-sheet';
|
||||||
|
import { usePaymentInstallmentDetailMutation } from '../api/use-payment-installment-detail-mutation';
|
||||||
import {
|
import {
|
||||||
|
InstallmentDetails,
|
||||||
PaymentCardResponse,
|
PaymentCardResponse,
|
||||||
PaymentInfoItemType,
|
PaymentInfoItemType,
|
||||||
|
PaymentInstallmentDetailResponse,
|
||||||
PaymentInstallmentResponse,
|
PaymentInstallmentResponse,
|
||||||
PaymentNonCardResponse
|
PaymentNonCardResponse
|
||||||
} from '../model/types';
|
} from '../model/types';
|
||||||
import { NoInterestInfoBottomSheet } from './no-interest-info-bottom-sheet';
|
|
||||||
import { useState } from 'react';
|
|
||||||
|
|
||||||
export interface InfoWrapProp {
|
export interface InfoWrapProp {
|
||||||
|
mid: string;
|
||||||
paymentCard?: PaymentCardResponse,
|
paymentCard?: PaymentCardResponse,
|
||||||
paymentNonCard?: PaymentNonCardResponse,
|
paymentNonCard?: PaymentNonCardResponse,
|
||||||
paymentInstallment?: PaymentInstallmentResponse
|
paymentInstallment?: PaymentInstallmentResponse
|
||||||
};
|
};
|
||||||
export const InfoWrap = ({
|
export const InfoWrap = ({
|
||||||
|
mid,
|
||||||
paymentCard,
|
paymentCard,
|
||||||
paymentNonCard,
|
paymentNonCard,
|
||||||
paymentInstallment
|
paymentInstallment
|
||||||
@@ -22,6 +27,12 @@ export const InfoWrap = ({
|
|||||||
|
|
||||||
const [noInterestInfoBottomSheetOn, setNoInterestInfoBottomSheetOn] = useState<boolean>(false);
|
const [noInterestInfoBottomSheetOn, setNoInterestInfoBottomSheetOn] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [cardCompany, setCardCompany] = useState<string>('비씨');
|
||||||
|
const [cardCompanyOptions, setCardCompanyOptions] = useState<Array<string>>();
|
||||||
|
const [installmentDetails, setInstallmentDetails] = useState<Array<InstallmentDetails>>([]);
|
||||||
|
|
||||||
|
const { mutateAsync: paymentInstallmentDetail } = usePaymentInstallmentDetailMutation();
|
||||||
|
|
||||||
const list1 = [
|
const list1 = [
|
||||||
{payName: '신용카드', payImage: 'pay_01.svg', infoLink: ''},
|
{payName: '신용카드', payImage: 'pay_01.svg', infoLink: ''},
|
||||||
{payName: '카카오페이', payImage: 'pay_02.svg', infoLink: ''},
|
{payName: '카카오페이', payImage: 'pay_02.svg', infoLink: ''},
|
||||||
@@ -85,8 +96,25 @@ export const InfoWrap = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
const callPaymentIntallmentDetail = () => {
|
||||||
|
let params = {
|
||||||
|
mid: mid,
|
||||||
|
cardCompany: cardCompany
|
||||||
|
};
|
||||||
|
|
||||||
|
paymentInstallmentDetail(params).then((rs) => {
|
||||||
|
console.log(rs);
|
||||||
|
setCardCompany(rs.cardCompany);
|
||||||
|
setCardCompanyOptions(rs.cardCompanyOptions);
|
||||||
|
setInstallmentDetails(rs.installmentDetails);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
callPaymentIntallmentDetail();
|
||||||
|
}, [cardCompany]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -104,6 +132,10 @@ export const InfoWrap = ({
|
|||||||
<NoInterestInfoBottomSheet
|
<NoInterestInfoBottomSheet
|
||||||
noInterestInfoBottomSheetOn={ noInterestInfoBottomSheetOn }
|
noInterestInfoBottomSheetOn={ noInterestInfoBottomSheetOn }
|
||||||
setNoInterestInfoBottomSheetOn={ setNoInterestInfoBottomSheetOn }
|
setNoInterestInfoBottomSheetOn={ setNoInterestInfoBottomSheetOn }
|
||||||
|
cardCompany={ cardCompany }
|
||||||
|
cardCompanyOptions={ cardCompanyOptions }
|
||||||
|
installmentDetails={ installmentDetails }
|
||||||
|
setCardCompany={ setCardCompany }
|
||||||
></NoInterestInfoBottomSheet>
|
></NoInterestInfoBottomSheet>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,21 +1,40 @@
|
|||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import { IMAGE_ROOT } from '@/shared/constants/common';
|
import { IMAGE_ROOT } from '@/shared/constants/common';
|
||||||
import { BottomSheetMotionVaiants, BottomSheetMotionDuration } from '@/entities/common/model/constant';
|
import { BottomSheetMotionVaiants, BottomSheetMotionDuration } from '@/entities/common/model/constant';
|
||||||
|
import { InstallmentDetails, PaymentInstallmentDetailResponse } from '../model/types';
|
||||||
|
import { ChangeEvent } from 'react';
|
||||||
|
import { NumericFormat } from 'react-number-format';
|
||||||
|
|
||||||
export interface NoInterestInfoBottomSheetProps {
|
export interface NoInterestInfoBottomSheetProps {
|
||||||
noInterestInfoBottomSheetOn: boolean;
|
noInterestInfoBottomSheetOn: boolean;
|
||||||
setNoInterestInfoBottomSheetOn: (noInterestInfoBottomSheetOn: boolean) => void;
|
setNoInterestInfoBottomSheetOn: (noInterestInfoBottomSheetOn: boolean) => void;
|
||||||
|
cardCompany?: string;
|
||||||
|
cardCompanyOptions?: Array<string>;
|
||||||
|
installmentDetails?: Array<InstallmentDetails>;
|
||||||
|
setCardCompany?: (cardCompany: string) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const NoInterestInfoBottomSheet = ({
|
export const NoInterestInfoBottomSheet = ({
|
||||||
noInterestInfoBottomSheetOn,
|
noInterestInfoBottomSheetOn,
|
||||||
setNoInterestInfoBottomSheetOn
|
setNoInterestInfoBottomSheetOn,
|
||||||
|
cardCompany,
|
||||||
|
cardCompanyOptions,
|
||||||
|
installmentDetails,
|
||||||
|
setCardCompany
|
||||||
}: NoInterestInfoBottomSheetProps) => {
|
}: NoInterestInfoBottomSheetProps) => {
|
||||||
const onClickToClose = () => {
|
const onClickToClose = () => {
|
||||||
// close
|
// close
|
||||||
setNoInterestInfoBottomSheetOn(false);
|
setNoInterestInfoBottomSheetOn(false);
|
||||||
};
|
};
|
||||||
return (
|
|
||||||
|
const onChangeToCardCompany = (e: ChangeEvent<HTMLSelectElement>) => {
|
||||||
|
let value = e.target.value;
|
||||||
|
if(setCardCompany){
|
||||||
|
setCardCompany(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
<>
|
<>
|
||||||
{ noInterestInfoBottomSheetOn &&
|
{ noInterestInfoBottomSheetOn &&
|
||||||
<div className="bg-dim"></div>
|
<div className="bg-dim"></div>
|
||||||
@@ -47,11 +66,48 @@ export const NoInterestInfoBottomSheet = ({
|
|||||||
<div className="card-fee-box">
|
<div className="card-fee-box">
|
||||||
<span className="label">카드사</span>
|
<span className="label">카드사</span>
|
||||||
<div className="field wid-100">
|
<div className="field wid-100">
|
||||||
<select>
|
{ !!cardCompanyOptions &&
|
||||||
<option>KB국민</option>
|
<select onChange={ onChangeToCardCompany }>
|
||||||
|
{ cardCompanyOptions.map((value, index) => (
|
||||||
|
<option
|
||||||
|
value={ value }
|
||||||
|
selected={ cardCompany === value }
|
||||||
|
>{ value }</option>
|
||||||
|
))
|
||||||
|
}
|
||||||
</select>
|
</select>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{ !!installmentDetails
|
||||||
|
&& installmentDetails.length > 0
|
||||||
|
&& installmentDetails.map((value, index) => (
|
||||||
|
<>
|
||||||
|
{ (index > 0) &&
|
||||||
|
<div className="divider"></div>
|
||||||
|
}
|
||||||
|
<div className="desc dot">
|
||||||
|
<span>할부개월 : </span>
|
||||||
|
<span>{ value.installmentMonths }</span>
|
||||||
|
</div>
|
||||||
|
<div className="desc dot">
|
||||||
|
<span>적용기간 : </span>
|
||||||
|
<span>{ value.applicationPeriod }</span>
|
||||||
|
</div>
|
||||||
|
<div className="desc dot">
|
||||||
|
<span>적용금액 : </span>
|
||||||
|
<span>
|
||||||
|
<NumericFormat
|
||||||
|
value={ value.applicationAmount }
|
||||||
|
thousandSeparator
|
||||||
|
displayType="text"
|
||||||
|
></NumericFormat>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
{/*
|
||||||
<div className="desc dot">할부개월 : 02, 03, 07</div>
|
<div className="desc dot">할부개월 : 02, 03, 07</div>
|
||||||
<div className="desc dot">적용기간 : 2025.06.01 ~ 9999.12.31</div>
|
<div className="desc dot">적용기간 : 2025.06.01 ~ 9999.12.31</div>
|
||||||
<div className="desc dot">적용금액 : 70,000</div>
|
<div className="desc dot">적용금액 : 70,000</div>
|
||||||
@@ -59,6 +115,7 @@ export const NoInterestInfoBottomSheet = ({
|
|||||||
<div className="desc dot">할부개월 : 15, 20, 36, 60</div>
|
<div className="desc dot">할부개월 : 15, 20, 36, 60</div>
|
||||||
<div className="desc dot">적용기간 : 2025.06.01 ~ 9999.12.31</div>
|
<div className="desc dot">적용기간 : 2025.06.01 ~ 9999.12.31</div>
|
||||||
<div className="desc dot">적용금액 : 50,000</div>
|
<div className="desc dot">적용금액 : 50,000</div>
|
||||||
|
*/}
|
||||||
</div>
|
</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ export const InfoPage = () => {
|
|||||||
<div className="tab-pane pt-46 active">
|
<div className="tab-pane pt-46 active">
|
||||||
<PaymentTab activeTab={ activeTab }></PaymentTab>
|
<PaymentTab activeTab={ activeTab }></PaymentTab>
|
||||||
<InfoWrap
|
<InfoWrap
|
||||||
|
mid={ mid }
|
||||||
paymentCard={ paymentCardResult }
|
paymentCard={ paymentCardResult }
|
||||||
paymentNonCard={ paymentNonCardResult }
|
paymentNonCard={ paymentNonCardResult }
|
||||||
paymentInstallment={ paymentInstallmentResult }
|
paymentInstallment={ paymentInstallmentResult }
|
||||||
|
|||||||
Reference in New Issue
Block a user