如何解决结算流程未启动
我已经做了一个星期了。我无法启动计费流程,请帮助!。谢谢。我没有收到任何错误。据我所知,它永远不会遇到“public void onSkuDetailsResponse”方法。
我已经尝试将我的整个应用程序剥离到仅计费部分以使其正常工作,但仍然没有任何运气。
private void setupBillingClient() {
billingClient = BillingClient.newBuilder(this).setListener(this).enablePendingPurchases().setListener(this).build(); //billingClient = BillingClient.newBuilder(this).enablePendingPurchases().build(); //
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
Toast.makeText(getApplication(),"success to connect billing",Toast.LENGTH_SHORT).show();
loadAllSKUs();
}
}
@Override
public void onBillingServicedisconnected() {
}
});
}
private void loadAllSKUs() {
final List<String> skuList = new ArrayList<>();
skuList.add("GunVault Donation"); //from play store...do this for multiple items if have them
// SkuDetailsParams params = SkuDetailsParams.newBuilder()
// .setSkusList(skuList)
// .setType(BillingClient.SkuType.INAPP)
// .build();
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(params.build(),new SkuDetailsResponseListener() { // billingClient.querySkuDetailsAsync(params,new SkuDetailsResponseListener()
@Override
public void onSkuDetailsResponse(BillingResult billingResult,List<SkuDetails> skuDetailsList) { // if (skuDetailsList != null && billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
for (Object skuDetailsObject : skuDetailsList) { // for (final SkuDetails skuDetails : skuDetailsList) {
final SkuDetails skuDetails = (SkuDetails) skuDetailsObject;
String sku = skuDetails.getSku();
String price = skuDetails.getPrice();
String gunVaultDonation;
Toast.makeText(About.this,skuDetails.getSku() + " " + sku,Toast.LENGTH_SHORT).show();
final BillingFlowParams params = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.build();
btnDonate.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Donate clicked",Toast.LENGTH_SHORT).show();
BillingFlowParams billingFlowParams = BillingFlowParams
.newBuilder()
.setSkuDetails(skuDetails)
.build();
billingClient.launchBillingFlow(About.this,billingFlowParams);
}
});
}
} else if (billingResult.getResponseCode() ==
BillingClient.BillingResponseCode.ERROR) {
Toast.makeText(About.this,"Error",Toast.LENGTH_SHORT).show();
}
}
});
如果您需要其他任何东西,请告诉我
解决方法
终于明白了。我使用的是产品名称而不是应用内产品的产品 ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。