QR 결제 앱 신규 구축
매장에서 QR 코드로 결제하는 간편결제 앱의 핵심 결제 흐름을 만들었습니다. 사용자는 이 앱에서 선불 충전식 결제 수단을 발급받아 가맹점의 QR 코드로 결제하고, 포인트와 쿠폰도 같은 앱에서 씁니다. 프로토타입 단계에서 한 번 멈췄던 프로젝트를 결제 기능 중심으로 간소화해 다시 내는 작업이었습니다. 결제 앱에서 같은 요청이 두 번 가거나 실패한 결제가 성공처럼 보이면 곧바로 돈 문제가 됩니다. 작업은 QR 스캔, 결제 요청, 서버 응답 해석, 완료 · 실패 표시까지 이어지는 결제 흐름과 그 예외 처리 전체에 걸쳐 있습니다.
QR 스캔에서 결제 완료까지 끊기지 않는 한 흐름
QR 결제 앱의 결제는 코드를 스캔하고, 결제를 요청하고, 서버 응답을 받아 완료나 실패를 보여 주는 순서로 진행됩니다. 이 순서를 하나의 흐름으로 묶어, 사용자가 지금 어느 단계에 있는지 화면에서 알 수 있게 했습니다. 결제가 진행 중인지 끝났는지 사용자가 헷갈리지 않는 것을 화면 구성의 기준으로 삼았습니다.

중복 요청 · 지연 · 취소를 먼저 따진 결제 요청
결제 요청에는 정상 응답만 돌아오지 않습니다. 같은 요청이 두 번 가는 경우, 실패 응답, 네트워크 지연, 결제 도중 사용자가 취소하는 경우를 결제 흐름과 함께 설계했습니다. 결제 요청과 결과 확인 과정에서 요청, 응답, 화면 상태가 서로 어긋나지 않게 맞춰, 사용자에게 잘못된 결제 상태가 보이지 않도록 했습니다.

형식이 다른 서버 응답을 앱 상태로 옮긴 해석 규칙
결제 서버는 흔히 쓰는 데이터 형식과 다른, 독특한 형식으로 응답을 보냈습니다. 이 응답을 읽어 들이는 처리를 만들고, 응답의 경우마다 앱이 어떤 상태로 가야 하는지를 연결했습니다. 정상 결제뿐 아니라 오류 코드, 빠진 항목, 형식이 깨진 응답에도 앱이 멈추지 않고 정해진 화면으로 가도록 했습니다.

두 플랫폼이 같은 결제 기준을 따르게 한 협업
같은 결제 서비스의 다른 플랫폼 앱은 다른 개발자가 맡았습니다. 결제 로직과 서버 응답을 처리하는 방향을 그 개발자에게 설명하고 구현을 도왔습니다. 플랫폼이 달라도 결제 정책과 예외 처리 기준이 같아야, 같은 결제가 앱마다 다른 결과로 보이지 않습니다.

이 작업의 포인트
QR 스캔부터 결제 완료 · 실패 표시까지 이어지는 결제 흐름
중복 요청 · 실패 응답 · 네트워크 지연 · 사용자 취소에 대비한 예외 처리
형식이 독특한 서버 응답의 해석과 오류 코드 · 누락 항목 처리
인사이트
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



