#java #android #in-app-billing #billingclient
#java #Android #в приложении-выставление счетов #billingclient
Вопрос:
После обновления BillingClient до 3.0.0 я начал получать около 20% пользователей, которые видят SERVICE_UNAVAILABLE
при запросе покупки в приложении. Список skuDetailsList также пуст. Согласно документам, SERVICE_UNAVAILABLE
подразумевает, что сеть отключена, но как клиент возвращается OK
с startConnection
и отправляет это после попытки запросить детали SKU? Кроме того, я вижу несколько ERROR
, это код 6. У меня была какая-то неправильная реализация или я просто показываю пользователю, что произошла ошибка. Попробуйте позже» сообщение? Я также не вижу никаких предупреждений для каких-либо стран в Play Console или чего-либо, что может вызвать это.
BillingClient billingClient = BillingClient.newBuilder(getContext())
.enablePendingPurchases()
.setListener((billingResult, list) -> {})
.build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
createSkus(mBillingClient);
}
}
@Override
public void onBillingServiceDisconnected() {}
});
private void createSkus(BillingClient billingClient) {
List<String> skuList = new ArrayList<>();
skuList.add("pro");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(params.build(),
(billingResult, skuDetailsList) -> {
// skuDetailsList empty with BillingResult code 2 (SERVICE_UNAVAILABLE)
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetailsList.get(0))
.build();
billingClient.launchBillingFlow(activity, billingFlowParams);
});
}
Ответ №1:
У меня была похожая проблема, когда возвращался BillingServiceDisconnected
код — к сожалению, моя проблема заключалась в том, что я звонил BillingClient.startConnection
дважды.
Также следует отметить еще одну вещь: вам необходимо опубликовать Alpha
или Beta
версию вашего приложения с недавно обновленной библиотекой, и если вы используете applicationSuffix
, удалите это, прежде чем тестировать его в отладочной версии.