gpt4 book ai didi

android - 如何确认android中的应用内购买?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:46 24 4
gpt4 key购买 nike

我已经浏览过 Play 结算库 https://developer.android.com/google/play/billing/billing_library_overview您必须在三天内确认所有购买。未能正确确认购买会导致这些购买被退款。该过程并未明确说明如何确认购买。这是我试过的这是正确的方法吗?提前致谢

@Override


public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {
if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK&&purchases!=null){
Toast.makeText(this, "Purchase Successful", Toast.LENGTH_SHORT).show();
for(Purchase purchase:purchases){
handlePurchase(purchase);
}
}else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.USER_CANCELED){
Toast.makeText(this, "Purchase Cancelled", Toast.LENGTH_SHORT).show();
}else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED){
Toast.makeText(this, "Already Purchased", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this, billingResult.getDebugMessage(), Toast.LENGTH_SHORT).show();
}



//in handlePurchase()
if(!purchase.isAcknowledged())
{
AcknowledgePurchaseParams acknowledgePurchaseParams
= AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.setDeveloperPayload(purchase.getDeveloperPayload())
.build();

client.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK){
Toast.makeText(RemoveAdsActivity.this, "Purchase Acknowledged", Toast.LENGTH_SHORT).show();
}
}
});
}

最佳答案

它提到在接近一半的时候确认购买 link .根据类型的不同,有不同的方式来确认购买。

 private BillingClient mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();

//For non-consumables:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener());

//For Consumables:
client.consumeAsync(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);

我发布的链接包含有关如何处理订阅的示例。

更新

以下是确认非消耗品和消耗品购买的方法,以非消耗品开头:

首先,创建 AcknowledgePurchaseParams 类对象。为此,您需要您应该能够轻松获得的购买 token ,因为您应该在您的 onPurchasesUpdated 方法或您在 onPurchasesUpdated 之后将购买传递给的其他方法中调用它:

AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();

接下来创建将用作第二个参数的监听器。这将允许您在确认购买后做一些事情。我在这个例子中显示了一个 snackbar 消息(根据 worbel 的评论,你可以,而且可能应该检查这个 billingResult 的结果):

AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {

getMessage("Purchase acknowledged");
}

};

创建这些后,使用您的 BillingClient 调用 acknowledgePurchase 方法:

mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);

购买应该被成功确认。

这对非消耗品使用 acknowledgePurchase

消耗品采购

这很相似,只是它们的名称发生了变化 - 请参阅上面示例中对它们的解释:

第一个参数 - Params - 设置:

ConsumeParams consumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();

第二个参数 - 监听器 - 设置:

    ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
getMessage("Purchase acknowledged");
}
}

现在使用您的 BillingClint 和 consumeAsync:

mBillingClient.consumeAsync(consumeParams, consumeResponseListener);

关于android - 如何确认android中的应用内购买?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com