카드 매입 승인 경로 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