영수증검증 Bad Request 입니다 에러

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

현재 인앱 결제크랙을 방지하기위해 영수증 검증 코드를 넣었는데,
내부테스트를 통한 테스트카드로 승인요청을 테스트해보니, bad request, 잘못된 request 입니다. 에러가 발생합니다.

JWT와 보고서 버킷 URL은 정상적으로 완료했으며 구글 클라우드 플랫폼의 두가지 API가 전부 활성화 되어 있는 것을 확인하였습니다.
구글 개발자 콘솔 권한관련도 개발자 문서대로 전부 활성화가 되어있는 것도 확인하였습니다.
그리고 비슷한 문의가 있는 것 같아 인앱상품 설명을 강제로 캐싱하여 (설명 수정) 적용해보았는데도 똑같은 에러가 발생합니다. 코드에 문제가있나요?

구글플레이콘솔에는 정상결제내역이 뜹니다.

프로젝트 명은 DM으로 전송했습니다.

 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
 {
     string productId = args.purchasedProduct.definition.id;
 string receipt_Json = args.purchasedProduct.receipt;

 decimal price = args.purchasedProduct.metadata.localizedPrice;
 string currency = args.purchasedProduct.metadata.isoCurrencyCode;

 // 영수증 검증
 decimal iapPrice = args.purchasedProduct.metadata.localizedPrice;
 string iapCurrency = args.purchasedProduct.metadata.isoCurrencyCode;

 BackendReturnObject validation = Backend.Receipt.IsValidateGooglePurchase(receipt_Json, "receiptDescription", iapPrice, iapCurrency);


 if (validation.IsSuccess())
 {

     Debug.Log(string.Format("ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id));
     // The consumable item has been successfully purchased, add 100 coins to the player's in-game score.  
     Debug.Log($"[결제 검증 성공] - {productId}");
     Base_Canvas.instance.Get_MainGame_Error_UI().Initialize($"결제 검증 성공 : {productId}");

     if (Enum.TryParse(productId, out IAP_Holder holder))
     {
         Base_Canvas.instance.Get_UI("UI_Reward");
         Utils.UI_Holder.Peek().GetComponent<UI_Reward>().GetIAPReward(holder);

         _ = Base_Manager.BACKEND.WriteData();

         onPurchaseSuccessCallback?.Invoke();
         onPurchaseSuccessCallback = null;
     }
     else
     {
         Debug.LogError($"[ERROR] IAP_Holder Enum에 없는 productId: {productId}");
     }

 }

 else
 {
     Debug.LogError($"[결제 검증 실패] - {productId}, Error: {validation.GetMessage()}");
     Base_Manager.BACKEND.Log_Try_Crack_IAP(productId, validation.GetMessage());
     Base_Canvas.instance.Get_MainGame_Error_UI().Initialize($"결제 검증에 실패하였습니다 : {validation.GetMessage()}");
 }

 return PurchaseProcessingResult.Complete;
 }

안녕하세요 개발자님,
프로젝트 정보 공유해 주신 내용까지 확인하였습니다.
관련하여 확인 후 안내드리겠습니다.

확인 시 등록된 스토어 정보의 권한 문제로인해 에러가 발생한 것으로 확인됩니다.
등록 당시 정상 권한으로 확인되던 정보다 현재는 오류가 발생하고 있는 상황입니다. (JWT와 관련해 변경된 정보가 있는 것으로 예상됩니다.)
JWT 권한 정보 확인 및 재등록 이용 바랍니다.

좋아요 1

안녕하세요. 그럼 JWT를 신규로 발급받아 등록하면될까요?

제가 잘 몰라서 그러는데 JWT만 신규로 발급받으면되는지, 서비스계정을 아예 지웠다가 새로만들어야 하는건지를 잘 모르겠어서 안내해주시면 감사하겠습니다.

원인을 확인하지 못하시는 상황이라면 새로운 서비스계정을 생성하여 등록하시는 것이 빠를 수 있습니다.

감사합니다. 해보겠습니다.

좋아요 1

혹시 올려드린 코드에는 문제가 없나요?

코드상으로는 특이점은 화인되지 않고 있습니다.

감사합니다. 말씀 주신대로, 기존 서비스계정을 삭제하고, 신규로 새로만들어 JWT를 신규로 바로 발급 뒤 (24시간 대기도 필요없이 바로 등록되었음) 다시 결제를 시도해보니, 정상적으로 영수증 검증이 이루어졌습니다. 고생하셨습니다.

좋아요 1