getPendingOrders 인앱결제 테스트

안녕하세요? 샌드박스에서의 인앱결제가.. 많이 바뀌였네요.

저만 문제를 겪고 있는지 질문도 검색이 안되고 이해가 어려워서 도움을 부탁드립니다.

샌드박스에서 결제성공 (서버실패) 테스트시
getPendingOrders 을 통해서 값을 얻으면,

LOG ### buyCoupon onError [Error: 결제가 완료되었지만, 서 버 전송에 실패했습니다.]
LOG pendingorder {“orders”: [{“orderId”: “550e8400-e29b-41d4-a716-446655440000”, “sku”: “sku_106”}]}

  1. 생성된(?) orderId와 sku가 값으로 나오는데. sku가 sku_106으로 나옵니다. 이 값은 바뀌지 않는데, 시도 후 실패 했던 sku가 아니라 고정된 sku_106가 나오는 것이 정상인가요? 고정된 임의의 sku가 나오면 어떤 상품을 지급해야 될지 알 수 없게 됩니다.

서버에서의 해당 order status 조회 결과.

{“resultType”:“SUCCESS”,“success”:{“orderId”:“550e8400-e29b-41d4-a716-446655440000”,“sku”:null,“status”:“NOT_FOUND”,“statusDeterminedAt”:null,“reason”:“주문을 찾지 못했어요.”}

  1. orderId 가 나오지만 ‘api-partner/v1/apps-in-toss/order/get-order-status’ 에서 확인시 주문을 확인 할 수 없다고 나옵니다. 이것도 정상인가요? 결제는 성공했지만 개발사 서버에서 상품을 지급하지 못한 경우라 주문을 찾아주고 그 결과에 따라 상품을 지급해야 할 것 같아서요.

  2. 샌드박스의 getPendingOrders 는 계속 같은 값이 나오는게 정상인지 (1개만 쌓이고 추가 실패시에도 변동이 없어 보입니다)

  3. 만약 이런 것들이 의도했던 바라면 api response나 sku를 샌드박스 테스트시에도 정확한 값으로 리턴 할 계획이 있는지 궁금합니다.

  4. 마지막으로 심사시 이와 같은 샌드박스를 사용해 결제 결과를 확인하는지, 실제 스토어의 결제 루틴을 타는지도 알고 싶습니다. 심사에 샌드박스를 이용하지 않는다면 하드코딩으로 자체 테스트가 가능하고 넘길 수 있는데, 심사에서도 더미 값이 전달되는 샌드박스를 사용한다면.. 테스트를 위한 처리가 복잡해질 것 같습니다.

감사합니다.

"@apps-in-toss/framework": "^1.5.2",
"@granite-js/native": "^0.1.31",
"@granite-js/react-native": "^0.1.31",
"@toss/tds-react-native": "^1.3.8",
"react": "18.2.0",
"react-native": "0.72.6"

안드로이드 미니앱 버전 확인하는 곳이 없어졌네요. versionName 도 1.0.0 으로만 나오고.
미니앱은 최신버전입니다.

1개의 좋아요

@Line1 님 안녕하세요

혹시 샌드박스 최신 버전으로 업데이트하셨을까요?

공지사항에서 말씀드린 것과 같이 최신 샌드박스앱에서는 콘솔에 등록된 실제 상품 정보가 내려갑니다.

심사 시에는 샌드박스가 아닌 앱스킴으로 확인하고 있습니다.

콘솔에 업로드해주신 앱번들의 앱스킴(QR코드)으로 확인하고 있어요.

1개의 좋아요

여기서 2025-12-04 버전을 어제 받아 설치해 사용 중 입니다.
rn-miniapp-real-release.DpSIOol1.zip
rn-miniapp-real-release (2).apk

공지는 1일전인데 apk는 ios용 보다(2025-12-07) 오래된 2025-12-04 버전인 것 같아서 혹시 샌드박스 이슈라면 이 문제가 아닐까 싶네요.

샌드박스에서의 결제 테스트가 필수가 아니라니 다행입니다.
심사는 기존 구현된 것으로 우선 올려봐야겠네요.
버전이 잘못된 것인지, 제가 뭘 잘못했는지 확인 부탁드려요.
감사합니다.

IAP.getProductItemList();
여기에서는 실제 등록/공개된 상품 목록이 나옵니다. (1. 상품 목록 가져오기 개선)

“상품 지급 실패 및 구매 복원 테스트” 에서 실제 등록된/요청된 값이 전달되지 않습니다.

안녕하세요 :slight_smile:

  1. 샌드박스 환경에서 sku_106는 고정값으로, 실 환경에서는 실제 sku 가 반환됩니다.
  2. 샌드박스 환경에서는 테스트 orderId가 반환된 것으로, 실제 주문이 생성되는 것이 아니라서 실 환경 주문 조회 api로 조회가 불가능합니다.
  3. 샌드박스의 getPendingOrders 는 어떤식으로 반환되는지 mock 데이터로 추가해둔 것이라 참고만 해주시면 감사하겠습니다.
  4. 내부적으로 논의해보도록 하겠습니다.
  5. 심사는 실제 스토어의 결제 루틴으로 이루어집니다.

인앱결제 플로우가 복잡하다보니 조금 더 이해가 쉽도록 샌드박스 iap 테스트 환경을 개선한건데, 아직 부족함이 많네요 :cry:

조금 더 고민해서 개선해볼 수 있도록 하겠습니다 :man_bowing:

2개의 좋아요

명확한 답변 감사드립니다.

개발이 계속 진행되어 쉽지 않겠지만 업데이트 된 내용을 문서(공지와 함께 문서에도)에 바로 반영을 해주시면 좋겠습니다.
특히 이번 업데이트에서는 실제 라이브 데이터(상품 목록)와 목 데이터 (팬딩 오더)가 섞여서 나오고 있는데, 라이브/샌드박스에서 어떤 값을 기대해야 하는지, 어디까지 테스트가 가능하게 업데이트 되었는지 알지 못하면, 여러 문서와 글들을 전전하며 많은 시간을 보내고 결국 이곳에 오게 됩니다.

늘 답변 잘 주셔서 덕분에 진행하고 있습니다. :smiling_face_with_tear:

엇 샌드박스 결제 개선 공지를 보면 실제처럼 동작한다고 되어있는데,

3번 내용은 아직 샌드박스에서 확인이 불가능한걸까요?

샌드박스에서 테스트 가능합니다.

최신 샌드박스앱에서 테스트 부탁드릴게요.

가이드 참고 부탁드립니다.

1개의 좋아요

자세한 설명 감사합니다.
getPendingOrders → completeProductGrant 까지 새로운 방식으로 처리해 두었습니다!
원래 로컬에 저장해 뒀다가 다시 확인하게 했는데, (기존 네이티브 저장소 기능 활용 시나리오)
getPendingOrders가 강력해서, 서버에서 검증하는 사람은 이걸 꼭 써야 할 것 같아요.

지금 시간 최신 샌드박스 사용중인데, pending order는 실데이터는 아니고 시뮬레이션만 가능해 보여요. 실제 서버 응답까지 제대로 받으려면 토스 쪽 서버 처리가 필요할 듯.