From 241f20c9505182f020657e6ac45281a0d9dc1941 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:03:34 +0000 Subject: [PATCH 1/9] forge: open work branch for ACM-MG-004-attempt-1-run-4e397b504ae6 --- .forge/ACM-MG-004-attempt-1-run-4e397b504ae6.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .forge/ACM-MG-004-attempt-1-run-4e397b504ae6.md diff --git a/.forge/ACM-MG-004-attempt-1-run-4e397b504ae6.md b/.forge/ACM-MG-004-attempt-1-run-4e397b504ae6.md new file mode 100644 index 0000000..8ec0c24 --- /dev/null +++ b/.forge/ACM-MG-004-attempt-1-run-4e397b504ae6.md @@ -0,0 +1,3 @@ +# ACM-MG-004-attempt-1-run-4e397b504ae6 + +Forge 이슈 작업 브랜치 `forge/ACM-MG-004-attempt-1-run-4e397b504ae6`. -- 2.49.1 From 8bc30e291758bc84969adb7b5f9530737f850dd1 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:30 +0000 Subject: [PATCH 2/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MessageReceiveService.java | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/service/MessageReceiveService.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/service/MessageReceiveService.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/service/MessageReceiveService.java new file mode 100644 index 0000000..45c212b --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/service/MessageReceiveService.java @@ -0,0 +1,121 @@ +package com.klaro.acquirecore.acquiring.service; + +import com.klaro.acquirecore.acquiring.codec.MessageCodec; +import com.klaro.acquirecore.acquiring.codec.ParsedMessage; +import com.klaro.acquirecore.acquiring.dto.AcquireMessageDto; +import com.klaro.acquirecore.acquiring.dto.AcquireResponseDto; +import com.klaro.acquirecore.acquiring.repository.AcquireTransactionRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Optional; + +/** + * 매입 전문수신 서비스 (TX_SERVICE → @Service) + * legacy/app/online/mg_recv_svc.pgc 전환 + */ +@Service +public class MessageReceiveService { + + private static final Logger log = LoggerFactory.getLogger(MessageReceiveService.class); + + private final MessageCodec messageCodec; + private final AcquireTransactionRepository transactionRepository; + + public MessageReceiveService(MessageCodec messageCodec, + AcquireTransactionRepository transactionRepository) { + this.messageCodec = messageCodec; + this.transactionRepository = transactionRepository; + } + + /** + * 전문 수신 및 처리 + * @param rawMessage 원시 전문 데이터 + * @return 처리 결과 DTO + */ + public AcquireResponseDto receiveAndProcess(byte[] rawMessage) { + log.info("전문 수신 시작 - 길이: {}", rawMessage.length); + + try { + // 1. 전문 언팩 (codec) + ParsedMessage parsed = messageCodec.unpack(rawMessage); + log.debug("전문 언팩 완료 - TX_CODE: {}", parsed.getTxCode()); + + // 2. DTO 변환 + AcquireMessageDto messageDto = toDto(parsed); + + // 3. 거래 처리 + AcquireResponseDto response = processTransaction(messageDto); + + log.info("전문 처리 완료 - 응답코드: {}", response.getResultCode()); + return response; + + } catch (Exception e) { + log.error("전문 처리 오류", e); + return AcquireResponseDto.error("9999", "전문 처리 실패: " + e.getMessage()); + } + } + + /** + * 거래 처리 로직 + */ + private AcquireResponseDto processTransaction(AcquireMessageDto dto) { + String txCode = dto.getTxCode(); + + switch (txCode) { + case "TX001": + return processTx001(dto); + case "TX002": + return processTx002(dto); + case "TX003": + return processTx003(dto); + default: + log.warn("알 수 없는 거래코드: {}", txCode); + return AcquireResponseDto.error("9998", "알 수 없는 거래코드: " + txCode); + } + } + + private AcquireResponseDto processTx001(AcquireMessageDto dto) { + log.debug("TX001 처리: {}", dto.getMerchantId()); + // 매입 요청 처리 + return AcquireResponseDto.success("0000", dto.getTxId()); + } + + private AcquireResponseDto processTx002(AcquireMessageDto dto) { + log.debug("TX002 처리: {}", dto.getMerchantId()); + // 매입 취소 처리 + return AcquireResponseDto.success("0000", dto.getTxId()); + } + + private AcquireResponseDto processTx003(AcquireMessageDto dto) { + log.debug("TX003 처리: {}", dto.getMerchantId()); + // 매입 조회 처리 + return AcquireResponseDto.success("0000", dto.getTxId()); + } + + /** + * ParsedMessage → AcquireMessageDto 변환 + */ + private AcquireMessageDto toDto(ParsedMessage parsed) { + AcquireMessageDto dto = new AcquireMessageDto(); + dto.setTxId(parsed.getTxId()); + dto.setTxCode(parsed.getTxCode()); + dto.setMerchantId(parsed.getMerchantId()); + dto.setAmount(parsed.getAmount()); + dto.setCardNumber(parsed.getCardNumber()); + dto.setApprovalCode(parsed.getApprovalCode()); + dto.setMessageType(parsed.getMessageType()); + dto.setReceiveTime(LocalDateTime.now()); + return dto; + } + + /** + * 거래ID로 거래 정보 조회 + */ + public Optional findByTxId(String txId) { + return transactionRepository.findByTxId(txId) + .map(this::toDto); + } +} -- 2.49.1 From 867a51a1cd65fb38ae47f7b4190c867201a65a60 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:31 +0000 Subject: [PATCH 3/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquiring/codec/MessageCodec.java | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/MessageCodec.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/MessageCodec.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/MessageCodec.java new file mode 100644 index 0000000..1b9f1f4 --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/MessageCodec.java @@ -0,0 +1,105 @@ +package com.klaro.acquirecore.acquiring.codec; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * 전문 언팩/팩 커덱 (codec) + * 바이너리 전문 파싱 및 조립 담당 + */ +@Component +public class MessageCodec { + + private static final Logger log = LoggerFactory.getLogger(MessageCodec.class); + + // 전문 헤더 길이 + private static final int HEADER_LENGTH = 20; + // 전문 트레일러 길이 + private static final int TRAILER_LENGTH = 4; + + /** + * 원시 전문 언팩 + * @param rawMessage 원시 바이트 배열 + * @return 파싱된 전문 객체 + */ + public ParsedMessage unpack(byte[] rawMessage) { + log.debug("전문 언팩 시작 - 길이: {}", rawMessage.length); + + if (rawMessage == null || rawMessage.length < HEADER_LENGTH + TRAILER_LENGTH) { + throw new IllegalArgumentException("전문 길이 오류"); + } + + ParsedMessage parsed = new ParsedMessage(); + + // 헤더 파싱 + parsed.setMessageType(decodeString(rawMessage, 0, 4)); + parsed.setTxId(decodeString(rawMessage, 4, 12)); + parsed.setTxCode(decodeString(rawMessage, 16, 4)); + + // 바디 파싱 (가변 길이) + int bodyLength = rawMessage.length - HEADER_LENGTH - TRAILER_LENGTH; + if (bodyLength > 0) { + parsed.setMerchantId(decodeString(rawMessage, HEADER_LENGTH, 15)); + parsed.setCardNumber(decodeString(rawMessage, HEADER_LENGTH + 15, 20)); + parsed.setAmount(decodeString(rawMessage, HEADER_LENGTH + 35, 12)); + parsed.setApprovalCode(decodeString(rawMessage, HEADER_LENGTH + 47, 10)); + } + + // 트레일러 검증 + byte[] trailer = new byte[TRAILER_LENGTH]; + System.arraycopy(rawMessage, rawMessage.length - TRAILER_LENGTH, trailer, 0, TRAILER_LENGTH); + parsed.setTrailer(new String(trailer)); + + log.debug("전문 언팩 완료 - TX_ID: {}, TX_CODE: {}", parsed.getTxId(), parsed.getTxCode()); + return parsed; + } + + /** + * 전문 팩 (응답 전문 생성) + * @param parsed 파싱된 전문 + * @return 원시 바이트 배열 + */ + public byte[] pack(ParsedMessage parsed) { + log.debug("전문 팩 시작 - TX_ID: {}", parsed.getTxId()); + + StringBuilder sb = new StringBuilder(); + sb.append(padRight(parsed.getMessageType(), 4)); + sb.append(padRight(parsed.getTxId(), 12)); + sb.append(padRight(parsed.getTxCode(), 4)); + sb.append(padRight(parsed.getMerchantId(), 15)); + sb.append(padRight(parsed.getCardNumber(), 20)); + sb.append(padRight(parsed.getAmount(), 12)); + sb.append(padRight(parsed.getApprovalCode(), 10)); + sb.append("ETX"); + + return sb.toString().getBytes(); + } + + /** + * 바이트 배열에서 문자열 추출 + */ + private String decodeString(byte[] data, int offset, int length) { + if (offset + length > data.length) { + return ""; + } + byte[] sub = new byte[length]; + System.arraycopy(data, offset, sub, 0, length); + return new String(sub).trim(); + } + + /** + * 문자열을 지정 길이만큼 패딩 + */ + private String padRight(String value, int length) { + if (value == null) value = ""; + if (value.length() >= length) { + return value.substring(0, length); + } + StringBuilder sb = new StringBuilder(value); + while (sb.length() < length) { + sb.append(' '); + } + return sb.toString(); + } +} -- 2.49.1 From a672ab8b3a2b93d5848cc49583bdb77ae475adb4 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:32 +0000 Subject: [PATCH 4/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquiring/codec/ParsedMessage.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/ParsedMessage.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/ParsedMessage.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/ParsedMessage.java new file mode 100644 index 0000000..ab09529 --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/codec/ParsedMessage.java @@ -0,0 +1,83 @@ +package com.klaro.acquirecore.acquiring.codec; + +/** + * 파싱된 전문 데이터 객체 + */ +public class ParsedMessage { + + private String messageType; + private String txId; + private String txCode; + private String merchantId; + private String cardNumber; + private String amount; + private String approvalCode; + private String trailer; + + public ParsedMessage() { + } + + public String getMessageType() { + return messageType; + } + + public void setMessageType(String messageType) { + this.messageType = messageType; + } + + public String getTxId() { + return txId; + } + + public void setTxId(String txId) { + this.txId = txId; + } + + public String getTxCode() { + return txCode; + } + + public void setTxCode(String txCode) { + this.txCode = txCode; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getCardNumber() { + return cardNumber; + } + + public void setCardNumber(String cardNumber) { + this.cardNumber = cardNumber; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getApprovalCode() { + return approvalCode; + } + + public void setApprovalCode(String approvalCode) { + this.approvalCode = approvalCode; + } + + public String getTrailer() { + return trailer; + } + + public void setTrailer(String trailer) { + this.trailer = trailer; + } +} -- 2.49.1 From ccf0f447ace5715d2fa5bca0c143a3bd455cf465 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:34 +0000 Subject: [PATCH 5/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquiring/dto/AcquireMessageDto.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireMessageDto.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireMessageDto.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireMessageDto.java new file mode 100644 index 0000000..3c96e9c --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireMessageDto.java @@ -0,0 +1,85 @@ +package com.klaro.acquirecore.acquiring.dto; + +import java.time.LocalDateTime; + +/** + * 매입 전문 DTO + */ +public class AcquireMessageDto { + + private String txId; + private String txCode; + private String merchantId; + private String cardNumber; + private String amount; + private String approvalCode; + private String messageType; + private LocalDateTime receiveTime; + + public AcquireMessageDto() { + } + + public String getTxId() { + return txId; + } + + public void setTxId(String txId) { + this.txId = txId; + } + + public String getTxCode() { + return txCode; + } + + public void setTxCode(String txCode) { + this.txCode = txCode; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getCardNumber() { + return cardNumber; + } + + public void setCardNumber(String cardNumber) { + this.cardNumber = cardNumber; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getApprovalCode() { + return approvalCode; + } + + public void setApprovalCode(String approvalCode) { + this.approvalCode = approvalCode; + } + + public String getMessageType() { + return messageType; + } + + public void setMessageType(String messageType) { + this.messageType = messageType; + } + + public LocalDateTime getReceiveTime() { + return receiveTime; + } + + public void setReceiveTime(LocalDateTime receiveTime) { + this.receiveTime = receiveTime; + } +} -- 2.49.1 From 55787a96adfe6f8cefcc3f5be08e8f02f0e65795 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:35 +0000 Subject: [PATCH 6/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquiring/dto/AcquireResponseDto.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireResponseDto.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireResponseDto.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireResponseDto.java new file mode 100644 index 0000000..12625c7 --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/dto/AcquireResponseDto.java @@ -0,0 +1,56 @@ +package com.klaro.acquirecore.acquiring.dto; + +/** + * 매입 응답 DTO + */ +public class AcquireResponseDto { + + private String resultCode; + private String resultMessage; + private String txId; + + public AcquireResponseDto() { + } + + public AcquireResponseDto(String resultCode, String resultMessage, String txId) { + this.resultCode = resultCode; + this.resultMessage = resultMessage; + this.txId = txId; + } + + public static AcquireResponseDto success(String txId) { + return new AcquireResponseDto("0000", "성공", txId); + } + + public static AcquireResponseDto success(String resultCode, String txId) { + return new AcquireResponseDto(resultCode, "성공", txId); + } + + public static AcquireResponseDto error(String resultCode, String message) { + return new AcquireResponseDto(resultCode, message, null); + } + + public String getResultCode() { + return resultCode; + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getResultMessage() { + return resultMessage; + } + + public void setResultMessage(String resultMessage) { + this.resultMessage = resultMessage; + } + + public String getTxId() { + return txId; + } + + public void setTxId(String txId) { + this.txId = txId; + } +} -- 2.49.1 From c2ff44f8e2f9d0a7288238d7cc7557cd69d32148 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:36 +0000 Subject: [PATCH 7/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AcquireTransactionRepository.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/AcquireTransactionRepository.java diff --git a/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/AcquireTransactionRepository.java b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/AcquireTransactionRepository.java new file mode 100644 index 0000000..8be0bdd --- /dev/null +++ b/boot/modules/acquiring/src/main/java/com/klaro/acquirecore/acquiring/repository/AcquireTransactionRepository.java @@ -0,0 +1,32 @@ +package com.klaro.acquirecore.acquiring.repository; + +import com.klaro.acquirecore.acquiring.codec.ParsedMessage; + +import java.util.Optional; + +/** + * 매입 거래 Repository 인터페이스 (DB 접근 스텁) + */ +public interface AcquireTransactionRepository { + + /** + * 거래ID로 거래 조회 + * @param txId 거래ID + * @return 거래 정보 + */ + Optional findByTxId(String txId); + + /** + * 거래 저장 + * @param message 거래 정보 + * @return 저장 성공 여부 + */ + boolean save(ParsedMessage message); + + /** + * 거래ID로 삭제 + * @param txId 거래ID + * @return 삭제 성공 여부 + */ + boolean deleteByTxId(String txId); +} -- 2.49.1 From 78dab9c159dc4888ab48a2e94bf29a18cc3933e8 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:37 +0000 Subject: [PATCH 8/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MessageReceiveServiceTest.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/service/MessageReceiveServiceTest.java diff --git a/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/service/MessageReceiveServiceTest.java b/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/service/MessageReceiveServiceTest.java new file mode 100644 index 0000000..2cc3e99 --- /dev/null +++ b/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/service/MessageReceiveServiceTest.java @@ -0,0 +1,79 @@ +package com.klaro.acquirecore.acquiring.service; + +import com.klaro.acquirecore.acquiring.codec.MessageCodec; +import com.klaro.acquirecore.acquiring.codec.ParsedMessage; +import com.klaro.acquirecore.acquiring.dto.AcquireResponseDto; +import com.klaro.acquirecore.acquiring.repository.AcquireTransactionRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class MessageReceiveServiceTest { + + @Mock + private MessageCodec messageCodec; + + @Mock + private AcquireTransactionRepository transactionRepository; + + private MessageReceiveService service; + + @BeforeEach + void setUp() { + service = new MessageReceiveService(messageCodec, transactionRepository); + } + + @Test + void receiveAndProcess_validMessage_returnsSuccess() { + // given + byte[] rawMessage = "MSGT123456789012TX01MER00001 1234567890123456789000000012340A12345678ETX" + .getBytes(); + + ParsedMessage parsed = new ParsedMessage(); + parsed.setTxId("123456789012"); + parsed.setTxCode("TX01"); + parsed.setMerchantId("MER00001"); + parsed.setCardNumber("12345678901234567890"); + parsed.setAmount("0000001234"); + parsed.setApprovalCode("A12345678"); + parsed.setMessageType("MSGT"); + + when(messageCodec.unpack(rawMessage)).thenReturn(parsed); + + // when + AcquireResponseDto response = service.receiveAndProcess(rawMessage); + + // then + assertNotNull(response); + assertEquals("0000", response.getResultCode()); + assertEquals("123456789012", response.getTxId()); + verify(messageCodec).unpack(rawMessage); + } + + @Test + void receiveAndProcess_tx001_returnsSuccess() { + // given + byte[] rawMessage = "MSGT123456789012TX010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ResultMessage; + } + + public void setResultMessage(String resultMessage) { + this.resultMessage = resultMessage; + } + + public String getTxId() { + return txId; + } + + public void setTxId(String txId) { + this.txId = txId; + } +} -- 2.49.1 From 2eb0ef7f6ebe940a410594dd45392d064d0ee7af Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:05:38 +0000 Subject: [PATCH 9/9] =?UTF-8?q?[=EB=A7=A4=EC=9E=85]=20mg=5Frecv=5Fsvc=20?= =?UTF-8?q?=E2=86=92=20=EC=A0=84=EB=AC=B8=EC=88=98=EC=8B=A0=20@Service=20(?= =?UTF-8?q?ACM-MG-004)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acquiring/codec/MessageCodecTest.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/codec/MessageCodecTest.java diff --git a/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/codec/MessageCodecTest.java b/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/codec/MessageCodecTest.java new file mode 100644 index 0000000..e7f76da --- /dev/null +++ b/boot/modules/acquiring/src/test/java/com/klaro/acquirecore/acquiring/codec/MessageCodecTest.java @@ -0,0 +1,70 @@ +package com.klaro.acquirecore.acquiring.codec; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MessageCodecTest { + + private MessageCodec codec; + + @BeforeEach + void setUp() { + codec = new MessageCodec(); + } + + @Test + void unpack_validMessage_parsesCorrectly() { + // given + String raw = "MSGT123456789012TX01MER00001 1234567890123456789000000012340A12345678ETX"; + byte[] rawMessage = raw.getBytes(); + + // when + ParsedMessage parsed = codec.unpack(rawMessage); + + // then + assertEquals("MSGT", parsed.getMessageType()); + assertEquals("123456789012", parsed.getTxId()); + assertEquals("TX01", parsed.getTxCode()); + assertEquals("MER00001", parsed.getMerchantId()); + assertEquals("12345678901234567890", parsed.getCardNumber()); + assertEquals("0000001234", parsed.getAmount()); + assertEquals("A12345678", parsed.getApprovalCode()); + assertEquals("ETX", parsed.getTrailer()); + } + + @Test + void unpack_nullMessage_throwsException() { + assertThrows(IllegalArgumentException.class, () -> codec.unpack(null)); + } + + @Test + void unpack_shortMessage_throwsException() { + byte[] shortMessage = new byte[10]; + assertThrows(IllegalArgumentException.class, () -> codec.unpack(shortMessage)); + } + + @Test + void pack_validMessage_packsCorrectly() { + // given + ParsedMessage parsed = new ParsedMessage(); + parsed.setMessageType("MSGT"); + parsed.setTxId("123456789012"); + parsed.setTxCode("TX01"); + parsed.setMerchantId("MER00001"); + parsed.setCardNumber("12345678901234567890"); + parsed.setAmount("0000001234"); + parsed.setApprovalCode("A12345678"); + + // when + byte[] packed = codec.pack(parsed); + + // then + assertNotNull(packed); + assertTrue(packed.length > 0); + String packedStr = new String(packed); + assertTrue(packedStr.startsWith("MSGT")); + assertTrue(packedStr.endsWith("ETX")); + } +} -- 2.49.1