저는 RN에서 만들고 있어서 좀 다를 수가 있는데.
만드신 코드에서는 promise 안에서 결과를 resolve 로만 전달해주고 있는 걸로 보여요.
processProductGrant function 에서 return true도 해줘야 grant 된 것으로 처리됩니다. 반대로 false면 grant 안된걸로 될꺼구요.
resolve 이후 return true 해주면 아마 해결되지 않을까.. 시도해 보세요!
예전에는 명시적으로 await IAP.completeProductGrant({ params: { orderId } }); 를 불러줬는데.이건 개인적으로 구현을 잘못했던 것 같아요. 안드로이드 12월 초 버전 샌드박스에서는 processProductGrant 내부에서 completeProductGrant 을 부르면 오류 메세지 없이 샌드박스 앱 자체가 죽어버립니다. (예전 버전의 샌드박스나 실제 출시된 앱의 결제에는 문제가 없습니다.) 올바른 구현은 아닌 것 같지만 이건 샌드박스의 미니앱 버그로 해결되면 좋을 듯.
ps. 뒤늦게 3시간 전 올리신 글의 코드 보니 Promise의 형태로 boolean을 리턴도 해보신 것 같은데 안되는게 이상하네요;; 그래도 리턴되는 부분을 잘 보시면 좋을 것 같아요. 그냥 boolean 형태로 리턴하시거나
completeProductGrant 도 한번 고려해 보세요!