# QA Report - Redmine #4374 (dev)

- Generated: 2026-10-26T22:03:11+09:00
- Redmine: https://itsm.bix.bz/issues/4374
- QA Redmine: not created
- Subject: [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건
- Workflow Status: 준비
- Status: PASS
- Result JSON: artifacts/result-summary.json
- Roles: ADMIN
- Route Candidates: not recorded

## Scope

개발계 워너페이먼츠 결제 통보 수신 응답(resultCode JSON·HTTP 500)과 취소 통보 중복 반영 차단 QA

## Checklist

1. 사전: 개발계 api·consumer가 develop-rc 4694022cda 이후 버전으로 배포됐는지 확인 (응답 형식으로 확인)
2. 가짜 승인 통보 전송 시 HTTP 200, Content-Type application/json;charset=UTF-8, 본문 {"resultCode":"0000"} (기존 SUCCESS 문자열 아님)
3. 가짜 승인 통보 처리 후 결제 1건(승인, 10,000원) 생성, 결제 로그 응답값 resultCode 0000
4. 같은 가짜 승인 통보 재전송 시 같은 성공 응답, 결제 중복 생성 없음
5. 가짜 부분취소 통보(3,000원) → 성공 응답, 취소금액 3,000원·부분취소 상태·취소 이력 1건
6. 부분취소 DB 반영 뒤 같은 부분취소 재전송 → 같은 성공 응답, 취소금액·취소 이력 증가 없음, api 로그 '이미 반영된 취소 통보입니다' (로그는 Rancher 접근 불가로 DB·단위 테스트로 대체)
7. 취소일시가 다른 부분취소(2,000원) → 별도 취소로 반영, 취소금액 5,000원
8. 잔액 5,000원 전체취소 → 취소 상태, 같은 통보 재전송 시 같은 성공 응답에 상태·금액 변화 없음
9. 필수값(tranDate) 누락 통보 → HTTP 500, 결제 미생성
10. 통보 저장 실패 시 HTTP 500 (개발계 재현 어려워 단위 테스트로 대체)
11. 메인페이·코페이 등 다른 PG 통보 응답 기존과 동일
12. 다른 PG 부분취소 통보 기존과 동일 반영 (중복 차단은 워너페이먼츠만, 단위 테스트·코드로 확인)
13. 워너페이먼츠 측 테스트 통보 수신 확인 (가능한 경우) → 개발계 워너페이먼츠 연동이 없어 대상 외
14. 참고: 구전산 거래내역(transaction) 반영 상태

## Setup Steps

- 없음

## Source Text

요청자: 송인준
[1] QA 요청 배경
* https://itsm.bix.bz/issues/4374
[2] 사전 데이터
* 
[3] 사전 작업
* 
[4] 권한별 테스트
* 
[5] 검증 대상
* 응답 확인
[6] 체크리스트
사전 준비 (가짜 통보 전송)
* 개발계 api·consumer가 develop-rc 4694022cda 이후 버전으로 배포됐는지 확인
* 통보는 https://api-dev.biscuitpay.com/api/v1/payment/notification/wannapayments로 전송 (별도 헤더 없이 빅스페이먼츠 테넌트로 처리됨)
* MID는 빅스페이먼츠 테넌트의 단말기 MID 2132321123321 사용
* 테스트 거래번호(refNo)는 매 테스트마다 새 값 사용
* 가짜 승인 통보(cmd=0), 가짜 취소 통보(cmd=1, orgRefNo=원승인 refNo, tranDate·tranTime=취소일시, amount=이번 취소금액)
* payment / payment_history / payment_log SQL로 결과 확인
확인 항목
* 가짜 승인 통보 전송 시 HTTP 200, Content-Type application/json;charset=UTF-8, 본문 {"resultCode":"0000"}으로 응답하는지 확인 (기존 SUCCESS 문자열이 아닌지)
* 가짜 승인 통보 처리 후 결제가 1건 생성되고(승인 상태, 10,000원), 결제 로그 응답값에 resultCode 0000이 기록되는지 확인
* 같은 가짜 승인 통보를 한 번 더 전송 시 같은 성공 응답을 반환하고 결제가 중복 생성되지 않는지 확인
* 가짜 부분취소 통보(3,000원) 전송 시 성공 응답을 반환하고 취소금액 3,000원·부분취소 상태·취소 이력 1건이 반영되는지 확인
* 부분취소가 DB에 반영된 뒤 같은 부분취소 통보를 다시 전송 시 같은 성공 응답을 반환하고, 취소금액과 취소 이력이 늘지 않으며, api 로그에 "이미 반영된 취소 통보입니다"가 남는지 확인 (반영 전에 바로 재전송하면 걸러지지 않는 것은 알려진 한계)
* 같은 원거래에 취소일시가 다른 부분취소 통보(tranTime=102000, 2,000원) 전송 시 별도 취소로 반영되어 취소금액이 5,000원이 되는지 확인
* 남은 금액(5,000원) 전체취소 통보 전송 시 취소 상태로 바뀌고, 같은 통보를 다시 보내도 같은 성공 응답에 상태·금액 변화가 없는지 확인
* 필수값(tranDate)을 빼고 가짜 통보 전송 시 성공 응답이 아닌 HTTP 500을 반환하고 결제가 생성되지 않는지 확인
* 통보 저장 실패 시 HTTP 500을 반환하는지 확인 (개발계 재현이 어려우면 단위 테스트·로컬 검증 결과로 대체)
* 메인페이·코페이 등 다른 PG 통보 응답이 기존과 동일한지 확인
* 다른 PG의 부분취소 통보가 기존과 동일하게 반영되는지 확인 (중복 차단은 워너페이먼츠만 적용)
* 워너페이먼츠 측 테스트 통보로 성공 응답이 정상 수신 처리되는지 확인 (가능한 경우)

## Execution Summary

- Passed: 13
- Failed: 0
- Skipped: 0
- Blocked: 0
- Flaky: 0
- Duration: 8280ms


## 한눈에 보는 결과

| 확인한 항목 | 계정 | 화면 | 수행한 동작 | 결과 | 증거 자료 |
|---|---|---|---|---|---|
| 00 배포 확인 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/01-00-deployment.md) |
| 01 승인 통보 응답 형식 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/02-01-approve-response.md) |
| 02 승인 통보 결제 생성·결제 로그 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/03-02-approve-payment.md) |
| 03 승인 통보 재전송 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/04-03-approve-resend.md) |
| 04 부분취소 3,000원 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/05-04-partial-cancel.md) |
| 05 반영된 부분취소 재전송 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/06-05-partial-cancel-resend.md) |
| 06 취소일시가 다른 부분취소 2,000원 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/07-06-second-partial-cancel.md) |
| 07 잔액 전체취소와 재전송 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/08-07-full-cancel.md) |
| 08 필수값(tranDate) 누락 통보 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 새로고침과 재조회 전후 거래 ID 출현 횟수를 비교 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/09-08-missing-trandate.md) |
| 09 통보 저장 실패 (단위 테스트 대체) | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/10-09-save-failure.md) |
| 10 다른 PG 통보 응답 | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/11-10-other-pg-response.md) |
| 11 다른 PG 부분취소 (단위 테스트·코드 확인) | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/12-11-other-pg-cancel.md) |
| 12 구전산 거래내역 반영 (참고) | 전체 | [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 | 전체 계정으로 [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 항목을 확인 | 기대한 동작과 일치했습니다. | [실행 기록 1](artifacts/logs/13-12-legacy-transaction.md) |

## 실패 또는 확인 불가 상세

- 실패 또는 확인 불가 항목이 없습니다.

## 수동 재현 필요

- 수동 재현이 필요한 항목이 없습니다.

## 스크린샷

- 스크린샷 자료가 없습니다.

## 화면 재현 기록

- 화면 재현 기록 자료가 없습니다.
- 화면 재현 기록은 기본적으로 실패/확인불가 항목에 한해 포함합니다. PASS 항목 trace까지 필요하면 `QA_PUBLISH_TRACE=1 npm run qa:report -- --issue <id> --env <env>`로 내부 제출용 산출물을 생성합니다.

## 실행 기록

- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 00 배포 확인: [실행 기록 1](artifacts/logs/01-00-deployment.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 01 승인 통보 응답 형식: [실행 기록 1](artifacts/logs/02-01-approve-response.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 02 승인 통보 결제 생성·결제 로그: [실행 기록 1](artifacts/logs/03-02-approve-payment.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 03 승인 통보 재전송: [실행 기록 1](artifacts/logs/04-03-approve-resend.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 04 부분취소 3,000원: [실행 기록 1](artifacts/logs/05-04-partial-cancel.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 05 반영된 부분취소 재전송: [실행 기록 1](artifacts/logs/06-05-partial-cancel-resend.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 06 취소일시가 다른 부분취소 2,000원: [실행 기록 1](artifacts/logs/07-06-second-partial-cancel.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 07 잔액 전체취소와 재전송: [실행 기록 1](artifacts/logs/08-07-full-cancel.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 08 필수값(tranDate) 누락 통보: [실행 기록 1](artifacts/logs/09-08-missing-trandate.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 09 통보 저장 실패 (단위 테스트 대체): [실행 기록 1](artifacts/logs/10-09-save-failure.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 10 다른 PG 통보 응답: [실행 기록 1](artifacts/logs/11-10-other-pg-response.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 11 다른 PG 부분취소 (단위 테스트·코드 확인): [실행 기록 1](artifacts/logs/12-11-other-pg-cancel.md)
- 전체 / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 12 구전산 거래내역 반영 (참고): [실행 기록 1](artifacts/logs/13-12-legacy-transaction.md)

## 자동화 원본 결과

| Scenario | Status | Duration | Screenshot | 화면 재현 기록 | Log | Error |
|---|---:|---:|---|---|---|---|
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 00 배포 확인 | PASS | 3ms |  |  | [로그 1](artifacts/logs/01-00-deployment.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 01 승인 통보 응답 형식 | PASS | 0ms |  |  | [로그 1](artifacts/logs/02-01-approve-response.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 02 승인 통보 결제 생성·결제 로그 | PASS | 0ms |  |  | [로그 1](artifacts/logs/03-02-approve-payment.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 03 승인 통보 재전송 | PASS | 0ms |  |  | [로그 1](artifacts/logs/04-03-approve-resend.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 04 부분취소 3,000원 | PASS | 0ms |  |  | [로그 1](artifacts/logs/05-04-partial-cancel.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 05 반영된 부분취소 재전송 | PASS | 0ms |  |  | [로그 1](artifacts/logs/06-05-partial-cancel-resend.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 06 취소일시가 다른 부분취소 2,000원 | PASS | 0ms |  |  | [로그 1](artifacts/logs/07-06-second-partial-cancel.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 07 잔액 전체취소와 재전송 | PASS | 0ms |  |  | [로그 1](artifacts/logs/08-07-full-cancel.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 08 필수값(tranDate) 누락 통보 | PASS | 1953ms |  |  | [로그 1](artifacts/logs/09-08-missing-trandate.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 09 통보 저장 실패 (단위 테스트 대체) | PASS | 1ms |  |  | [로그 1](artifacts/logs/10-09-save-failure.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 10 다른 PG 통보 응답 | PASS | 1823ms |  |  | [로그 1](artifacts/logs/11-10-other-pg-response.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 11 다른 PG 부분취소 (단위 테스트·코드 확인) | PASS | 2ms |  |  | [로그 1](artifacts/logs/12-11-other-pg-cancel.md) |  |
| 4374/dev/wannapayments-notification-response.spec.ts / [4374][dev] [BL] 워너페이먼츠 통보 수신 응답 형식 변경 요청의 건 / 12 구전산 거래내역 반영 (참고) | PASS | 3986ms |  |  | [로그 1](artifacts/logs/13-12-legacy-transaction.md) |  |

## Notes

- Playwright 실행 결과를 기준으로 작성되었습니다.
- 검토 후 `qa:redmine:update`로 report/evidence를 업로드하고 QA subissue 상태를 갱신합니다.
