【问题标题】:In App billing not showing popup message after BillingProcessor.purchase在 BillingProcessor.purchase 后应用计费不显示弹出消息
【发布时间】:2019-02-10 10:10:29
【问题描述】:

我还是 Android 应用内结算的新手。 我已经尝试过与本教程完全相同的方法,但从未弹出。 这是链接

GitHub

Tutorial Video

这是我的代码

MainActivity

public class MainActivity extends AppCompatActivity implements BillingProcessor.IBillingHandler {
    BillingProcessor bp;
    Button purchase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        bp = new BillingProcessor(this, null, this);
        purchase = (Button) findViewById(R.id.purchase);

        purchase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bp.purchase(MainActivity.this, "android.test.purchased");
            }
        });

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                bp.purchase(MainActivity.this, "android.test.purchased");
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {
        showToast("You Have Purchased The Product");
    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, @Nullable Throwable error) {
        showToast("An Error Has Occurred");
    }

    @Override
    public void onBillingInitialized() {

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(!bp.handleActivityResult(requestCode, resultCode, data)){
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    public void onDestroy(){
        if(bp != null){
            bp.release();
        }
        super.onDestroy();
    }

    private void showToast(String message) {
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }
}

我在 build.gradle APP

中添加了这个
compile 'com.anjlab.android.iab.v3:library:1.0.+'

AndroidManifest中,我也添加了计费权限

<uses-permission android:name="com.android.vending.BILLING" />

即使我尝试与教程完全相同,我也真的被困住了。请帮忙看看是哪里出了问题。

【问题讨论】:

  • 所以...您的问题/错误是什么?如果您有错误,请向我们显示日志。如果你在理解某事上有问题,请说出来。

标签: android in-app-billing


【解决方案1】:

许可证密钥和产品 ID 不能在最新版本的 google pay 中不再为空。您必须使用您的产品 ID 和开发人员许可证密钥创建一个 alpha 版本,就像它们在控制台中的方式一样。

此外,您必须在发布 Alpha 版后等待大约 30 分钟才能测试您的帐单。

希望有帮助!!

(确保您已添加 INTERNET 权限;将 build.gradle 中的“+”号替换为您将在更改日志中找到的版本)

【讨论】:

  • 感谢您的回答!那么,我需要创建真实的产品 ID 来测试应用内计费假人吗?如果我创建了产品 ID,我还能使用 android.test.purchased 吗?
  • 不,你不能(据我所知)......你的代码是完美的......你不需要担心你的错误。当您准备好发布时,请使用相同的代码……它会起作用。 (你需要真正的钥匙)
  • 还有一件事,当您 alpha 发布您的 apk 时,请确保添加测试电子邮件并接受来自这些电子邮件的邀请。这就是现在 google pay 的运作方式...
  • 好的,我会先尝试创建产品ID,然后看看它是否有效。谢谢!
  • 不错!感谢阿克什的帮助。看来您的解决方案是正确的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多