我正在尝试使用Android billing v3测试试用订阅。该应用程序已经有产品在生产,但我也想添加订阅。当我第一次购买试验潜艇时,一切正常。然后我取消了它(等待几小时和几天),然后当我再次尝试购买时,会出现一条带有消息的Android对话框:您已拥有此项目。 Google Play应用和我的服务器端应用都确认订阅已取消。
logcat窗口显示此输出:
03-24 15:41:53.722: D/IabHelper(21333): Constructing buy intent for com.MYAPP.freetrial, item type: subs
03-24 15:41:53.732: D/Finsky(20292): [1056] InAppBillingUtils.pickAccount: com.MYAPP: Account determined from installer data - [UAHnZq8S3yArGc_6ew11RBHr0DE]
03-24 15:41:53.742: D/IabHelper(21333): Launching buy intent for com.MYAPP.freetrial. Request code: 10001
03-24 15:41:53.742: D/audio_hw_primary(181): select_devices: out_snd_device(2: speaker) in_snd_device(0: )
03-24 15:41:53.742: D/ACDB-LOADER(181): ACDB -> send_afe_cal
03-24 15:41:53.742: I/ActivityManager(580): START u0 {cmp=com.android.vending/com.google.android.finsky.billing.lightpurchase.IabV3Activity (has extras)} from pid -1
03-24 15:41:53.812: D/Finsky(20292): [1] CarrierParamsAction.createCarrierBillingParameters: Carrier billing config is null. Device is not targeted for DCB 2.
03-24 15:41:53.812: E/Finsky(20292): [1054] FileBasedKeyValueStore.delete: Attempt to delete 'params5wrD2REIodMwVQIkVi-biw' failed!
03-24 15:41:53.872: W/GLSUser(17314): GoogleAccountDataService.getToken()
03-24 15:41:53.882: I/ActivityManager(580): Displayed com.android.vending/com.google.android.finsky.billing.lightpurchase.IabV3Activity: +99ms
我必须添加onQueryInventoryFinished BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED,因为每次查询库存时都会在服务器端重新创建sub:
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
// Log.d(TAG, "Query inventory finished.");
mHelper.flagEndAsync();
if (result.isFailure()) {
// complain("Failed to query inventory: " + result);
return;
}
// Log.d(TAG, "Query inventory was successful.");
if (result.getResponse() == IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
return;
}
consumePuchasedItems(inventory);
// Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
我的应用程序已使用发布证书签名,构建代码+版本号与开发者控制台中的版本号完全相同。
我正在使用http://code.google.com/p/marketbilling/(2013年12月14日)
中的最新代码我已经检查了Android billing - error you own this item和其他类似帖子,但它无效。
我很感激任何建议。任何想法?我正在研究这几天仍然没有解决方案。订阅过程似乎第一次运作良好,我尝试了不同的帐户。当我取消它并尝试重新购买时会出现问题。
感谢!!!
答案 0 :(得分:1)
取消订阅后,您仍可以在订阅期结束前访问该订阅。这是Google的实施。这就是为什么取消订阅没有退款的原因,因为即使取消订阅,Google仍允许在整个订阅期内访问订阅。
取消订阅的做法是停止订阅续订。
这就是为什么即使您取消订阅,也无法立即再次购买。您应该能够在当前订阅期结束后重新购买。