자동화 slecs

가상계좌 입금 알림을 다중 은행 채널로 확장해 누락 해소

목차

은행 알림에서 가상계좌 입금 URL을 자동으로 받아오는 경로에 손댔음. 기존엔 메신저 푸시 한 채널만 후킹해서 처리했는데, 일부 은행은 자체 푸시/SMS로만 결과를 쏴주니 누수가 생김. 파트너 화면에서 "입금됐는데 왜 반영 안 됨?" 문의가 한 주에 두어 건씩 올라왔음.

무엇을 바꿨나

주요 시중은행 두 곳(A, B) 알림을 별도 경로로 캡처하도록 텄음. 알림 수신 권한과 매니페스트 항목을 추가하고, 본문에서 URL만 뽑아 기존 처리 큐로 흘려보내는 구조.

  • 메신저 1채널 → 다중 소스로 확장
  • URL 추출 로직을 한 군데로 모음 (분기 폭발 방지)
  • 디버그 빌드에서만 임의 페이로드를 주입할 수 있는 수신기 분리 추가
// 본문 → URL 한 줄 추출
val pattern = Regex("""https?://\S+""")
val url = pattern.find(body)?.value

디버그 수신기 격리

테스트할 때마다 실제 은행에서 입금 받을 순 없으니, 내부 broadcast로 가짜 알림을 주입하는 경로를 만들었음. 다만 릴리즈에서 노출되면 사고 직격탄이라 매니페스트를 빌드 타입별로 분리.

항목 운영 디버그
메신저 수신기 O O
은행 알림 수신기 O O
주입용 수신기 X O
외부 export false false
adb shell am broadcast \
  -a local.debug.INJECT \
  --es bank "A" --es body "<샘플본문>"

ignore 파일에는 디버그용 알림 덤프가 쌓이는 디렉터리를 추가했음. 매번 status에 뜨면 시야가 흐려지고 실수로 커밋할 위험도 있어서 일찍 막아둠.

빠진 부분

은행마다 본문 포맷이 미묘하게 다른데, 이번엔 URL만 정확히 잡히면 통과로 봤음. 금액·예금주 파싱은 다음 사이클로. 그리고 알림 권한이 꺼졌거나 사용자가 임의로 해제한 단말 처리는 아직 — 디바이스 한 번 더 돌려봐야 함.

회고

  • 입력 채널이 늘어날수록 "어디서 들어와도 같은 큐로 흐른다" 원칙을 안 지키면 분기가 폭발함을 또 체감
  • 디버그 도구는 처음부터 운영과 격리해두는 게 마음 편함. 매니페스트 분리 5분이 사고 한 번을 막음
  • 은행 알림 본문은 진짜 자주 바뀜. 정규식 의존 구간은 케이스 박제 필수

다음

댓글 0

첫 댓글 달아줘.