Когда я просто запускаю клиент биллинга для покупки inApp, приложение сразу sh выводит следующую строку: billingClient = BillingClient.newBuilder (Profileowner.this) .setListener (this) .build ();
Я реализовал Закупки Покупок и прошел полный код https://developer.android.com/google/play/billing/billing_library_overview для выставления счетов ниже:
public void billing(){
//List<SkuDetails> skuDetailsList = null;
billingClient = BillingClient.newBuilder(Profileowner.this).setListener(this).build();
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK){
Toast.makeText(getApplication(),"success to connect billing",Toast.LENGTH_SHORT).show();
}
else Toast.makeText(getApplication(),"fail to connect billing",Toast.LENGTH_SHORT).show();
}
@Override
public void onBillingServiceDisconnected() {
Toast.makeText(getApplication(),"you are disconnected",Toast.LENGTH_SHORT).show();
}
});
//add a pay button
ImageButton pay = (ImageButton) findViewById(R.id.pay);
pay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (billingClient.isReady()){
SkuDetailsParams params = SkuDetailsParams.newBuilder()
.setSkusList(Arrays.asList("premium_3"))
.setType(BillingClient.SkuType.SUBS)
.build();
billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK){
//something to add here
loadSkus(skuDetailsList);
}
else {
Toast.makeText(getApplication(),"cant query product",Toast.LENGTH_SHORT).show();
}
}
});
}
else {
Toast.makeText(getApplication(),"billing clinet not ready",Toast.LENGTH_SHORT).show();
}
}
});
}
private void loadSkus(List<SkuDetails> skuDetailsList) {
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetailsList.get(0))
.build();
billingClient.launchBillingFlow(this, billingFlowParams);
}