결제 문의

  1. createOneTimePurchaseOrder 호출 시, SuccessEvent와 processProductGrant가 호출되는 시점이 어떻게 되는지 궁금합니다. 예상으로는 결제만 완료되어 SuccessEvent가 먼저 호출되고, 지급 확인까지 완료되는 시점에 processProductGrant가 호출될 것으로 보여지는데 맞나요?
  2. processProductGrant에서 뭘 해야하는지 이해가 잘 안됩니다. 3. 결제 상태 조회하기 를 통해 파트너사에서 유저에게 아이템 지급까지 완료한 이후 return true를 하라는걸까요?
  3. processProductGrant에서 return false 혹은 return true 시에 각각 내부적으로 어떻게 처리되는지 궁금합니다.
  4. 3. 결제 상태 조회하기 가이드를 보면 특정 orderID에 대해서만 조회가 가능한 것으로 보이는데요. 혹시 공지사항에 있는 복원 함수(10월 21일 제공)는 모든 미지급 결제 항목이 조회 가능한 스펙인걸까요?

@kimybzz 님 안녕하세요

  1. createOneTimePurchaseOrder 호출 후 사용자가 구글/애플 결제 창에서 인증 완료 후 결제가 완료되면 앱인토스에서 구글/애플과 영수증을 확인하여 검증 작업을 진행합니다. 결제가 성공하면 파트너사의 상품 지급 로직을 수행하고 성공이 되면 Success Event 를 전달드려요.
  2. processProductGrant에는 상품 지급 로직을 구현해주시면 됩니다.
  3. return true 에는 유저에게 상품을 지급해주시면 됩니다.
  4. 결제 상태 조회 API는 헤더값에 특정 유저 키를 입력하고 request 파라미터로 특정 orderId 를 입력해주셔야 합니다. 10월 21일에 제공될 복원 함수에는 모든 미지급 항목이 내려가는지는 추가 확인 후 말씀드릴게요.

개발 가이드 flow에 알아보기 쉽게 작성을 해두었는데 혹시 도움이 되실까요? 부족한 부분이 있다면 말씀해주세요.

가이드를 여러번 보았지만 processProductGrant와 SuccessEvent의 역할이 정확히 어떻게 구분되어 있는지 이해가 잘 되지 않아서 문의드렸습니다.

댓글주신 내용으로 보면

먼저 결제 성공 시 processProductGrant가 호출되고,

여기에서 파트너사에서 결제상태 조회 API 사용 및 유저에게 지급까지 완료한 이후 return true; 처리를 하면

토스 내부적으로 해당 아이템의 지급이 완료되었다고 기록함과 동시에 Success Event가 호출된다 라고 이해하면 되는걸까요?

결제 성공 시 processProductGrant 가 호출되고 아이템 지급 후 정상적으로 return true가 오면 success event 를 전달드립니다. return true가 올 때 앱인토스 내부적으로 해당 아이템의 지급이 완료되었다고 기록하고 success event를 전달드립니다.

해당 orderId를 상태조회 API 호출 시에 PAYMENT_COMPLETED 로 return해드려요.

SDK 1.1.3 이상에서 결제와 상품 지급이 모두 완료된 경우 return하고 있습니다.

혹시 예제 소스 보시면 이해하시기 편하실까요?

넵 이해가 되었습니다. 감사합니다.

추가로 궁금한 점이 있는데요.

processProductGrant 내부에서 아래의 케이스에서는 내부적으로 어떻게 처리되는지 궁금합니다.

  1. return false; 하는 경우
  2. return 하지 않고 무한대기 시

return false 의 경우, errorCode와 orderId 를 내려드립니다.

orderId 기반으로 상태 조회 API 호출 시에는 FAILED 로 return해드려요.

return 하지 않을 경우 내부 timeout으로 끊을 것으로 보이는데 추가 확인이 필요합니다.

늦어도 내일 중으로 답변드리겠습니다.

return 하지 않을 경우 내부 timeout으로 끊고 있는데요.

현재는 Android OS 는 10초 , iOS는 30초로 되어있어 30초로 통일하게 적용할 예정입니다.

자세한 답변 감사합니다.

아까 “10월 21일에 제공될 복원 함수에는 모든 미지급 항목이 내려가는지는 추가 확인 후 말씀드릴게요.”

이 부분에 대해서만 확인 부탁 드립니다.