package kr.wisestone.owl.domain; import kr.wisestone.owl.service.impl.PaymentServiceImpl; import kr.wisestone.owl.util.ConvertUtil; import org.apache.commons.text.StringEscapeUtils; import org.springframework.util.StringUtils; import javax.persistence.*; import java.io.Serializable; /** * Created by wisestone on 2018-02-13. */ @Entity public class PaymentHistory extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; public static final String PAYMENT_RESULT_SUCCESS = "success"; public static final String PAYMENT_RESULT_FAILED = "failed"; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String type; private Integer price; private Integer buyUser; private String customerUid; private String merchantUid; private String paymentResult; private String paymentResponse; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "workspace_id") private Workspace workspace; public PaymentHistory() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public Integer getBuyUser() { return buyUser; } public void setBuyUser(Integer buyUser) { this.buyUser = buyUser; } public String getCustomerUid() { return customerUid; } public void setCustomerUid(String customerUid) { this.customerUid = customerUid; } public String getMerchantUid() { return merchantUid; } public void setMerchantUid(String merchantUid) { this.merchantUid = merchantUid; } public String getPaymentResult() { return paymentResult; } public void setPaymentResult(String paymentResult) { this.paymentResult = paymentResult; } public String getPaymentResponse() { return paymentResponse; } public void setPaymentResponse(String paymentResponse) { this.paymentResponse = paymentResponse; } public Workspace getWorkspace() { return workspace; } public void setWorkspace(Workspace workspace) { this.workspace = workspace; } public PaymentHistory bindPaymentResult(PaymentServiceImpl.RestClientResultObject resultObject) { if (resultObject.isValidResult()) { this.setPaymentResult(PAYMENT_RESULT_SUCCESS); this.setPaymentResponse(ConvertUtil.convertObjectToJson(resultObject.getResponse())); } else { this.setPaymentResult(PAYMENT_RESULT_FAILED); if (resultObject.isHttpRequestFailed()) { this.setPaymentResponse(resultObject.getHttpStatus().getReasonPhrase()); } else if (resultObject.isIamportResultFailed()) { this.setPaymentResponse(resultObject.getMessage()); } else if (resultObject.isIamportPaymentFailed()) { if (StringUtils.hasText(resultObject.getMessage())) { this.setPaymentResponse(resultObject.getMessage()); } else { this.setPaymentResponse(StringEscapeUtils.unescapeJava(resultObject.getIamportFailReason())); } } } return this; } }