レガシー決済アプリの刷新
カード決済と複数の決済手段をモバイルで処理する決済アプリの機能開発と保守を長く担当しました。同じ基盤の上で動いていた別の決済アプリと並行して運用しながら、このアプリの要件に合った画面と決済フローを反映しました。決済サービスでは、速く作ることより、既存の決済が正しく回り続けているかを繰り返し確かめることの方が大切です。作業は決済状態の処理、カメラでの書類提出、多言語の案内、アプリのエラー管理にわたります。
成功・失敗・待機がひと目で分かれる決済結果
モバイル決済アプリの中心となる流れは、決済リクエスト・認証・結果確認・エラー応答の処理です。この流れを安定して保ちながら、決済結果は成功・失敗・待機の三つの状態をはっきり分けて見せるようにしました。待機を失敗と、失敗を成功と読み違えると、ユーザーは同じ決済をやり直したり、決済が済んだと思って立ち去ったりします。

権限から再試行まで途切れないカメラでの書類提出
モバイル決済アプリでは、ユーザーが書類をカメラで撮ってアプリからそのまま提出できます。カメラ権限の要求、撮影結果の確認、アップロードの失敗、再試行まで、運用中に起こりうる例外も合わせて管理しながら、この流れを実装し保守しました。どの段階で止まっても、ユーザーが次にすべきことが分かるようにするのが基準でした。

決済・認証のエラー案内を言語ごとに読み直した文言
モバイル決済アプリは利用者層が広いため、画面と案内文を複数の言語で提供します。多言語の画面と文言を適用しながら、決済と認証の過程のエラーメッセージは別に選んで確認しました。基準は翻訳が正しいかどうかより、メッセージを読んだユーザーが次に何をすべきかすぐ分かるかどうかでした。

同じ基盤の二つの決済アプリで、共通のエラーと個別のエラーを分けた対応
運用中のモバイル決済アプリの異常終了はエラー収集ツールで見守り、障害に広がりうる箇所から優先順位をつけて直しました。この決済アプリは同じ基盤の上で動いていた別の決済アプリと並行して運用し、両方に共通する問題と片方だけの問題を分けて対応しました。不具合を許さない決済サービスのため、運用期間中は異常終了率をきわめて低く保ちました。

この仕事のポイント
成功・失敗・待機を取り違えないよう分けた決済状態の表示
権限・アップロード失敗・再試行まで押さえたカメラでの書類提出
同じ基盤の二つの決済アプリで共通のエラーと個別のエラーを分けた品質管理
インサイト
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…



