Nếu bạn đang ở trong môi trường thử nghiệm
1) Trong trường hợp android.test.purchased, tôi có thể đặt lại khoản thanh toán giả bằng cách khởi động lại thiết bị Android (đã tiêu thụ hết khoảng không quảng cáo).
2) Trong InApp sử dụng có một tệp được gọi là Security.java, tạm thời làm cho nó như sau. Kể từ khi thanh toán thử nghiệm (giả mạo) luôn trả về sai do ngoại lệ bảo mật.
public static boolean verifyPurchase(String base64PublicKey,
String signedData, String signature) {
return true; }
Sau đó, trong OnIabPurchaseFinishingListener của bạn, hãy gọi fechInvForconsumeItem ()
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result,
Purchase purchase)
{
if (result.isFailure()) {
// Handle error
Log.e("123","Failure");
return;
}
else if (purchase.getSku().equals(ITEM_SKU)) {
Log.e("123","PURCAsed");
fechInvForconsumeItem(); // Restart device if not consume
}
}
};
FechInvForconsumeItem () là
public void fechInvForconsumeItem() {
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
// Handle failure
Log.e("11","Failure");
} else {
Log.e("11","suc");
mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
mConsumeFinishedListener);
}
}
};
Consume Listener là
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase,
IabResult result) {
if (result.isSuccess()) {
} else {
// handle error
Log.e("11","sucConsume");
}
}
};