我保留了一个捐赠标签,想让用户重复购买物品。我已经实现了一个代码,但它只能让用户购买一次特定的项目。我在游戏控制台中使用了管理产品来管理产品。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(billingClient.isReady()){
SkuDetailsParams params=SkuDetailsParams.newBuilder()
.setSkusList(Arrays.asList("purchase_aaa","purchase_bbb","purchase_ccc","purchase_ddd"))
.setType(BillingClient.SkuType.INAPP).build();
billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
if(responseCode==BillingClient.BillingResponse.OK)
{
loadProductToRecyclerView(skuDetailsList);
}
else{
Toast.makeText(Donate.this, "Cannot query product", Toast.LENGTH_SHORT).show();
}
}
});
}
else
{
Toast.makeText(Donate.this, "Not ready", Toast.LENGTH_SHORT).show();
}
}
});
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
if(purchases!=null){
Toast.makeText(this, "Purchased"+purchases.size(), Toast.LENGTH_SHORT).show();
}
}
这是设计好的,不能更改,应用内的管理产品只能购买一次。
如果你想让付出更多的用户拥有更多的功能,你就必须创建尽可能多的应用内管理产品,因为级别存在。
如果是在游戏中,比如用户在消耗物品,那么当他不再有任何物品时,你就消耗应用内产品,这样他就可以再次购买。
或者你也可以在购买后立即消费产品,并通过自己的手段、自己的服务器或许通过firebase来追踪他购买了多少,但这已经意味着你必须为你的应用实现一个用户认证系统。
消费购买。
ConsumeResponseListener consumeListener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
}
};
String token = purchase.getPurchaseToken();
ConsumeParams consumeParams = ConsumeParams.newBuilder().setPurchaseToken(token).build();
billingClient.consumeAsync(consumeParams, consumeListener);