카드 매입 승인 경로 Spring Boot 3 전환 (ACX-E2E-1785394564819)
Some checks are pending
Verify / source-contract (push) Waiting to run
Some checks are pending
Verify / source-contract (push) Waiting to run
This commit is contained in:
parent
7781110287
commit
382d65ce08
1 changed files with 59 additions and 0 deletions
|
|
@ -0,0 +1,59 @@
|
|||
package com.acquirex.approval;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CardAcquisitionApprovalService {
|
||||
private final Map<String, CardAcquisitionApprovalResponse> approvalStore = new ConcurrentHashMap<>();
|
||||
|
||||
public CardAcquisitionApprovalResponse processApproval(CardAcquisitionApprovalRequest request) {
|
||||
log.info("카드 매입 승인 요청 처리: merchantId={}, amount={}",
|
||||
request.getMerchantId(), request.getTransactionAmount());
|
||||
|
||||
String approvalId = generateApprovalId();
|
||||
CardAcquisitionApprovalStatus status = determineApprovalStatus(request);
|
||||
|
||||
CardAcquisitionApprovalResponse response = CardAcquisitionApprovalResponse.builder()
|
||||
.approvalId(approvalId)
|
||||
.merchantId(request.getMerchantId())
|
||||
.cardCompanyCode(request.getCardCompanyCode())
|
||||
.transactionAmount(request.getTransactionAmount())
|
||||
.status(status)
|
||||
.statusMessage(status.getDescription())
|
||||
.approvalDateTime(LocalDateTime.now())
|
||||
.responseCode(status == CardAcquisitionApprovalStatus.APPROVED ? "0000" : "9999")
|
||||
.responseMessage(status == CardAcquisitionApprovalStatus.APPROVED ? "승인 완료" : "승인 실패")
|
||||
.build();
|
||||
|
||||
approvalStore.put(approvalId, response);
|
||||
log.info("카드 매입 승인 완료: approvalId={}, status={}", approvalId, status);
|
||||
return response;
|
||||
}
|
||||
|
||||
public CardAcquisitionApprovalResponse getApprovalStatus(String approvalId) {
|
||||
log.info("승인 상태 조회: approvalId={}", approvalId);
|
||||
return approvalStore.get(approvalId);
|
||||
}
|
||||
|
||||
private CardAcquisitionApprovalStatus determineApprovalStatus(CardAcquisitionApprovalRequest request) {
|
||||
if (request.getTransactionAmount() == null) {
|
||||
return CardAcquisitionApprovalStatus.REJECTED;
|
||||
}
|
||||
if (request.getTransactionAmount().compareTo(new BigDecimal("100000")) >= 0) {
|
||||
return CardAcquisitionApprovalStatus.PROCESSING;
|
||||
}
|
||||
return CardAcquisitionApprovalStatus.APPROVED;
|
||||
}
|
||||
|
||||
private String generateApprovalId() {
|
||||
return "APR-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue