Skip to Content
Backend카카오페이 등록 후 WebView에서 앱으로 돌아오기
💻 Backend2023년 5월 18일

카카오페이 등록 후 WebView에서 앱으로 돌아오기

#e-commerce#payment-expansion#backend#troubleshooting
Payment Expansion · Series 2 · Integration Rollout4 / 14Backend
등록 결과 처리와 모바일 앱 복귀 경로의 호환성을 확인한 과정입니다.

카카오페이 결제수단 등록 기능을 테스트할 때 PC 브라우저에서는 지나가던 경로가 일부 모바일 WebView에서 실패했습니다. 인증을 마친 뒤 우리 서버로 돌아오는 요청이 POST일 것으로 예상했는데, 실제로는 GET으로 도착하는 경우가 있었습니다.

결제 연동 서버가 정상 응답하는 것과 사용자가 앱으로 돌아와 다음 작업을 할 수 있는 것은 따로 확인해야 했습니다.

등록 결과 처리와 앱 복귀

앱에서 등록을 시작하면 사용자는 카카오페이 인증 과정을 거칩니다. 인증 이후 우리 서버의 복귀 경로에서 필요한 결과를 받아 등록 상태를 반영하고, 앱 딥링크를 통해 원래 앱으로 돌아가도록 연결했습니다.

여기서 브라우저가 서버로 돌아오는 리다이렉트와 서버 간 결과 통신은 구분해야 합니다. 브라우저가 특정 URL에 도착했다는 사실만으로 등록 성공을 판단할 수는 없습니다. 등록 상태는 해당 요청과 실제 승인 결과를 확인한 뒤 반영해야 합니다.

POST 요청을 받도록 만든 복귀 URL

처음에는 복귀 URL에서 POST 요청을 받도록 만들었습니다. QA 중 일부 모바일 환경에서 요청이 GET으로 바뀌면 본문으로 받아야 할 값도 받을 수 없었습니다.

HTTP 리다이렉트는 상태 코드에 따라 메서드 처리 방식이 다릅니다. RFC 9110 은 302 응답을 따라갈 때 클라이언트가 POST를 GET으로 바꿀 수 있다고 설명합니다. 모든 리다이렉트가 원래 메서드와 본문을 보존한다고 가정해서는 안 됩니다.

GET으로 들어오는 요청 수용

해당 복귀 경로를 GET으로도 받을 수 있도록 수정했습니다. 리다이렉트에 필요한 값과 서버가 유지하는 등록 정보를 맞춰 결과 처리를 이어가도록 정리했습니다.

이는 모든 결제 처리를 GET으로 바꿨다는 뜻은 아닙니다. 결제 승인·등록 상태 반영과 사용자를 다음 화면으로 보내는 역할은 구분해야 합니다. URL에 결과값이 들어 있다는 이유만으로 상태를 완료로 바꾸는 예제로 설명하면 실제 검증 과정을 놓치기 쉽습니다.

iOS·Android에서 끝까지 확인

서버에 등록 결과가 저장돼도 앱 딥링크가 열리지 않으면 사용자는 인증 화면에 남을 수 있습니다. 그래서 서버 처리 뒤 앱으로 돌아가는 단계까지 확인해야 했습니다.

PC 브라우저뿐 아니라 실제 앱의 WebView에서 등록 시작, 인증 후 복귀, 결과 표시를 이어서 봤습니다. iOS와 Android에서도 같은 사용 과정이 끝까지 연결되는지 확인했습니다.

다음 글에서는 등록 연동 이후 SNKRS 앱에 카카오페이를 추가한 작업을 다룹니다.

Last updated on