PaymentHistory.java
package hello.commerce.payment.model;
import hello.commerce.common.model.BaseEntity;
import jakarta.persistence.*;
import lombok.*;
import java.time.LocalDateTime;
@Entity
@Table(name = "payment_history")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PaymentHistory extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "payment_id", nullable = false)
private Payment payment;
@Column(name = "order_id", nullable = false)
private Long orderId;
@Column(name = "payment_method", nullable = false, length = 30)
private String paymentMethod;
@Enumerated(EnumType.STRING)
@Column(name = "payment_status", nullable = false)
private PaymentStatus paymentStatus;
@Column(name = "total_amount", nullable = false)
private int totalAmount;
private String pgToken;
private String transactionId;
private LocalDateTime paidAt;
private LocalDateTime canceledAt;
private String failReason;
@Column(name = "is_test", nullable = false)
private boolean isTest;
public PaymentHistory(Payment payment) {
this.payment = payment;
this.orderId = payment.getOrder().getId();
this.paymentMethod = payment.getPaymentMethod();
this.paymentStatus = payment.getPaymentStatus();
this.totalAmount = payment.getTotalAmount();
this.pgToken = payment.getPgToken();
this.transactionId = payment.getTransactionId();
this.paidAt = payment.getPaidAt();
this.canceledAt = payment.getCanceledAt();
this.failReason = payment.getFailReason();
this.isTest = payment.isTest();
}
}