애플 영수증 검토

안녕하세요.

애플에서 인앱을 추가중에 인앱 구매까지는 성공이라고 뜨는데
영수증검토에서

400 / BadRequestException 이라고 뜨면서 되지 않는데 확인 부탁드립니다.

안녕하세요 개발자님,
문의사항 확인을 위해 프로젝트 정보 공유 요청드립니다.

좋아요 1

케이팝히어로즈

SendQueue.Enqueue(
Backend.Receipt.IsValidateApplePurchase,
receiptJson,
“IAP Verify”,
iapPrice,
iapCurrency,
callback => OnReceiptValidated(callback, _product)
);

이걸로 사용하고있습니다.

프로젝트의 서버 로그 확인 시 애플 영수증 검증 호출 이력이 확인되지 않고 있습니다.
Unity IAP 버전과 함께 에러 전문을 공유해주실 수 있으실까요?

위에거는 인앱버전으로 인해서 잘못된걸로 나와서 수정했는데 수정한후에

OnReceiptValidated Failed : 400 / BadParameterException
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
BackEnd.<>c__DisplayClass39_05:IDlQyWHf1K(BackendReturnObject) PhMrHFddBJh39rQkssL.<InvokeFunction>d__51:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

이런 오류가 마찬가지로 발생합니다.

    public void ValidateReceiptAndGrant(Product _product, Order _order)
    {
        //string productId = _product.definition.id;
        //string receiptJson = _product.receipt; 
        //decimal iapPrice = _product.metadata.localizedPrice;
        //string iapCurrency = _product.metadata.isoCurrencyCode;

        string productId = _product.definition.id;

        decimal iapPrice = _product.metadata.localizedPrice;
        string iapCurrency = _product.metadata.isoCurrencyCode;


#if UNITY_ANDROID
        string receiptJson = _order.Info.Receipt;
        //if (!MyObject.myChar.settings.oneStore) 
        if (!MyObject.myChar.oneStore)
        {
            SendQueue.Enqueue(
                Backend.Receipt.IsValidateGooglePurchase,
                receiptJson,
                "IAP Verift",
                false,
                iapPrice,
                iapCurrency,
                callback => OnReceiptValidated(callback, _product)
                );
        }
#elif UNITY_IOS
        string receiptJson = _order.Info.Apple.jwsRepresentation;

        SendQueue.Enqueue(
                  Backend.Receipt.IsValidateApplePurchase,
                  receiptJson,
                  "IAP Verify",
                  iapPrice,
                  iapCurrency,
                  callback => OnReceiptValidated(callback, _product)
                  );
#endif

이렇게 사용하고있습니다

사용하고 계신 Unity IAP 버전도 확인 부탁드립니다.

5.0.4 버전입니다.

구버전 영수증 검증 함수를 통해서는 Unity IAP 5가 지원되지 않습니다.
신규 영수증 검증 함수를 이용해 주셔야 하기에 아래 개발자문서를 확인하여 이용해 주시기 바랍니다.
구버전 함수를 사용하시고자 할 경우 Unity IAP 버전을 낮춰서 이용해 주셔야 합니다.

   receiptJson = _order.Info.Receipt;

   
   {
       // ReceiptParam 구성
       // AddDetailItemId/AddDetailItemName은 게임 내 아이템 구분 용도
       var param = new ReceiptParam(receiptJson);

       // 영수증 검증
       BackendReturnObject bro = Backend.Receipt.ValidateReceipt(param);

       if (bro.IsSuccess())
       {
           Debug.Log("영수증 검증 성공");
           //OnReceiptValidated(callback, _product);
           IAPManager.Instance.GetReward(_product.definition.id);
       }
       else
       {
           Debug.LogError("영수증 검증 실패: " + bro.GetMessage());
       }      
   }

이렇게했는데 잘못된 토큰이라고 나오네요

영수증 검증 실패 시 errorData 정보를 통해 상세 원인을 확인할 수 있도록 제공중입니다.
해당 정보를 확인해주시거나 정확한 에러 정보 전문을 포함하여 문의해주시기 바랍니다.

다른 부분들은 해결했습니다. 그런데

안드로이드에서 구매시 가격이 0원으로 나오는데 이번에 신규 영수증 검증 함수에는 가격을 따로 적는부분이 없는거 같은데 어떻게 해야하나요 ?

테스트 결제라서 0원으로 나오는건가요 ?

구글 클라이언트중 금액 관련 API의 depreacted 로 인해 금액 표시가 이루어지지 않는 현상을 확인하였습니다.
해당 구글 클라이언트의 업그레이드를 즉시 진행하여 금액 표시가 정상적으로 이루어질 수 있도록 개선하였습니다.
참고하여 이용해 주시면 감사하겠습니다.