diff --git a/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/cancel/Cancellation.kt b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/cancel/Cancellation.kt new file mode 100644 index 00000000..32966c05 --- /dev/null +++ b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/cancel/Cancellation.kt @@ -0,0 +1,38 @@ +package com.sangdol.tosspaymock.business.domain.cancel + +import com.sangdol.tosspaymock.business.domain.RandomPaymentValueGenerator +import java.time.OffsetDateTime + +class Cancellation( + val transactionKey: String, + val cancelReason: String, + val taxExemptionAmount: Int = 0, + val canceledAt: OffsetDateTime, + val cardDiscountAmount: Int, + val transferDiscountAmount: Int, + val easyPayDiscountAmount: Int, + val receiptKey: String? = null, + val cancelStatus: String = "DONE", + val cancelRequestId: String? = null, + val cancelAmount: Int, + val taxFreeAmount: Int = 0, + val refundableAmount: Int = 0, +) { + companion object { + fun random( + cancelReason: String, + cancelAmount: Int, + easyPayDiscountAmount: Int, + cardDiscountAmount: Int, + transferDiscountAmount: Int, + ) = Cancellation( + transactionKey = RandomPaymentValueGenerator.transactionKey(), + cancelReason = cancelReason, + canceledAt = OffsetDateTime.now(), + cardDiscountAmount = cardDiscountAmount, + transferDiscountAmount = transferDiscountAmount, + easyPayDiscountAmount = easyPayDiscountAmount, + cancelAmount = cancelAmount, + ) + } +} diff --git a/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/card/Card.kt b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/card/Card.kt new file mode 100644 index 00000000..b3068c8e --- /dev/null +++ b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/card/Card.kt @@ -0,0 +1,39 @@ +package com.sangdol.tosspaymock.business.domain.card + +import com.sangdol.tosspaymock.business.domain.RandomCardValueGenerator + +class Card( + val issuerCode: CardIssuerCode, + val acquirerCode: CardIssuerCode, + val number: String, + val installmentPlanMonths: Int, + val isInterestFree: Boolean = true, + val interestPayer: String? = null, + val approveNo: String, + val useCardPoint: Boolean, + val cardType: CardType, + val ownerType: CardOwnerType, + val acquireStatus: CardAcquireStatus, + val amount: Int, +) { + companion object { + val availableCardTypes = listOf(CardType.CREDIT, CardType.CHECK) + val availableCardOwnerTypes = CardOwnerType.entries - CardOwnerType.UNKNOWN + fun random(approvedAmount: Int): Card { + return Card( + issuerCode = CardIssuerCode.entries.random(), + acquirerCode = CardIssuerCode.entries.random(), + number = RandomCardValueGenerator.cardNumber(), + installmentPlanMonths = RandomCardValueGenerator.installmentPlanMonths(approvedAmount), + isInterestFree = true, + interestPayer = null, + approveNo = RandomCardValueGenerator.approvalNumber(), + useCardPoint = false, + cardType = availableCardTypes.random(), + ownerType = availableCardOwnerTypes.random(), + acquireStatus = CardAcquireStatus.COMPLETED, + amount = approvedAmount + ) + } + } +} diff --git a/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/easypay/Easypay.kt b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/easypay/Easypay.kt new file mode 100644 index 00000000..bfe56cbb --- /dev/null +++ b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/easypay/Easypay.kt @@ -0,0 +1,31 @@ +package com.sangdol.tosspaymock.business.domain.easypay + +import com.sangdol.tosspaymock.business.domain.RandomEasypayValueGenerator + +class Easypay( + val provider: EasypayProvider, + val amount: Int, + val discountAmount: Int +) { + companion object { + fun randomWithPrepaid(amount: Int): Easypay { + val point = RandomEasypayValueGenerator.point(amount) + + return Easypay( + provider = EasypayProvider.entries.random(), + amount = (amount - point), + discountAmount = point + ) + } + + fun randomWithCard(amount: Int): Easypay { + val point = RandomEasypayValueGenerator.point(amount) + + return Easypay( + provider = EasypayProvider.entries.random(), + amount = 0, + discountAmount = point + ) + } + } +} diff --git a/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/transfer/BankTransfer.kt b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/transfer/BankTransfer.kt new file mode 100644 index 00000000..18531edb --- /dev/null +++ b/tosspay-mock/src/main/kotlin/com/sangdol/tosspaymock/business/domain/transfer/BankTransfer.kt @@ -0,0 +1,15 @@ +package com.sangdol.tosspaymock.business.domain.transfer + +class BankTransfer( + val bankCode: BankCode, + val settlementStatus: SettlementStatus, +) { + companion object { + fun random(): BankTransfer { + return BankTransfer( + bankCode = BankCode.entries.random(), + settlementStatus = SettlementStatus.COMPLETED + ) + } + } +}