Sur*_*esh 11 android in-app-purchase in-app-billing android-inapp-purchase
我已经浏览了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();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
它提到确认通过该链接附近有购买。根据类型,有不同的确认购买方式。
private BillingClient mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
//For non-consumables:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener());
//For Consumables:
client.consumeAsync(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
Run Code Online (Sandbox Code Playgroud)
我发布的链接包含有关如何处理订阅的示例。
更新
这是有关如何确认非消费性购买的更扩展的示例:
首先,创建AcknowledgePurchaseParams参数。为此,您需要购买令牌,您应该能够轻松获得该令牌,因为您应该在onPurchasesUpdated方法或将购买传递给之后的另一种方法中调用此令牌onPurchasesUpdated:
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
Run Code Online (Sandbox Code Playgroud)
接下来,创建将用作第二个参数的侦听器。这将使您在确认购买后可以做一些事情。在此示例中,我显示了一条快餐栏消息:
AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
getMessage("Purchase acknowledged");
}
};
Run Code Online (Sandbox Code Playgroud)
创建完成后,使用BillingClient调用acknowledgePurchase方法:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
Run Code Online (Sandbox Code Playgroud)
购买应成功确认。
这acknowledgePurchase用于非消耗性物品。
消费品购买
这只是它们被调用的内容是相似的-参见上面示例中的解释:
第一个参数-参数-设置:
ConsumeParams consumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
Run Code Online (Sandbox Code Playgroud)
第二个参数-侦听器-设置:
ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
getMessage("Purchase acknowledged");
}
}
Run Code Online (Sandbox Code Playgroud)
现在使用您的BillingClint和ConsumerAsync:
mBillingClient.consumeAsync(consumeParams, consumeResponseListener);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2322 次 |
| 最近记录: |