2017-04-25 13 views
1

我已將所有產品添加爲被管理產品。當我查詢getPurchases時,它只返回1項,但當我查詢getHistory時比返回3項我感到困惑爲什麼它發生?Android:應用帳單僅返回1次購買

GET採購編號:

Bundle ownedItems = mService.getPurchases(6, getPackageName(), "inapp", null); 

獲得的交易記錄代碼:

Bundle purchaseHistoryBundle = mService.getPurchaseHistory(6, getPackageName(), "inapp", null, new Bundle()); 

我已經購買了很多產品我怎麼能解決這個問題?

回答

1

getPurchases需要一個表示InApp Billing API的整數。所以你的電話

Bundle ownedItems = mService.getPurchases(6, getPackageName(), "inapp", null); 

必須處理的api版本。如果您在開發應用程式內結算第3版,它必須是:

Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null); 

像API描述:

通過了應用內結算API版本(「3」),您的調用應用的應用包名稱,以及該方法中的購買類型(「inapp」或「subs」)。這裏是一個例子:

Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);

我想知道它爲什麼會起作用,無論如何,我不認爲這是造成問題。

接下來就是,getPurchases()只返回沒有消耗的物品。如果你的物品被消耗,它將不會返回這些物品。這就是歷史迴歸的原因。像在API描述:

getPurchases() 

此方法返回由用戶,包括兌換優惠代碼獲取既購買的物品和物品所擁有的當前未消耗的產品。

getPurchaseHistory() 

此方法返回用戶對每個SKU所作的最近購買,即使購買已過期,取消,或消耗。

我對inApp賬單的經驗是,這是一個巨大的痛苦,因爲無法通過測試賬戶來測試每個貨幣。這似乎是一個未完成的部分的Android。但我們沒有其他選擇可以遵循api,所以我建議完全按照所描述的那樣來完成。

API和源代碼:

https://developer.android.com/google/play/billing/billing_integrate.html

https://developer.android.com/google/play/billing/billing_reference.html

https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl