feat: Payment 구성에 필요한 계좌이체, 카드, 취소, 간편결제 도메인 추가

This commit is contained in:
이상진 2025-10-01 10:30:59 +09:00
parent c921a9a89a
commit e25a4f6325
4 changed files with 123 additions and 0 deletions

View File

@ -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,
)
}
}

View File

@ -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
)
}
}
}

View File

@ -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
)
}
}
}

View File

@ -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
)
}
}
}