问题描述
我正在尝试对我的 android java 应用实施应用内购买订阅,并按照此链接中的教程进行操作
https://developer.android.com/google/play/billing/integrate#java。
我创建了一个新的测试项目并按照步骤操作,但不确定我必须在以下两个字段中输入什么内容。
BillingClient client = ...
AckNowledgePurchaseResponseListener ackNowledgePurchaseResponseListener = ...
公共类 MainActivity 扩展 AppCompatActivity {
private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult,List<Purchase> purchases) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
&& purchases != null) {
for (Purchase purchase : purchases) {
handlePurchase(purchase);
}
} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
// Handle an error caused by a user cancelling the purchase flow.
} else {
// Handle any other error codes.
}
}
void handlePurchase(Purchase purchase) {
// Purchase retrieved from BillingClient#queryPurchases or your PurchasesUpdatedListener.
//Purchase purchase = ...;
// Verify the purchase.
// Ensure entitlement was not already granted for this purchasetoken.
// Grant entitlement to the user.
ConsumeParams consumeParams =
ConsumeParams.newBuilder()
.setPurchasetoken(purchase.getPurchasetoken())
.build();
ConsumeResponseListener listener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult,String purchasetoken) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
// Handle the success of the consume operation.
BillingClient client = ...
AckNowledgePurchaseResponseListener ackNowledgePurchaseResponseListener = ...
void handlePurchase(Purchase purchase) {
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAckNowledged()) {
AckNowledgePurchaseParams ackNowledgePurchaseParams =
AckNowledgePurchaseParams.newBuilder()
.setPurchasetoken(purchase.getPurchasetoken())
.build();
client.ackNowledgePurchase(ackNowledgePurchaseParams,ackNowledgePurchaseResponseListener);
}
}
}
}
}
};
billingClient.consumeAsync(consumeParams,listener);
}
};
private BillingClient billingClient = BillingClient.newBuilder(this)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
// The BillingClient is ready. You can query purchases here.
List<String> skuList = new ArrayList<>();
skuList.add("4");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(params.build(),new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult,List<SkuDetails> skuDetailsList) {
// Process the result.
for (SkuDetails skuDetails : skuDetailsList) {
if (skuDetails.equals("4")) {
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.build();
int responseCode = billingClient.launchBillingFlow(MainActivity.this,billingFlowParams).getResponseCode();
}
}
}
});
}
}
@Override
public void onBillingServicedisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)