Android 앱에 문제가 있습니다. 월간 구독을 구현하려고합니다. IAP를 만들었습니다. 앱은 베타 버전이며 테스터로 등록합니다.Android App App Subscription은 항상 초기 영수증을 반환하며 갱신되지 않습니다.
구독을 구입할 때 예상대로 작동합니다. 테스터로 구입할 수 있는데 구독이 실제로 청구되지 않으며 매일 갱신됩니다.
하지만 여기 내 문제가 시작됩니다. 원래 영수증을 받으실 분은 원래 purchaseTime
과 purchaseToken
입니다. 앱이 시작될 때마다 queryInventoryAsync
으로 전화를 걸어 최신 갱신 영수증을 받으려고합니다. 그러나 나는 항상 영수증을받습니다.
내 생각이 잘못 되었나요? 새로운 orderID
으로 갱신 영수증을 받아야하지 않습니까? (구글 문서가 말하길, orderID
을 GPA.blabla..0|1|2
과 같이 받아야합니다. 캐싱 메커니즘이 있지만, 3 일을 기다렸다가 최신 주문을 받아야하지만, 원래 주문을 계속받습니다.
항상 횡단 보도와 함께 cordova를 사용하고 구입을 위해 다음 플러그인을 사용합니다 : https://github.com/j3k0/cordova-plugin-purchase. 중요한지는 모르겠지만 다른 모든 플러그인에서 사용하는 것과 동일한 IABHelper 클래스를 사용해서는 안됩니다. 자신의 코드에 뭔가 문제?
나는 mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken);
로 호출하여받은 정확한 응답을 기록하며 왜 잘못된 데이터 (원본 영수증). 포함 :(
다른 사람이 비슷한 문제가 있습니까? 구독 테스트 중입니까? 실제로 구매할 때 작동합니까? 이미 실제 돈으로 테스트를 시작했지만 구독이 갱신 될 때까지 일주일이 걸릴 것입니다.
정말 고마워요.
편집 : Google Play 스토어 앱에서 캐시를 지우는 것은 옵션이 아닙니다. 내 사용자에게 그렇게하도록 요청할 수는 없습니다. 또한, 나는 이것을 테스트했지만 작동하지 않습니다!
편집 2 생산 구독 (리얼 머니, 테스트 없음) 중 하나가 작동하지 않습니다!. 원래 영수증을 받고 있습니다!
편집 3 아직이 문제를 해결하지 못했습니다. 갱신을 감지하는 올바른 방법은 무엇입니까? 방금 백엔드에서 cronjob을 실행하고 Google의 구매 상태 API에 대해 각 구독을 쿼리해야합니까?
편집 4 답변 해 주셔서 감사합니다. 구독을 갱신했는지 여부를 결정하기 위해 이미 백엔드에서 구매 상태 API를 사용하고 있습니다. 하지만 좀 싫어, 내가 100.000 구독하면 어떻게 될까? 그들 모두를 통과하고 Google의 API를 쿼리하는 스크립트는 매우 오래 걸릴 것입니다. 스크립트는 매일 실행해야합니다!
하지만 분명히 알 수 있습니다.
공식 문서가 구형임을 의미합니까?.
스타일 갱신을 무효로합니다?
편집 2016년 12월 5일 업데이트 : 지금 몇 달 생산에 구독을 실행하고 있었고, 난 여전히 ..1, ..0와 갱신을하지 않습니다. 내가 한 것은 매일 실행되는 cronjob을 설정하는 것입니다. 내 활성 구독을 거치고 Google의 구매 API에 대해 쿼리합니다. API가 내 데이터베이스에 저장된 것과 다른 만료일을 반환하면 가입이 갱신되었음을 의미합니다.
편집 2017년 7월 6일 업데이트 나는 아직도 모든 구독을 분석하고, 구매의 API https://developers.google.com/android-publisher/api-ref/purchases/subscriptions를 사용하여 Google을 조회하여 자신의 상태를 업데이트 내 일상 스크립트에 의존 . 지금까지 큰 성과를 올리고 있습니다.
빠른 팁 : 구독을 일괄 적으로 쿼리하십시오! 몇 가지 테스트를했는데 동일한 요청으로 최대 1,000 개의 구독을 번들로 제공 할 수있었습니다. 한계는 API의 최대 응답 크기에 의해 결정됩니다.
기기 설정> 애플리케이션에서 Google Play 앱 캐시를 비우고 테스트해볼 수 있습니까? – random
답장을 보내 주셔서 감사합니다. 그러나 사용자들에게 그렇게하도록 요청할 수는 없습니다. 나는 아무 결과없이 나 자신을 위해 그것을 테스트했다. – tehmaestro
'getPurchases'의 결과로'getStringArrayList ("INAPP_PURCHASE_DATA_LIST")'를 호출하고 있습니까? 배열에 단 하나의 항목이 있습니까? –