Iap연동 및 배포테스트 문의

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

[현재 상황]
Unity6000.2.6f2

  1. 샌드박스 앱 최신버전 설치 (빌드번호 : 2026-01-26)
  2. 샌드박스 앱에서 소모형 아이템 구매 테스트 진행
    • 결제 성공 테스트 : 스크린샷처럼 에러 발생

    • 결제 성공(서버 실패) 테스트 :

      1. “결제가 완료되었지만, 서버 전송에 실패했습니다.” 에러 전달 받음
      2. 재접속 시 pendding list 조회
      3. pendding list에 실패한 결제정보 없음.(mock 데이터인 sku_106 만옴)

[질문 사항]

  1. 샌드박스 앱에서 결제 테스트 제한 사항이 많습니다.

    • 결제 성공이 에러 발생합니다.
    • pendding 정보는 mock데이터만 전달됩니다.
      → 위 사항에 대해 솔루션 부탁 드립니다.
  2. 타 플랫폼의 결제 테스트의 경우 콘솔에서 테스트 결제 내역이 조회 되는데, 앱인토스는 해당기능을 지원이 안 되는 걸까요?

  3. "게임로그인"을 사용하는 경우 “get-order-status” api 사용이 불가하여 서버에서 orderId 검증이 불가능 합니다.

    • 최소한의 안전장치로 서버에서 토스 이용자에 대한 영수증 검증을 무조건 통과시키고 결제 로그만 쌓도록 했습니다.
    • 만약 악의적인 토스 이용자가 패킷조작을 통해 임의의 orderId로 패킷을 보낼 경우 즉시 validation할 방법이 없습니다.
    • 그렇다고 "토스로그인"을 사용하기엔 UX적인 부분이 "게임로그인"이 압도적으로 유리하고 토스에서도 권장하고 있습니다.
    • 토스에서 "게임로그인"을 사용하는 App의 영수증(결제)검증은 사후대응만을 생각하시는걸까요?
  4. 로컬에 저장하는 data파일이 있는 경우 indexed DB와 네이티브저장소(Storage) 중 어떤걸 사용권장하나요?

  5. ait 배포한 뒤 QR을 이용하여 “토스앱”에서 테스트하면 네트워크 통신에서 "Unknown Error"가 발생합니다.

    • 동일한 QR을 샌드박스 환경에선 정상적으로 통신 가능했습니다.
    • 통신한 서버는 https로 구성돼 있습니다.
    • 관련하여 문제를 해결하기 위해선 어떤 문서를 보면 좋을까요?

appName (선택)

마법사 강화하기

안녕하세요 :slight_smile:
결제 테스트가 많이 불편하셨을 것 같아요. 전달주신 사항들 정리해서 내부적으로 빠르게 논의해보겠습니다

  1. 현재 샌드박스 결제 테스트 > pending list 조회에서는 mock 데이터만 내려가고 있어요 :cry:
  2. 현재 테스트 결제 내역을 조회할 수 있는 기능은 없습니다 :cry:
  3. SDK로도 주문 조회가 가능한데, API로 조회가 필요하신걸까요 ?
  4. 현재 Storage를 제공해드리고 있습니다.
  5. CORS 관련 에러는 아닐까요 ? 통신한 서버에 아예 요청 로그가 들어오지 않는 상황이실까요 ?
    토스앱 | 앱인토스 개발자센터

답변해주셔서 감사합니다.

  1. 보통 영수증 검증을 서버에서 하고 검증통과와 함께 아이템을 지급하는데, SDK로 할 경우 결국 클라이언트에서 조회한 데이터로 서버에 전달하니, 완전 무결하지 않을 것 같습니다.
    Server-to-Server로 검증하는 프로세스가 제일 안전할 것 같습니다.

나머지에 대해선 답변을 토대로 확인해보겠습니다.

감사합니다.

추가로, 현재 상태에서 결제 테스트를 하려면 결국 안드로이드에서 실결제 이후 환불프로세스 진행해야되는걸까요?

실제 결제 테스트가 필요하시다면, 안드로이드로 진행해주시는게 환불 처리에 있어 나으실 것 같습니다 :man_bowing:

보통 영수증 검증을 서버에서 하고 검증통과와 함께 아이템을 지급하는데, SDK로 할 경우 결국 클라이언트에서 조회한 데이터로 서버에 전달하니, 완전 무결하지 않을 것 같습니다.
=> 요거 조금 궁금한 부분이 있는데, 상품 지급을 createOneTimePurchaseOrder 호출과 함께 processProductGrant 로 지급하는데, 추가적으로 검증을 하는 프로세스가 있으신걸까요?!

processProductGrant안에 서버와 통신하는 로직을 구현해 뒀다 가정했을 때,

  1. 서버에 전달하는 정보는 orderId와 sku를 전달할 수 있습니다.
  2. 서버는 API를 사용할 수 없기에 orderId를 받아 해당 orderId가 정상적인 orderId인지 판단할 수 없습니다.

위와 같이 이해하고 있는데, 혹시 잘못 이해한 부분이있을까요?

이해하신 부분이 맞습니다 :cry:
토스 로그인의 허들(서버 연동, 이탈율) 때문에 게임 로그인 기능을 추가하면서,
서버 연동이 필요하지 않게 설계를 하면서 발생한 문제인 것 같습니다.

내부적으로 조금 더 고민해보겠습니다 :cry: