Я тестирую приложение для биллинга в приложении. Я установил свой аккаунт в консоли Google Play, и все работает правильно и покупка прошла успешно, но последний метод onPurchasesUpdated
Я не знаю, звонит он или нет, но я неЯ не могу получить тост, так что, возможно, он не звонит. Есть ли проблема с моим кодом?Приложение сообщает мне об успешной покупке, как я могу что-то кодировать при успешной покупке?
public class MainActivity extends AppCompatActivity implements PurchasesUpdatedListener {
BillingClient mBillingClient;
private Button mBtnBuy;
private String product = "product_test_4";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnBuy = findViewById(R.id.mBtn_buy);
mBtnBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
}
}).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(int responseCode) {
startPurchase();
}
@Override
public void onBillingServiceDisconnected() {
}
});
}
});
}
public void startPurchase() {
List<String> skuList = new ArrayList<>();
skuList.add(product);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
if (responseCode == BillingClient.BillingResponse.OK
&& skuDetailsList != null) {
for (SkuDetails skuDetails : skuDetailsList) {
String sku = skuDetails.getSku();
String price = skuDetails.getPrice();
if (product.equals(sku)) {
}
}
}
}
// Process the result.
});
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSku(product)
.setType(BillingClient.SkuType.INAPP) // SkuType.SUB for subscription
.build();
int responseCode = mBillingClient.launchBillingFlow(MainActivity.this, flowParams);
}
@Override
public void onPurchasesUpdated(@BillingClient.BillingResponse int responseCode, List<Purchase> purchases) {
if (responseCode == BillingClient.BillingResponse.OK
&& purchases != null) {
Toast.makeText(this, "purchase success", Toast.LENGTH_SHORT).show();
Log.d("tag","purchase success");
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
// Handle an error caused by a user cancelling the purchase flow.
Toast.makeText(this, "purchase cancelled", Toast.LENGTH_SHORT).show();
Log.d("tag","purchase cancelled");
} else {
// Handle any other error codes.
Toast.makeText(this, "error", Toast.LENGTH_SHORT).show();
Log.d("tag","purchase error");
}
}
}