-
결제대행사 회원 동기화를 비동기 큐로 전환해 정산 누락 해소
발단 이커머스 결제대행사 연동 작업 중 회원 정보 동기화 스펙 추가 요청 받았음. 신규 가입 시 결제대행사 쪽에 우리 회원 식별값을 함께 넘겨야 환불·정산 매칭이 깔끔해진다는 운영팀 피드백 때문이었음. 기존엔 결제 시점에 임시로 끼워 넣고 있어서 매칭 누락이 가끔 터졌음. 무엇을 추가했는가 가입/수정 흐름에 정식 필드를 박고, 변경 이벤트를 외부로
읽기 → -
가상계좌 수수료 후정산 전환과 충전 상태 머신 정합성 확보
가상계좌 충전 수수료, 결국 후정산이 답 결제대행사 가상계좌로 잔액 충전하는 흐름에서 수수료 처리가 계속 어긋났음. 충전 시점에 수수료까지 한 번에 차감하니까 회계팀에서 "이게 왜 여기서 빠져?"가 반복됨. 가상계좌 건당 부과되는 입금/발급 비용은 **이번 정산 시 차감되는 게 아니라 익월에 별도 청구**되는 구조. 그동안 코드는 충전 직후 머천트 잔
읽기 → -
이커머스 파트너 충전 결제 연동과 잔액 정산 안정화
결제대행사 충전 플로우 붙이기 이커머스 파트너 잔액에 충전 기능 하나 추가하는 일이었음. 단순히 API 한 개 더 까는 줄 알았는데, 결제대행사 쪽 응답 파싱이랑 트랜잭션 경계 잡는 게 생각보다 까다로웠음. 기본 흐름은 이렇게 정리: - 클라이언트 충전 요청 → 서버에서 주문 키 발급 - 결제대행사 팝업 띄워서 결제 진행 - 콜백 수신 → 검증 →
읽기 → -
결제 콜백 후 잔액 즉시 반영
결제 콜백 후 잔액이 안 보이던 문제 결제대행사 콜백이 들어와서 충전이 끝났는데, 정작 파트너 화면에서 새 잔액을 보려면 새로고침을 두세 번 해야 했음. 콜백 처리 자체는 멀쩡한데 후처리 흐름이 어긋난 것. 원인을 까보니: - 콜백 트랜잭션 커밋 직후 응답을 돌려주는데, 조회 API 쪽이 자체 캐시를 들고 있었음 - 잔액 반영 이벤트가 비동기로 흐르
읽기 → -
결제 웹훅 중복 처리를 멱등성 락으로 차단
결제대행사 Webhook이 같은 건을 두 번 때리는 문제 운영 중 결제대행사에서 같은 결제 건에 대해 동일한 웹훅이 두 번, 세 번 들어오는 케이스가 누적됨. 첫 호출에서 정상 처리됐는데 두 번째 호출이 잔액을 한 번 더 건드리거나 알림이 중복 발송되는 사고가 발생했음. 원인을 정리하면 이런 흐름이었음. - 결제대행사가 응답 ACK를 못 받으면 일정
읽기 → -
결제대행사 웹훅 멱등 처리와 명세 불일치 극복기
결제대행사 API 연동, 명세서부터 다시 읽음 결제대행사 연동 작업 들어가면서 받아둔 명세서 PDF를 처음부터 다시 정독함. 이전에 한 번 훑었을 때는 "어차피 표준 PG 흐름이지" 싶어서 대충 봤는데, 막상 코드로 옮기려니까 필드 단위에서 막히는 부분이 한둘이 아니었음. 특히 헷갈렸던 포인트: - 승인 응답과 webhook 통보 메시지의 필드 이름
읽기 → -
은행 연동 코드를 어댑터 패턴으로 신규 프로젝트에 이전
은행 핸들러 마이그레이션 시작 기존 이커머스 플랫폼에 흩어져 있던 은행 연동 코드를 신규 프로젝트로 옮김. 단순 복붙이 아니라 의존성부터 정리해야 했음. 문제는 기존 코드가 캐시 유틸을 직접 import 하고 있었고, 신규 쪽엔 그 유틸이 없었음. 같은 이름으로 새로 깎느냐, 인터페이스만 맞추느냐 사이에서 고민하다가 신규에 얇게 다시 만드는 쪽으로 감
읽기 → -
결제 플랫폼 보안 취약점 9건 한꺼번에 잡은 후기
코드 리뷰 한 방에 9건 결제 플랫폼 코드 리뷰 받은 거 한꺼번에 정리함. CRITICAL 2건, HIGH 4건, MEDIUM 3건. 충전/이체/파트너 관리/API 키 인증 구간이 골고루 걸렸음. 생각보다 한 군데 몰려 있어서 작업 자체는 반나절 컷. | 등급 | 영역 | 핵심 | |---|---|---| | CRITICAL | 이체 | 금액 검증 누
읽기 → -
결제대행사 연동 프로젝트 첫 커밋을 가볍게 시작하는 법
새 프로젝트 첫 커밋 결제대행사 연동 솔루션 신규 프로젝트의 첫 삽을 떴음. 빈 디렉토리에 그래들 래퍼 뜯어 넣고, .gitignore 깔고, 빌드 스크립트 골격만 박아두는 작업. 별 거 아닌 것 같지만 매번 이 단계에서 30분~1시간씩 까먹음. 왜 래퍼부터 박는가 팀에 합류하는 사람마다 로컬 그래들 버전이 다르면 빌드 결과도 달라짐. 래퍼 jar
읽기 → -
송금 수수료 홀딩 정책 도입과 파트너별 입금 통계 화면 추가
연락처 송금 수수료 관리, 그리고 파트너 입금 통계 오늘은 결제 플랫폼에 두 가지를 한 번에 밀어넣음. 하나는 연락처 송금 흐름에 수수료 정책을 붙이는 작업, 다른 하나는 파트너별로 입금 내역을 합산해서 운영팀이 볼 수 있게 만드는 통계 화면. 처음엔 두 작업이 별개라고 생각했는데, 막상 들여다보니 **잔액 계산 유틸리티**가 양쪽에서 똑같이 호출되고
읽기 → -
알림 파이프라인에서 발신자 표시명 분리 정규화로 채널별 오발송 해결
v3.1 릴리스 — senderDisplay 필드 추가하다 만난 알림 파이프라인 이슈 API 스펙 작은 변경 하나가 알림 파이프라인 전체를 흔드는 경험을 또 함. 파트너 쪽에서 "발신자 표시명을 별도로 받고 싶다"는 요청이 왔고, 기존 sender 외에 senderDisplay 를 추가했음. 처음엔 단순 nullable 문자열 추가라 30분이면 끝날
읽기 → -
입금 계좌 로테이션과 AI 입금자명 자동 매칭 도입
한 계좌만 쓰던 시절의 한계 파트너가 늘어나면서 단일 입금 계좌 구조가 슬슬 깨지기 시작함. 일 거래량이 일정 수준을 넘어가니 은행 쪽에서 거래 패턴을 의심하기도 하고, 한도에 막혀서 오후 늦게 입금이 튕기는 사고도 종종 났음. 파트너 입장에서는 한 번 튕긴 경험이 재충전 의욕을 꺾어버려서, 단순한 운영 이슈로 끝나지 않고 매출 직격타로 돌아왔음. 그
읽기 → -
안드로이드 절전 정책으로 끊기던 새벽 알림 수집 해결
24시간 돌려야 하는 수집기, 새벽마다 멈췄음 알림 수집 모듈을 백그라운드로 24시간 띄워놓는 구조였는데, 새벽 3~5시 사이에 수집이 끊기는 현상이 반복됐음. 처음엔 네트워크 이슈인 줄 알았는데 로그를 까보니 프로세스 자체가 잠들어 있었음. Doze 모드와 App Standby가 만든 합작품이었음. Doze가 뭘 죽이는지부터 정리 배터리 최적화
읽기 → -
메신저 공유 URL 파싱 오류를 난독화 설정으로 해결
v3.1 릴리즈 회고 릴리즈 노트 정리하다가 메신저 공유 URL 파싱이 자꾸 깨졌던 게 떠올라서 한번 정리함. 무엇이 문제였나 기존 추출 로직은 정규식 한 줄로 끝냈었는데, 메신저 쪽에서 공유 포맷을 살짝 바꾸면서 ?p= 뒤에 추가 파라미터가 붙기 시작했음. 사용자 입장에선 같은 링크인데 앱에서만 못 받아내는 상황. - 원본 URL 끝에 &sha
읽기 → -
이커머스 결제 앱 빌드 파이프라인 보안·성능 일괄 정비
v3.1 릴리스 정리: 보안·성능·배포 설정을 한 번에 손봄 이커머스 결제 플랫폼 모바일 빌드 v3.1 작업하면서 빌드 스크립트, 난독화 규칙, 버전 메타, gitignore 4종 세트를 같이 갈아엎었음. 한 번에 묶은 이유는 단순함 — 셋 중 하나만 건드리면 나머지가 무조건 어긋남. .gitignore 부터 정리 처음에 잡힌 추적 누락 파일들 보
읽기 → -
결제대행사 콜백이 봇 필터에 막혀 정산 PENDING이 쌓인 문제 해결
외부 결제대행사 콜백이 차단당했음 이커머스 운영 중에 결제대행사 콜백이 봇 차단 필터에서 4xx로 떨어지는 사고 발생. 사용자 결제는 정상 완료됐는데 콜백이 막히니까 결제 플랫폼 내부 상태가 PENDING에서 안 넘어감. 정산 화면 보다가 발견했으니 운영 모니터링이 한 박자 늦은 것도 같이 발견됨. 원인 파악 - 봇 차단 필터를 외부 노출 API 경
읽기 → -
안드로이드 버전 코드 올리기 전 결제 회귀 테스트까지 챙기는 릴리즈 루틴
versionCode 7 올리면서 했던 생각들 v1.0.4 릴리즈 준비하면서 build.gradle 만 한 줄 바꿨음. versionName "1.0.4", versionCode 7. 진짜 별거 아닌 커밋인데, 이걸 손볼 때마다 머릿속에 체크리스트가 돌아가서 정리해둠. versionName vs versionCode 매번 헷갈려하는 동료가 있어서
읽기 → -
AI 분류로 자동입금 무한 재시도와 새벽 운영 알람을 잡다
문제 상황 자동입금 확정 단계에서 실패 메시지가 들어오면 무조건 재시도 큐에 다시 넣고 있었음. 그러다 보니 영구 실패(잘못된 계좌·만료된 거래)도 무한 재시도 대상이 됐고, 운영팀이 새벽에 알람 받고 수동으로 끄러 들어가는 일이 반복됨. 대표적으로 들어오는 메시지가 이런 식임. [입금알림] 거래종료 / 금액불일치 / 한도초과 / 일시오류 겉으
읽기 → -
파트너 정산 계좌 등록의 은행명 파싱 오류와 증권사 무한 로딩 수정
무슨 일이 있었음 파트너 정산용 계좌 등록 흐름에서 은행 응답 파싱이 들쭉날쭉해서 고치는 작업. 같은 은행이라도 응답 페이로드 표기가 케이스마다 달라서 매칭이 깨지는 문제였음. 거기에 한 파트너가 증권사 CMA를 등록하려다 무한 로딩에 빠졌다는 제보까지 들어옴. 핸들러가 증권사를 은행처럼 해석하다가 멍 때리는 동선. 깨졌던 표기 케이스 | 응답
읽기 → -
은행명 표기 불일치로 매일 누락되던 정산 30건 해결
은행명 매칭이 깨진 사연 결제대행사에서 내려주는 은행명 표기가 우리 내부 표준이랑 미묘하게 달라서 정산이 한 건씩 누락되던 이슈. 지역 농축협·새마을 계열에서 특히 자주 터졌음. 같은 은행인데 "새마을", "MG새마을", "새마을금고" 이렇게 세 가지 표기로 들어오는 게 발단. 문제의 코드 기존 매칭이 완전 일치 기반이라 한 글자라도 어긋나면 미매
읽기 →