bobong1
bobong1
프론트에서 결제 요청을 할 때 토스url로 직접 요청을 하게 하는 것과 백엔드 서버를 거쳐 요청을 하는 것 중 어떤 방식이 낫나요?
현재 개발자 센터에 나와있는 로직 그대로 구현을 해둔 상태인데요, 처음에 결제 인증을 할 때 프론트 코드에서 바로 토스 서버에 요청을 하게 되는데 인터넷에 어떤 분은 자신의 백엔드 서버를 거쳐서 전송을 하게 하더라구요. 제 개인적인 생각으론 요청 데이터를 검증해야하거나 별도의 비즈니스 로직이 있다면 백엔드를 거쳐 요청하게 하는 것이 맞겠지만, 요청에 대한 검증 처리를 토스에서 해주고 있고 별도의 비즈니스 로직은 필요하지 않다고 생각해서 프론트에서 직접 호출해도 괜찮다고 생각했습니다. 혹시 보통 프론트에서 외부 api요청은 어떤 형태로 구현을 많이 하나요??
12 replies
결제 데이터는 제가 운영하는DB에도 저장하고 있어야 할까요?
토스 페이먼츠 결제 기능을 단 어플리케이션을 실제 운영한다고 하면 현재 저는 토스 페이먼츠 api에 필요한 orderId나 paymentId만 제 db에 저장해 놓고 결제 정보가 필요하면 토스api를 호출하는 식으로 구현하려고 했습니다. 근데 이러한 데이터를 제 db에도 복사본처럼 갖고 있도록 구현을 해야하나요?? 보통 실제 운영할 때는 외부 api와 연동할 때 관련 정보를 어떤식으로 갖고 있는지 궁금해요
6 replies
결제와 주문 데이터 생성 시점에 관해 여쭙고 싶습니다.
현재 제가 구현한 어플리케이션은 화면상으로는 여러 예약 가능한 장소들 목록을 선택해서 다음 화면으로 넘어가면 추가적인 정보(연락처, 인적사항)를 입력하고 결제하기 버튼을 누르면 토스페이먼츠 결제 인증 요청이 뜨도록 구현되어 있습니다. 처음에는 인증과 승인 과정이 모두 끝나고, 즉 결제 프로세스가 완전히 종료될 때 장소에 대한 예약 객체를 만들어서 db에 저장하고 싶었습니다. 그런데 결제 인증 요청부터 결제가 완전히 종료될 때 까지 예약 객체를 만들기 위해 필요한 데이터를 백엔드나 프론트가 계속 갖고 있어야하는데 이걸 구현하는 것이 무척 어려웠습니다. 그래서 결제하기 버튼을 누르면 예약에 필요한 정보가 백엔드로 넘어가면 예약 엔티티를 만들어서 이 내용을 담고 db에 저장하고 paymentstatus를 예약 엔티티의 필드로 두어 결제 인증과 승인 과정을 거치면서 필드를 관리하는 방법이 떠올랐습니다. 그런데 실제로 이런 방법이 일반적인지, 또 이렇게 했을 때 어떤 문제가 발생할지 잘 모르겠어서 토스 개발자분들께 여쭙고 싶습니다. 1. 주문에 필요한 여러 정보를 입력하고 결제를 할 때 가장 마지막 단계에서 주문 내용을 담은 예약 객체를 만든다면 여러 프로세스를 거치는 동안 주문에 필요한 정보들은 어떤식으로 갖고 있어야 하는지? 2. 위와 같은 방법이 아니라 결제하기 버튼을 누를 때 예약 엔티티를 만들어 db에 저장하고 필드로 결제 상태를 관리하는 방법은 괜찮은 방법인지? 3. 일반적으로 커머스에서는 어떤식으로 결제와 주문 생성 시점을 결정하는지 알고싶어요 항상 감사합니다 저번 질문도 자세히 알려주셔서 큰 도움이 됐어요
10 replies
결제 검증을 어느 시점에 어떤 방식으로 하는지 잘 모르겠어요
안녕하세요 간편하게 결제 시스템 적용할 수 있게 만들어주셔서 감사드립니다. 현재 제가 이해한 바로는 토스 결제가 크게 요청과 승인 과정으로 이루어지고 요청에서 승인으로 넘어가기 전에 백엔드 단에서 검증이 필요하다고 이해했습니다. 요청에 성공했을 때 백엔드에서 success url로 결제 정보를 받아서 이 데이터와 백엔드에 저장된 값과 비교하면서 검증을 하면 된다고 생각했습니다. 근데 가이드를 보면 요청에 넘어가기 전 서버에 데이터를 저장하고 요청성공 시 들어온 데이터와 요청 전 백엔드에 저장된 데이터를 비교한다고 적혀있는데 이 부분이 잘 이해가 되지 않습니다. 1. 요청에 넘어가기 전 서버에 저장하게 되는 데이터 자체도 쉽게 변조될 수 있지 않나요? 그럼 굳이 success에 넘어오는 데이터와 요청 전 서버에 저장하는 데이터를 비교할 필요가 없지 않나요? 2. 요청에 넘어가기 전 서버에 저장을 해야한다면 결제 요청은 프론트가 아니라 백엔드에서 요청 정보를 저장하고, 결제요청을 백엔드에서 호출해야하지 않나요? (샘플 코드를 보면 프론트에서 바로 결제 요청을 해서요..) 3. 현재 제가 생각하는 구현 방식은 프론트에서 결제 요청을하고 인증 성공 시 백엔드에서 /sucees 로 들어온 데이터를 받고, 이 데이터와 백엔드에서 갖고 있는 데이터와 검증 후 문제가 없으면 승인을 요청하는 식으로 구현했는데 제가 프로세스를 제대로 이해했는지 궁금합니다. 개발자 센터에 자세히 설명해주셨는데 죄송합니다 항상 감사합니다 토스 파팅 ============================ 요청에 성공했을 때 들어오는 데이터가 일정한 형식으로 정해져 있네요 죄송합니다. 그럼 요청 전에 서버에 데이터를 저장하게 하고 요청을하게 하는 로직은 구체적으로 어떻게 이루어지나요? 프론트에서 백엔드에게 데이터를 저장하게하는 요청을하고 이 요청이 처리되면 결제요청이 이루어지도록 프론트 코드를 구현하면 될까요?
10 replies