Не удалось получить обновленный объект покупки после подтверждения покупки в новом биллинге Google Api 2.0 - PullRequest
0 голосов
/ 30 мая 2019

Я реализую новый API биллинга 2.0 , в котором используется этот метод подтверждения покупки. Ранее я использовал AIDL для своей покупки, и у меня был следующий вариант использования: я использовал для передачи полезной нагрузки разработчика во время инициирования покупки и использовал для возврата полезной нагрузки разработчика в ответе как часть объекта покупки.

Bundle bundle = mService.getBuyIntent(3, "com.example.myapp",
   MY_SKU, "subs", developerPayload);

PendingIntent pendingIntent = bundle.getParcelable(RESPONSE_BUY_INTENT);
if (bundle.getInt(RESPONSE_CODE) == BILLING_RESPONSE_RESULT_OK) {
   // Start purchase flow (this brings up the Google Play UI).
   // Result will be delivered through onActivityResult().
   startIntentSenderForResult(pendingIntent, RC_BUY, new Intent(),
       Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
}

и по моему результату активности я получал объект покупки

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
   if (requestCode == 1001) {           
      int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
      String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
      String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");

      if (resultCode == RESULT_OK) {
         try {
            JSONObject jo = new JSONObject(purchaseData);
            String sku = jo.getString("productId");
            alert("You have bought the " + sku + ". Excellent choice, 
               adventurer!");
          }
          catch (JSONException e) {
             alert("Failed to parse purchase data.");
             e.printStackTrace();
          }
      }
   }
}

Этот объект покупки имеет полезную нагрузку разработчика, которую я отправляю на сервер для проверки.

Теперь в новом API полезная нагрузка разработчика может быть добавлена ​​только после завершения покупки или когда мы потребляем покупку, поэтому проблема заключается в том, что после подтверждения покупки мне нужен обновленный объект покупки, но как его получить * * 1013

 if (!purchase.isAcknowledged()) {
            AcknowledgePurchaseParams acknowledgePurchaseParams =
                AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.getPurchaseToken())
                    .setDeveloperPayload(/* my payload */)
                    .build();
            client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
        }

В cknowledgePurchaseResponseListener я получаю только код ответа, будь то успех или неудача. Но мне нужно обновить объект объекта покупки с помощью developerPayload и isAcknowledged флаг true.

Есть ли способ сделать это? Не могу найти ничего в документации.

1 Ответ

1 голос
/ 06 июня 2019

Локальный кэш покупок обновляется к тому времени, когда вызывается ваш acceptledgePurchaseResponseListener, поэтому вы можете запросить покупку из кеша с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#querypurchases. Мы рассмотрим добавление покупки обновления в прослушиватель для будущего выпуска библиотеки, чтобы сделать это удобнее.

...