IsValidateGooglePurchase 개발자 문서 건의

안녕하세요. 개발자 문서에 건의 드리고 싶습니다~!

이번에 영수증 검토 기능을 사용하다가,
결제 성공의 메세지를 보기 전에 게임이 종료된 경우.
게임 재접속시

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)

이 함수가 실행되면서 409를 리턴 하더라구요.
논리상 맞긴 한데, Error 로 처리되는게 맞나 싶습니다.
(fake 결제를 어떤 방식으로 하는지 제가 잘 몰라서 그럴수도…)

현재는 아래와 같이 처리하였습니다.

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        string productId = args.purchasedProduct.definition.id;
        BackendReturnObject validation =
            Backend.Receipt.IsValidateGooglePurchase(args.purchasedProduct.receipt, "purchase");
        if (validation.IsSuccess())
        {
            GrantReward(productId);
            m_StoreController.ConfirmPendingPurchase(args.purchasedProduct);
            return PurchaseProcessingResult.Complete;
        }

        // 이미 검증한 영수증 처리(보통 결제 결과를 보기전에 게임을 종료한 경우)
        if (validation.GetStatusCode() == "409")
            return PurchaseProcessingResult.Complete;

        Binder.UIManager.NetworkErrorPopupPanel.Show(NetworkErrorType.Unknown, $"영수증 검증 실패: {productId}");
        return PurchaseProcessingResult.Pending;
    }

해당 부분의 처리가 제 경험상으로는 필수적으로 보여져서 개발자 문서에도 언급되어야 하지 않나하는
생각으로 건의 드려봅니다.

관련 링크

안녕하세요, 개발자님.
소중한 건의 말씀 감사드립니다.

말씀해주신 현상은 정상적으로 구매 처리가 완료되지 않은 상품이 있을 경우,
Unity IAP가 초기화 과정에서 자동으로 ProcessPurchase를 호출하기 때문에 발생하는 것으로 확인됩니다.

이는 영수증 검증 과정에서 최종적으로 완료처리가 이루어지기 전에 게임이 종료되는 경우뿐 아니라, 다양한 상황에서 발생할 수 있습니다.
또한 영수증 검증 에러는 동일하게 409 코드로 제공되더라도, 원인에 따라 에러 메시지가 다르게 나타날 수 있습니다.
예를 들어, 이미 사용된 영수증이거나 구매가 취소된 영수증일 수도 있습니다.
따라서 보다 정확한 원인 파악을 위해서는 에러 코드뿐 아니라 에러 메시지까지 함께 확인해 주셔야 합니다.

남겨주신 의견은 내부에 피드백하도록 하겠습니다.
감사합니다.

좋아요 1