QR 스캔으로 파트너 친구추가·송금 연결 구현
목차
파트너 QR 친구추가 기능 만들기
이커머스 결제 플랫폼에서 파트너끼리 서로를 빠르게 등록하고 곧장 송금 화면까지 연결되는 흐름이 필요했음. 기존엔 파트너 식별값 입력 → 검색 → 등록 3단계라 모바일에서 손이 많이 갔음. QR 한 번 찍으면 끝나도록 갈아엎음.
화면 흐름
- 내정보 페이지에서 본인 식별값을 인코딩한 QR 노출
- 상대 파트너가 카메라로 스캔 → 친구추가 페이지 자동 진입
- 추가 직후 "이 친구에게 송금" 버튼이 그대로 연락처 송금 모달에 연결
백엔드 분기
컨트롤러 두 개를 손봤음.
| 영역 | 역할 |
|---|---|
| 파트너 포털 | QR payload 발급 + 친구추가 처리 |
| 주문/결제 | 친구추가 직후 연락처 송금 진입점 제공 |
QR payload 는 식별자 그대로가 아니라 짧은 토큰으로 발급함. 식별자가 노출되면 무차별 친구추가 시도가 들어올 수 있어서, 발급 시점부터 일정 시간만 유효한 토큰으로 변환해서 넣었음.
GET /partner/qr/payload → { token, expiresAt }
GET /partner/qr/{token} → 친구추가 화면 (토큰 검증)
POST /partner/friend/add → 친구 등록 + 송금 진입 컨텍스트 응답
삽질 포인트
- 처음엔 식별자를 그냥 base64 로 넣었음. 자체 리뷰에서 바로 깨짐. 토큰 테이블로 분리.
- 친구추가 후 송금 화면 진입 시 컨텍스트가 비어서 한 번 더 조회가 들어가던 이슈. 추가 응답에 송금에 필요한 최소 필드를 같이 내려서 한 번에 처리.
- QR 이미지 캐싱. 매번 새로 발급하던 걸 만료 시간 내에는 같은 토큰 재사용하도록 수정.
SQL 쪽
파트너 친구 관계 테이블에 unique 인덱스가 안 걸려 있던 거 발견. 같은 쌍으로 두 번 누르면 row 가 두 개 생기는 구조였음. (A,B) 를 정렬해서 저장하도록 정규화하고 unique 추가. 운영 데이터에 중복은 없었지만 시한폭탄이었음.
측정
- 친구추가 평균 소요시간 약 18초 → 약 5초
- 모바일 이탈률(친구추가 페이지 진입 후 미완료) 체감상 절반 이하
- 친구추가 직후 송금 전환율은 다음 정산 사이클에 다시 보기로 함
QR 같은 단순한 기능도 토큰 설계, 캐싱, 인덱스, 후속 동선까지 보면 의외로 만질 게 많았음. 다음
댓글 0
첫 댓글 달아줘.