결제 관련 질문 드립니다.

  • 뒤끝 SDK 버전 : 5.5.1
  • 프로젝트명 : 미사일 RPG2

코드인지 오류인지 정확히 확인되지 않아서, 문의 질문 드립니다.

c# 뒤끝 코드는 이렇게 사용하고 있습니다.

public static bool ValidateReceipt(string receipt)
        {
            var validation = Backend.Receipt.IsValidateGooglePurchase(receipt, "receiptDescription");

            // 영수증 검증에 성공한 경우
            if (validation.IsSuccess())
            {
                return true;
            }
            // 영수증 검증에 실패한 경우 
            else
            {
                // Or ... an unknown product has been purchased by this user. Fill in additional products here....
                ULogger.Log($"{validation.GetStatusCode()} : {validation.GetMessage()}");
                
                return false;
            }
        }

결제부분에서는 아래와 같이 사용하는데요.

 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
        {
 (중략)
// 영수증 검증 처리 위임 
            var validateReceipt = ValidateReceipt(e.purchasedProduct.receipt);
            if (validateReceipt.success)
            {
                WebLog.Instance.Log("iap_purchase_validate_success", JsonConvert.SerializeObject(e.purchasedProduct));
                Tapjoy.TrackPurchase(e.purchasedProduct.definition.id, e.purchasedProduct.metadata.isoCurrencyCode, decimal.ToDouble(e.purchasedProduct.metadata.localizedPrice));
                callbackPurchase?.Invoke(true, e.purchasedProduct.definition.id);   // 결제 성공 콜백
            }
            else
            {
                WebLog.Instance.Log("iap_purchase_validate_fail", JsonConvert.SerializeObject(e.purchasedProduct));
                callbackPurchase?.Invoke(false, e.purchasedProduct.definition.id);  // 결제 실패 콜백   
            }

회원번호

트랜잭션 ID

위 계정에서 문제가 발생했습니다.

콘솔에서는 <성공> 처리는 되어있는데요.

웹로그에서는 실패로 떨어진 상황입니다.

이거… 위 말대로라면 시나리오가 아래처럼 되는데요.
결제 시도 -> 콜백에서 false 떨어짐 -> 클라에서 결제실패 오류 띄워짐 + 웹로그 남김 -> 근데 콘솔에서 다시 '성공'으로 바뀜.

이 상황이 생길 수가 있나요? 로그는 뒤끝의 콜백에서 false 로 떨어졌을때 남기는 거라서요.

안녕하세요 개발자님,
문의하신 내용은 개발부서로 전달하여 확인중에 있습니다.
확인 완료 후 안내드리겠습니다.

게시글중 일부내용은 정보 보호를 위해 삭제조치하였습니다.

17일 12시 20분부터 23분까지 구글 서버에서 영수증 검증을 위해 주고받는 요청의 응답속도가 길어져 sdk에서 요청에 대한 응답을 받지 못한 것으로 확인되었습니다.

영수증 검증은 정상적으로 이루어져 콘솔과 sdk 모두 성공 결과값을 전송했지만
sdk의 경우, 응답 초과 시간을 넘겨 500 timeout 에러로 리턴되었기에
로그상으로는 FAIL, 콘솔상으로는 성공이 발생하였습니다.

해당 내역은 영수증 검증이 성공한 내역이기에, 이에 맞게 처리해 주시면 될 것 같습니다.

넵, 확인했습니다. 감사합니다.

위와 같은 상황이 다시 발생하지는 않겠지만,

위 케이스에 한하여 사용됬던 영수증으로 뒤끝에 재 검증을 요청하는 경우에, 영수증 검증 성공으로 취급이 될까요?

클라에서 영수증 검증에 실패했으니 펜딩처리가 되었는데, 재접속하여 동일한 영수증으로 복원을 시도하는 경우 재지급이 되는지, 아니면 이미 검증에 사용이 되었기 때문에 소모처리가 되는지 알고 싶습니다.

위와 같은 케이스의 경우
이미 한차례 검증에 사용되었기 때문에, 재시도할 경우 이미 사용한 내역으로 확인됩니다.

좋아요 1

안녕하세요.
이 이슈 안생기는 것 아니였나요? 또 발생을 했네요.

유저 ID : 1ea67410-4d8f-11ec-a835-57fac0ae1edd

콘솔 : 상태 : 성공

웹로그 :

웹로그 Status : 500.
웹로그 StatuS_message : timeout of 6000ms exceeded.

리뷰에 이미 부정적인 댓글이 달렸는데, 한번이 아닌가요? 앞으로도 자주 발생 할까요?

내용추가)

이렇게 말씀을 해주셨는데… 그러면 클라에서 이렇게 타임 아웃이 났을때.
뒤끝 영수증 validation → return PurchaseProcessingResult.Pending 시킨다 하더라도
UnityIAP 인앱 복구과정 호출 → 뒤끝 영수증검증-> (이미 검증에 사용되었기 때문에) 다시 false로 떨어지는 것 아닌가요?

저희같이 로그를 별도로 심지 않으면 이 이슈를 일반 개발사가 알 수 있을까 싶어서요.

안녕하세요 개발자님,
문의하신 내용에 대해 보다 상세한 확인을 진행하였습니다.

  1. 영수증 데이터가 지속적으로 누적되면서, 검증 조회 시 1초 이상의 지연이 발생하는 것을 확인하였습니다.
  2. 임시적으로 타임아웃 시간을 조정하여 동일 상황이 발생하지 않도록 조치하였습니다.
  3. 보다 근본적인 해결이 될 수 있도록 검증 조회 속도를 단축하는 작업을 진행중입니다.
  4. 뒤끝 서버 엔지니어가 해당 작업을 테스트 중이며, 테스트 완료 후 수정 스케쥴을 함께 공유드리겠습니다.

이용에 불편 드려 죄송합니다.

안녕하세요, 개발자님
앞서 안내드린 영수증 검증 조회 속도 단축 작업이 완료되었습니다.
현재 개선되어 빠르게 조회가 이루어지도록 처리되었습니다.
감사합니다.

좋아요 1