Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,16 @@ public interface AdsControllerDocs {
ResponseEntity<Void> callback(
@Parameter(hidden = true) HttpServletRequest request, // 원본 쿼리 스트링 추출용 (서명 검증에 필수임)

@Parameter(description = "AdMob에서 생성한 SSV 콜백 서명 값", required = true, example = "TEST_PASS")
@Parameter(description = "AdMob에서 생성한 SSV 콜백 서명 값", required = false, example = "TEST_PASS")
@RequestParam("signature") String signature,

@Parameter(description = "서명 검증에 사용할 키 ID", required = true, example = "test_key_123")
@Parameter(description = "서명 검증에 사용할 키 ID", required = false, example = "test_key_123")
@RequestParam("key_id") String keyId,

@Parameter(description = "광고 시청 고유 트랜잭션 ID (중복 방지 키)", required = true, example = "TX_TEST_001")
@Parameter(description = "광고 시청 고유 트랜잭션 ID (중복 방지 키)", required = false, example = "TX_TEST_001")
@RequestParam("transaction_id") String transactionId,

@Parameter(description = "사용자 식별자 (앱에서 설정한 값)", required = true, example = "1")
@Parameter(description = "사용자 식별자 (앱에서 설정한 값)", required = false, example = "1")
@RequestParam("user_id") String userId,

@Parameter(description = "지급할 보상 아이템 타입 (INK or WEEK_COUNSEL)", example = "INK")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,15 @@ public void adMobCallbackInk(
* - Swagger Test를 위해, 값이 "TEST_PASS"가 들어오면 검증을 패스하도록 설정한다.
*/
if ("TEST_PASS".equals(signature)) {
log.info("🚧 [Swagger Test] 서명 검증을 건너뜁니다. (Transaction: {})", transactionId);
log.info("🚧 [Swagger Test] Pass verification.");
} else {
// [REAL MODE] 실제 운영 로직 (서명 검증 수행)
long keyId = Long.parseLong(keyIdStr);
if (!adMobVerifier.verify(queryString, signature, keyId)) {
throw new SecurityException("AdMob Signature Failed");
try {
long keyId = Long.parseLong(keyIdStr);
if (!adMobVerifier.verify(queryString, signature, keyId)) {
throw new SecurityException("AdMob Signature Failed");
}
} catch (NumberFormatException e) {
throw new SecurityException("Invalid Key ID format");
}
}

Expand Down
Loading