Next.js
Flutter 앱에서 WebView로 UI를 재사용할 수 있게 하고, OAuth 인증 흐름을 웹에서 구현하기 위해 사용했습니다.
한국디지털미디어고등학교 매점 결제 QR 코드 공유 앱.
Overview
한국디지털미디어고등학교에서 정해진 금액만큼을 선물 받으면 앱에서 결제 QR 코드를 공유받아 매점에서 그 금액만큼 사용할 수 있게 하는 앱입니다.
Motivation
고등학교 3학년 때 작은 이벤트를 진행해서 친구들이나 후배들에게 매점을 사줘야 할 때가 있었습니다. 다만 고등학교 3학년이 되면서 학업으로 인해 따로 만나서 매점을 사줄 시간이 없어, 저희 학교에서 매점 결제를 위해 사용하던 앱인 '디미페이'를 활용해야겠다는 생각을 했습니다.
Screenshots



Stack
Flutter 앱에서 WebView로 UI를 재사용할 수 있게 하고, OAuth 인증 흐름을 웹에서 구현하기 위해 사용했습니다.
Android/iOS 두 가지 플랫폼에서 앱을 출시하기 위해 사용했습니다.
외부 API 연동과 유저 데이터 관리, 결제 QR 관리 등을 서버에서 안정적으로 처리하기 위해 사용했습니다.
사용자들의 남은 잔액을 관리하기 위해 사용했습니다.
Key Features
Architecture
Result
외부 결제 API와 SSE를 활용해 QR 토큰 갱신, 결제 상태 실시간 동기화, 중복 결제 방지까지 포함한 결제 흐름을 구현했습니다.
Troubleshooting
SSE를 사용하여 서버로부터 실시간으로 결제 진행 상태를 전달받아 화면에 표시했습니다.
한 번에 한 명의 사용자만 QR 코드를 이용할 수 있도록, 현재 사용 중인 사용자 아이디를 저장했습니다.
QR코드가 일정 시간이 지나면 만료되기 때문에, 서버에서 만료되기 2초 전 새로운 QR코드를 발급해 보냈습니다.