Uygulamamda anjlabın uygulama içi satın alma kütüphanesini kullanıyorum. Bir üründen birden fazla satın alma gerçekleştirmek istiyorum. Kullanıcı kredi satın alabiliyor, kredi aldıktan sonra tekrar satın al butonuna tıklandığında tekrar ödeme ekranı gelmesini istiyorum fakat ödeme alınmadan tekrar kredi veriyor. Ürünü tüketmek için consume metodunu kullandım fakat ürün bir türlü tükenmiyor. Github sayfasından da baktığım çözümler fayda etmedi. Consumeyi her yere yazdım fakat bir türlü ürün tükenmiyor. işin tuhaf yanı ürünü tüketmek için ilk başta onProductPurchased metoduna yazdım ve ürün tükenip tekrar in app oluyordu fakat onda da satın alma olduktan sonra tekrar kredi ala tıklamadan kredi alınamıyordu. onu çözeyim derken şimdi hiç çalışmıyor.
Kodlar şu şekilde
public class PurchaseActivity extends Activity implements BillingProcessor.IBillingHandler {
BillingProcessor bp;
@Override
public void onDestroy() {
/*Destroy billing proc.*/
if (bp != null) {
bp.release();
}
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/*handle billing proc. on activity result*/
if (!bp.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
Button btn_Purchase,btn_restore_purchase,btnUnlimited;
TextView tvCoin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.purchase_activity);
/*Initialize billing proc.*/
/*definitions*/
btn_Purchase = findViewById(R.id.btn_Purchase);
btn_restore_purchase= findViewById(R.id.btn_restore_purchase);
btnUnlimited= findViewById(R.id.btnUnlimited);
tvCoin= findViewById(R.id.tvTotalCredi);
/*Billing Control*/
if (BillingControl.ReadIntPreferences(PurchaseActivity.this))
{
tvCoin.setText(getResources().getString(R.string.coin_unlimited));
btn_Purchase.setEnabled(false);
btn_restore_purchase.setEnabled(false);
btnUnlimited.setEnabled(false);
} else
{
tvCoin.setText("Mevcut Kredi: "+String.valueOf(SharedMemory.ReadIntPreferences(PurchaseActivity.this,KEY_AMOUNT)));
bp = new BillingProcessor(this, LICENSE_KEY, this);
bp.initialize();
}
/*Purchase button*/
btn_Purchase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bp.consumePurchase(PRODUCT_ID_20);
bp.purchase(PurchaseActivity.this, PRODUCT_ID_20);
}
});
/*Restore purchase*/
btn_restore_purchase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bp.consumePurchase(PRODUCT_ID_100);
bp.purchase(PurchaseActivity.this, PRODUCT_ID_100);
}
});
btnUnlimited.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// bp.consumePurchase(PRODUCT_ID_100);
bp.purchase(PurchaseActivity.this, PRODUCT_ID_UN_LIMITED);
}
});
}
@Override
public void onBillingInitialized() {
/*
* Called when BillingProcessor was initialized and it's ready to purchase
*/
btn_Purchase.setEnabled(true);
btn_restore_purchase.setEnabled(true);
btnUnlimited.setEnabled(true);
bp.consumePurchase(PRODUCT_ID_100);
bp.consumePurchase(PRODUCT_ID_20);
}
@Override
public void onProductPurchased(String productId, TransactionDetails details) {
/*
* Called when requested PRODUCT ID was successfully purchased
*/
if(productId==PRODUCT_ID_100)
{ SharedMemory.WritePrefernces(PurchaseActivity.this,KEY_AMOUNT,SharedMemory.ReadIntPreferences(PurchaseActivity.this,MyConstants.KEY_AMOUNT)+100);
tvCoin.setText("Mevcut Kredi: "+String.valueOf(SharedMemory.ReadIntPreferences(PurchaseActivity.this,KEY_AMOUNT)));
bp.consumePurchase(PRODUCT_ID_100);
} else if (productId==PRODUCT_ID_20)
{
SharedMemory.WritePrefernces(PurchaseActivity.this,KEY_AMOUNT, SharedMemory.ReadIntPreferences(PurchaseActivity.this,MyConstants.KEY_AMOUNT)+ 20);
tvCoin.setText("Mevcut Kredi: "+String.valueOf(SharedMemory.ReadIntPreferences(PurchaseActivity.this,KEY_AMOUNT)));
// bp.consumePurchase(productId);
// bp.purchase(PurchaseActivity.this,productId);
bp.consumePurchase(PRODUCT_ID_20);
}
else if (productId==PRODUCT_ID_UN_LIMITED) {
BillingControl.WritePrefernces(PurchaseActivity.this,true);
tvCoin.setText("Mevcut Kredi: Sınırsız");
}
// btn_Purchase.setEnabled(false);
}
@Override
public void onBillingError(int errorCode, Throwable error) {
/*
* Called when some error occurred. See Constants class for more details
*
* Note - this includes handling the case where the user canceled the buy dialog:
* errorCode = Constants.BILLING_RESPONSE_RESULT_USER_CANCELED
*/
if (errorCode==Constants.BILLING_RESPONSE_RESULT_USER_CANCELED)
{
Toast.makeText(this, getResources().getString(R.string.purchase_cancel), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onPurchaseHistoryRestored() {
/*
* Called when purchase history was restored and the list of all owned PRODUCT ID's
* was loaded from Google Play
*/
Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
bp.consumePurchase(PRODUCT_ID_100);
bp.consumePurchase(PRODUCT_ID_20);
}
}