标签: android-billing

Android"付款方式已被拒绝",适用于每种付款方式

我正在尝试使用Android实现应用内结算,但我遇到了一个奇怪的错误,我找不到任何有类似问题的在线人员.

我做了以下事情:

  • 上传的APK具有开发者控制台的计费权限,作为alpha版本.
  • 添加了Google小组进行测试,我的个人Gmail帐户是会员.
  • 退出了选择加入URL并成为测试人员.
  • 添加了我的个人Gmail帐户作为启用测试的帐户(在设置>帐户详细信息中).
  • 创建非消耗品并将其设置为"活动".
  • 等了24个小时.
  • 在我的手机上放置一个已签名的版本.

当我按下"购买"按钮时,它会打开商店对话框,其中显示"这是测试订单,您不会被收费".到目前为止一切似乎都很好,但每种付款方式都说"此付款方式已被拒绝." 所以我无法继续 这包括Google Play余额,美国运通卡,Visa和PayPal帐户.

我尝试了以下,但没有一个工作:

  • 使用不同的Google帐户进行测试付款.
  • 从开发人员控制台设置中的测试帐户列表中删除了我的帐户,尝试使用"真实"交易.
  • 试过一个不同的设备.
  • 试图创造一个不同的产品.

对可能出错的任何想法?

android in-app-billing google-play android-billing

7
推荐指数
1
解决办法
2万
查看次数

使一个IAP对不同的应用程序有效

到目前为止,我通过应用内购买在Play商店中发布我的应用以禁用广告.

我正在重新设计整个应用程序,我想将它分成两个应用程序:一个用于移动设备(如原始设备)和一个用于Android TV设备,因此我考虑将这两个版本作为两个新应用程序发布并转换为实际的应用程序成像购买经理.我希望已付费的用户移除移动版中的广告,以便在电视广告中删除广告.

有一些方法可以检查应用程序是否未从Play商店安装和/或是否已被篡改(例如,使用apktools).

可以将付费应用创建为其他应用的"关键".

我在想创建三个应用程序:

  • PM:采购经理,将取代实际的应用程序
  • MB:我的应用程序的移动版本
  • 电视:我的应用程序的电视版

所有三个应用程序都将使用相同的密钥进行签名,并将包括篡改检测.PM将有一个Activity 可供MB或电视使用的曝光,以检查用户是否购买了"移除广告"功能.

但我有两个问题:

  • 这种设计是安全的还是可以被开发利用?
  • 有没有更优雅的方式(除了上传多个APK)这样做?

编辑1: 我分割我的应用程序有两个主要原因:

  • 我的应用程序目前支持API级别9,通过添加leanback库我应该将最小SDK增加到17级
  • 我不想要一个大的apk同时具有电视和移动版本的图像和布局

security android in-app-billing android-billing

7
推荐指数
1
解决办法
187
查看次数

为Android实施应用内购买真的这么复杂吗?

我即将为正在开发的应用程序中的高级升级功能实现应用程序内购买(IAP),并且已经阅读了官方开发人员指南。在那里,他们提到

您可以使用Play Billing Library简化您的开发流程,使您可以将精力集中于实现针对您的应用程序的逻辑,例如显示应用程序内产品和购买商品。

并参考TrivialDrive_v2示例应用程序,以获取有关如何实现应用程序内计费的完整培训课程。

查看示例,特别是com.example.billingmodule.billing包,短语“简化开发过程”并不是想到的第一件事。

这真的是我们应该如何实施应用内购买进行高级升级的方式吗?似乎比应该的要复杂得多,所以我想也许是我在此过程中误解了一些东西,并且有一种更简单的方法来实现此非常常见的功能?

android in-app-purchase in-app-billing android-billing play-billing-library

7
推荐指数
0
解决办法
98
查看次数

Android 崩溃报告未显示在 Google Play 控制台的 ANR 和崩溃报告中

我目前正在我的 Android 应用上测试 Google Play 的应用内订阅计费库。我已经创建了订阅并将我的应用程序发布到内部测试轨道。但是,当我尝试完成结算流程时,我的应用程序因未知原因崩溃。发生这种情况时我正在发送崩溃报告,但是当我在 ANR 和崩溃报告中查看我的 android 生命体征时,我的崩溃报告数据无处可寻。相反,谷歌控制台说我“没有发现所选标准的错误”。


为什么我的崩溃数据没有注册?我在这里做错了什么?我只想找出我的错误在哪里。我必须将我的应用程序作为一个版本进行测试,否则 google billing api 将无法工作。例如,当尝试在我的模拟器上进行测试时,我收到错误响应代码 5,它表示我的应用程序未设置为应用程序内计费。在内部测试轨道上进行测试时,我通过了此检查并开始了我的计费流程,但随后它就崩溃了。


请帮忙!

android android-testing android-billing android-developer-api google-play-developer-api

7
推荐指数
1
解决办法
3645
查看次数

如何正确更新已弃用的 Android BillingFlowParams 方法

我有

BillingFlowParams purchaseParams = BillingFlowParams.newBuilder().setSku(skuId).setType(billingType).setOldSkus(oldSkus).build();
Run Code Online (Sandbox Code Playgroud)

但现在

setSku

setType

setOldSkus
Run Code Online (Sandbox Code Playgroud)

都被弃用了。

我想更新旧代码而不发布会干扰当前订阅和未来订阅的更新。我应该如何正确更新上述代码?

目前我使用aString myProduct="my_newsweek_1"; 来识别购买和BillingClient.SkuType.SUBS识别类型,我只是简单地传递nullsetOldSkus

文档报告说

setSku (String sku)setType (String type)已被替换为setSkuDetails(SkuDetails) (此SkuDetails对象String在构造函数中仅接收一个作为参数并抛出,JSONException因此似乎它不适用于旧String常量)

setOldSkus(ArrayList<String> oldSkus) 已被替换为 setOldSku(String)

android android-billing

7
推荐指数
1
解决办法
2696
查看次数

Google Play Billing 2.0 测试待处理交易和确认

我正在过渡到 Google Play Billing library v2.0.0,有两个主要的流程差异。一个是购买确认https://developer.android.com/google/play/billing/billing_library_overview#acknowledge另一个是处理未决交易https://developer.android.com/google/play/billing/billing_library_overview#pending

对于待处理的交易,文档指出

除了两张测试信用卡外,许可证测试人员还可以使用两种测试工具来延迟付款,几分钟后自动完成或取消

...但我只能使用两张普通的测试卡,没有延迟的。

还有:

对于许可证测试人员进行的购买,确认窗口较短。如果在五分钟内未得到确认,购买将被退还和撤销,而不是三天。

但是我仍然可以按月订阅 6 次 5 分钟的长续订,所以这是一种常规行为,而不是新行为。

当然,我调用enablePendingPurchases()了 init。

显然,我没有启用新流程,但这是为什么呢?

android google-play android-billing play-billing-library

7
推荐指数
0
解决办法
822
查看次数

Google Play In-app Billing API version is less than 3

I just started beta testing the 2.0 update to the billing library for the Play Store and a lot of my users are getting this error Google Play In-app Billing API version is less than 3.

这只是更新之前的时间问题,还是某些设备卡在旧版本上还是什么?

android android-billing android-inapp-purchase

7
推荐指数
3
解决办法
918
查看次数

Android Billing 4.0.0 - 无购买结果 querySkuDetailsAsync()

我将 Android Studio 中的 Google Play Billing Library 从 3.0.3(工作正常)迁移到 4.0.0。我检查了我的 Google Play 结算信息,一切似乎都正常,并且 SKU 状态为“活动”(没有危险信号)。我已尽力遵循迁移说明@ https://developer.android.com/google/play/billing/integrate#assessment_a_connection_to_google_play

到目前为止,我所能做到的就是与 Google Play Billing 的连接正常,也就是说,在 onBillingSetupFinished() 方法之后,BillingClient.BillingResponseCode.OK 响应良好,没有错误消息。

我的问题始于对 querySkuDetailsAsync() 的调用:这里没有响应,甚至没有错误通知。谷歌网站非常强调这次通话,所以我觉得这就是乐趣的开始。

我已经提供了存在问题的示例代码。我已经使用了 Stack Overflow 上的很多修复程序,但现在我真的陷入困境,真的需要它才能工作。

我的问题代码如下:

'''

/*
//Using the following library in build.graddle for app module
    dependencies {
        def billing_version = "4.0.0"
        implementation "com.android.billingclient:billing:$billing_version"
}

*/

StringBuilder builder4SKUInfo;
private void get_Subscribe2_Characters() {

    Subscribe2_Characters_Button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            //I Toggle Visibility of Views Here


            billingClient.startConnection(new BillingClientStateListener() {

                //Android Studio …
Run Code Online (Sandbox Code Playgroud)

android in-app-billing android-billing play-billing-library google-play-billing

7
推荐指数
1
解决办法
5455
查看次数

inventory.getPurchase()总是返回null,尽管已经购买了

我正在使用in-ap购买样本.我的应用程序有2个按钮,第一个按钮默认禁用,点击第二个按钮将购买并启用第一个按钮.购买按钮工作正确,但购买后,我检查库存但它总是返回null,这意味着我还没有购买.

这是源代码:

建立:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buyButton = (Button) findViewById(R.id.buyButton);
    clickButton = (Button) findViewById(R.id.clickButton);
    clickButton.setEnabled(false);
    String base64EncodedPublicKey = "key";
    mHelper = new IabHelper(this, base64EncodedPublicKey);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                Log.d(TAG, "In-app Billing setup failed: " + result);
            } else {
                Log.d(TAG, "In-app Billing is set up OK");
            }
            // Query to detect user was buy this item or not
            mHelper.queryInventoryAsync(mReceivedInventoryListener);
        }
    });

    buyButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View …
Run Code Online (Sandbox Code Playgroud)

android in-app-purchase in-app-billing android-billing

6
推荐指数
1
解决办法
6445
查看次数

Android Google Pay 结算 - 响应 4:ITEM_UNAVAILABLE

我正在尝试集成 Google Play 结算。

这是我的 onCreate :

private final static String     TAG = "MainActivity" ;
private final static String     ITEM_SKU_SUBSCRIBE = "sub_example" ;
private final static String     PREF_FILE = "shared_prefs" ;
private final static String     SUBSCRIBE_KEY = "subscribe" ;

private BillingClient                   billingClient ;

private TextView                        premiumContent ;
private TextView                        subscriptionStatus ;
private Button                          purchaseButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    premiumContent = findViewById(R.id.premium_content) ;
    subscriptionStatus = findViewById(R.id.subscription_status) ;
    purchaseButton = findViewById(R.id.button) ;

    billingClient = BillingClient.newBuilder(this)
            .enablePendingPurchases()
            .setListener(this)
            .build() …
Run Code Online (Sandbox Code Playgroud)

java android in-app-billing android-billing play-billing-library

6
推荐指数
1
解决办法
5051
查看次数