fix(payment): NHN KCP 부분취소 가능금액 전달값 수정

This commit is contained in:
thisgun
2026-07-07 14:11:57 +09:00
parent cebe352e46
commit ff45a19b4b
3 changed files with 6 additions and 4 deletions
@@ -11,6 +11,7 @@
- 비회원 NHN KCP 주문완료/주문상세에서 매출전표 조회가 인증 사용자 전용 라우트에 막히지 않도록 게스트 주문 토큰과 결제 성공 후 임시 영수증 쿠키 접근을 지원했습니다.
- 관리자 주문상세의 NHN KCP 결제 정보 패널이 원승인 정보와 현재 취소/환불 상태를 함께 표시하도록 보강했습니다.
- PC 결제창 close-report와 승인 콜백이 경쟁할 때 결제 성공 주문이 실패 처리로 덮이지 않도록 주문번호 단위 콜백 락과 최신 결제 상태 가드를 적용했습니다.
- NHN KCP 부분취소 요청에서 `rem_mny`를 취소 후 잔액이 아닌 현재 부분취소 가능 금액으로 전달해 큰 금액 부분취소가 거절될 수 있던 문제를 수정했습니다.
## [1.0.0-beta.5] - 2026-06-23
@@ -197,7 +197,7 @@ class NhnKcpApiService
* @param int $cancelAmt 취소 금액
* @param string $cancelMsg 취소 사유
* @param bool $isPartial 부분 취소 여부
* @param int $totalAmt 원거래 결제 금액 (부분취소 시 rem_mny 계산에 사용)
* @param int $totalAmt 현재 부분취소 가능 금액 (KCP rem_mny)
* @return array 파싱된 KCP 응답
*/
public function cancelPayment(
@@ -217,8 +217,9 @@ class NhnKcpApiService
];
if ($isPartial && $totalAmt > 0) {
$remMny = $totalAmt - $cancelAmt;
$fields['rem_mny'] = (string) $remMny;
// KCP rem_mny는 취소 후 잔액이 아니라 현재 부분취소 가능한 금액이다.
// 첫 부분취소는 원거래금액, 이후에는 이전 부분취소 후 남은 잔액을 전달한다.
$fields['rem_mny'] = (string) $totalAmt;
$fields['mod_mny'] = (string) $cancelAmt;
}
@@ -261,7 +261,7 @@ class NhnKcpApiServiceTest extends PluginTestCase
$args = $this->capturedCliArgs($stub['log']);
$this->assertStringContainsString('mod_type=RN07', $args);
$this->assertStringContainsString('mod_mny=10000', $args);
$this->assertStringContainsString('rem_mny=40000', $args);
$this->assertStringContainsString('rem_mny=50000', $args);
} finally {
$this->removeStubbedCliDirectory($stub['dir']);
}