在official guide之后,我开发了以下代码以连接到Google Play结算:
BillingManager(Context context, BillingListener listener) {
this.listener = listener;
billingClient = BillingClient.newBuilder(context).setListener(this).build();
startConnection(null);
}
private void startConnection(final Runnable runnable) {
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(int responseCode) {
switch (responseCode) {
case BillingClient.BillingResponse.OK:
connected = true;
executeRequest(runnable);
break;
default:
listener.onError(STAGE.CONNECTION, responseCode);
}
}
@Override
public void onBillingServiceDisconnected() {
connected = false;
}
});
}
此代码在“活动”的onCreate()
方法中调用。我得到的回应总是:
BILLING_RESPONSE_RESULT_DEVELOPER_ERROR
但是,当用户提出购买请求时,将执行相同的代码。这样,响应始终为OK
。我正在使用onCreate()
方法启动连接,以恢复用户之前可能进行的购买。来自official guide:
在您的代码中至少两次调用queryPurchases():
每次启动应用程序时,您都可以恢复自上次停止应用程序以来用户进行的所有购买。
使用onCreate()
方法启动连接太早了吗?如果是这样,我什么时候应该这样做?如果没有,我的代码是否有问题?