개발 slecs

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

첫 댓글 달아줘.