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