generated from pricelees/issue-pr-template
[#50] Tosspay API Mocking 서버 구현 #51
@ -0,0 +1,179 @@
|
||||
package com.sangdol.tosspaymock.business.domain
|
||||
|
||||
import com.sangdol.tosspaymock.business.domain.cancel.Cancellation
|
||||
import com.sangdol.tosspaymock.business.domain.card.Card
|
||||
import com.sangdol.tosspaymock.business.domain.easypay.Easypay
|
||||
import com.sangdol.tosspaymock.business.domain.transfer.BankTransfer
|
||||
import java.time.OffsetDateTime
|
||||
|
||||
class Payment(
|
||||
val mid: String,
|
||||
val lastTransactionKey: String,
|
||||
val paymentKey: String,
|
||||
val orderId: String,
|
||||
val orderName: String,
|
||||
val taxExemptionAmount: Int = 0,
|
||||
var status: PaymentStatus = PaymentStatus.DONE,
|
||||
val requestedAt: OffsetDateTime,
|
||||
val approvedAt: OffsetDateTime,
|
||||
val useEscrow: Boolean = false,
|
||||
val cultureExpense: Boolean = false,
|
||||
val card: Card? = null,
|
||||
val virtualAccount: String? = null,
|
||||
val transfer: BankTransfer? = null,
|
||||
val mobilePhone: String? = null,
|
||||
val giftCertificate: String? = null,
|
||||
val cashReceipt: String? = null,
|
||||
val cashReceipts: String? = null,
|
||||
val discount: String? = null,
|
||||
var cancels: Cancellation? = null,
|
||||
val secret: String? = null,
|
||||
val type: PaymentType = PaymentType.NORMAL,
|
||||
val easyPay: Easypay? = null,
|
||||
val country: String = "KR",
|
||||
val failure: String? = null,
|
||||
val isPartialCancelable: Boolean = true,
|
||||
val receipt: String? = null,
|
||||
val checkout: String? = null,
|
||||
val currency: String = "KRW",
|
||||
val totalAmount: Int,
|
||||
val balanceAmount: Int,
|
||||
val suppliedAmount: Int,
|
||||
val vat: Int,
|
||||
val taxFreeAmount: Int = 0,
|
||||
val method: PaymentMethod,
|
||||
val version: String = "2022-11-16",
|
||||
val metadata: String? = null
|
||||
) {
|
||||
companion object {
|
||||
fun randomWithCard(
|
||||
paymentKey: String,
|
||||
orderId: String,
|
||||
amount: Int,
|
||||
requestedAt: OffsetDateTime
|
||||
): Payment {
|
||||
val card = Card.random(amount)
|
||||
|
||||
return create(
|
||||
paymentKey = paymentKey,
|
||||
orderId = orderId,
|
||||
requestedAt = requestedAt,
|
||||
amount = amount,
|
||||
card = card,
|
||||
easyPay = null,
|
||||
bankTransfer = null
|
||||
)
|
||||
}
|
||||
|
||||
fun randomWithEasypayCard(
|
||||
paymentKey: String,
|
||||
orderId: String,
|
||||
amount: Int,
|
||||
requestedAt: OffsetDateTime
|
||||
): Payment {
|
||||
val easyPay = Easypay.randomWithCard(amount)
|
||||
val card = Card.random(approvedAmount = (amount - easyPay.discountAmount))
|
||||
|
||||
return create(
|
||||
paymentKey = paymentKey,
|
||||
orderId = orderId,
|
||||
requestedAt = requestedAt,
|
||||
amount = amount,
|
||||
card = card,
|
||||
easyPay = easyPay,
|
||||
bankTransfer = null
|
||||
)
|
||||
}
|
||||
|
||||
fun randomWithEasypayPrepaid(
|
||||
paymentKey: String,
|
||||
orderId: String,
|
||||
amount: Int,
|
||||
requestedAt: OffsetDateTime
|
||||
): Payment {
|
||||
val easypay = Easypay.randomWithPrepaid(amount)
|
||||
|
||||
return create(
|
||||
paymentKey = paymentKey,
|
||||
orderId = orderId,
|
||||
requestedAt = requestedAt,
|
||||
amount = amount,
|
||||
card = null,
|
||||
easyPay = easypay,
|
||||
bankTransfer = null
|
||||
)
|
||||
}
|
||||
|
||||
fun randomWithBankTransfer(
|
||||
paymentKey: String,
|
||||
orderId: String,
|
||||
amount: Int,
|
||||
requestedAt: OffsetDateTime
|
||||
): Payment {
|
||||
val bankTransfer = BankTransfer.random()
|
||||
|
||||
return create(
|
||||
paymentKey = paymentKey,
|
||||
orderId = orderId,
|
||||
requestedAt = requestedAt,
|
||||
amount = amount,
|
||||
card = null,
|
||||
easyPay = null,
|
||||
bankTransfer = bankTransfer
|
||||
)
|
||||
}
|
||||
|
||||
fun randomForCancellation(paymentKey: String, cancellation: Cancellation): Payment {
|
||||
return create(
|
||||
paymentKey = paymentKey,
|
||||
orderId = "orderId",
|
||||
requestedAt = OffsetDateTime.now(),
|
||||
amount = cancellation.cancelAmount,
|
||||
card = null,
|
||||
easyPay = null,
|
||||
bankTransfer = null
|
||||
).apply {
|
||||
this.status = PaymentStatus.CANCELED
|
||||
this.cancels = cancellation
|
||||
}
|
||||
}
|
||||
|
||||
private fun create(
|
||||
paymentKey: String,
|
||||
orderId: String,
|
||||
requestedAt: OffsetDateTime,
|
||||
amount: Int,
|
||||
card: Card?,
|
||||
easyPay: Easypay?,
|
||||
bankTransfer: BankTransfer?
|
||||
): Payment {
|
||||
val vat = (amount * 0.1).toInt()
|
||||
val suppliedAmount = amount - vat
|
||||
val paymentMethod = if (bankTransfer != null) {
|
||||
PaymentMethod.TRANSFER
|
||||
} else if (easyPay != null) {
|
||||
PaymentMethod.EASY_PAY
|
||||
} else {
|
||||
PaymentMethod.CARD
|
||||
}
|
||||
|
||||
return Payment(
|
||||
mid = RandomPaymentValueGenerator.mId(),
|
||||
lastTransactionKey = RandomPaymentValueGenerator.transactionKey(),
|
||||
paymentKey = paymentKey,
|
||||
orderId = orderId,
|
||||
orderName = "테스트 결제",
|
||||
requestedAt = requestedAt,
|
||||
approvedAt = OffsetDateTime.now(),
|
||||
card = card,
|
||||
easyPay = easyPay,
|
||||
transfer = bankTransfer,
|
||||
totalAmount = amount,
|
||||
balanceAmount = amount,
|
||||
suppliedAmount = suppliedAmount,
|
||||
vat = vat,
|
||||
method = paymentMethod,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user