인앱 결제 프로세스 질문 드립니다

서버가 따로 존재하지 않는 게임에서 결제 아이템을 만드려고 하는데

가이드에서의 순서를 봤을 때
getProductItemList로 상품 목록을 가져온 뒤
createOneTimePurchaseOrder로 결제창을 열어 결제를 시킨 뒤
성공 콜백이 올 경우 클라이언트에서 상품을 지급하는 방식까지는 이해했습니다.

그런데 이후 주문 복원 과정은
사용자가 앱을 시작했을때 or 특정 에러코드가 발생했을때만 진행하는 건가요?

그리고 서버 저장 데이터가 따로 없기때문에
다른 디바이스에서 접속해도 결제 아이템은 유지 해야됨으로
getCompletedOrRefundedOrders으로 결제 정보를 가져와서
클라에서 상품 정보를 업데이트하고
Storage API에 지급된 상품정보를 저장해서 디바이스간 결제 아이템 정보를 유지하는 방식이 맞을까요?