Я реализую новый 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.
Есть ли способ сделать это? Не могу найти ничего в документации.