使用虚拟信用卡凭据测试Android市场应用内购买功能

25

我已按照文档http://developer.android.com/guide/market/billing/index.html 配置了一个 Android 应用程序来使用应用内购买模块。当使用与真实信用卡关联的英国开发团队账户进行测试时,一切都很正常。然而,我的开发团队中有一部分是在中国的,由于 Google Billing 在中国不可用,他们无法测试结算功能。

可以理解的是,团队成员不愿意与他人分享个人信用卡或账户信息。有没有什么方法可以绕过这个问题?例如,在测试期间,是否可以将虚拟卡号与账户相关联?

我知道在商家沙盒中 (http://code.google.com/apis/checkout/developer/Google_Checkout_Basic_HTML_Sandbox.html) 这样做是可行的,但我似乎找不到适用于 Android 结算测试的类似工具。

希望能够得到任何帮助/指导/支持。中国团队专注于与购买后体验相关的许多模块,如果我们找不到解决方法,将会受到严重影响。

谢谢!


也许可以在 Visa 礼品卡上充值几磅(它的使用方式类似于信用卡),然后将其发送给他们? - τεκ
1
我很好奇在中国,适当的测试程序是否会起作用。也许你应该让他们使用VPN或其他方法。 - Thomas Dignan
我假定您已经阅读了这个链接,http://developer.android.com/guide/market/billing/billing_testing.html。 - Thomas Dignan
“4111-1111-1111-1111”不是通用(Visa)虚拟信用卡号码吗? - citizen conn
[TEK] - VISA / Mastercard礼品卡的想法不错!我想我可以尝试一下看看是否有效。 [Tom] - 他们必须通过VPN进行测试,但所有个人信用卡都是中国的,而Google Billing在处理时使用信用卡的家庭位置,是的,我看到了开发者指南,但感谢提供链接。 [Citizen] - 我没有尝试过,但您能否将虚拟卡与您的Google账户关联,尝试交易,并避免账户被封锁? - Kaiesh
TEK - 我已经订购了一张 Mastercard 礼品卡,因为其他解决方案并没有真正达到预期的效果。你想在下面输入它作为答案吗?我有一种感觉这是可行的选项! - Kaiesh
4个回答

8

更新:
Inappbilling库1.0 已发布,可以使此过程更加简单。


Kumar Bibek已经回答了如下问题:仍然给出解释:

在启动购买流程时将以下调试选项硬编码以获得所需的输出。

  • android.test.purchased
  • android.test.canceled
  • android.test.refunded
  • android.test.item_unavailable*

    mHelper.launchPurchaseFlow(Activity.this, "android.test.purchased", 1000, mPurchaseFinishedListener, payload);

以上操作将显示以下屏幕:

enter image description here

点击购买。

enter image description here


3
危险提示:如果你这样做,会破坏IAB并被带到这个问题。不要这样做,它已经出现故障了。 - iSWORD

5

4
好的,为了正确理解,您提供的指导是不要实际尝试购买作为应用内计费项目创建的产品,而是将产品ID硬编码为测试场景。因此,测试需要分为两个不同的阶段:[1]测试软件内选择适当ID和提示框的弹出,以及[2]测试购买后的活动。唯一无法测试的是在生产环境中进行卡授权时遇到的实际延迟。 - Kaiesh
是的。使用Google结帐,大多数情况下都会预处理卡片以进行授权。在大多数情况下,卡已经被授权,但是是的,可能会出现需要更多时间来处理付款的情况。 - Kumar Bibek

2
为了关闭这个线程 - 我最终采用的解决方案是由TEK提供的。我购买了一些预付信用卡并将它们附加到测试账户上。这减少了风险,并允许我们的开发人员使用这些账户。
我应该指出,中国的开发人员还必须通过VPN才能拉起市场结算对话框。
iPhone开发者/用户根本没有VPN问题。
谢谢, Kaiesh

暂时不使用。 - zszen

1
如其他人所回答的那样,我能够通过在我的活动中启动这段代码来测试应用程序。
 public class PurchaseTestingActivity extends AppCompatActivtiy implements BillingProcessor.IBillingHandler {

    ........
  purchaseButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            boolean isAvailable = BillingProcessor.isIabServiceAvailable(PrivateAndPublicCardHoldScreen.this);
            if (isAvailable) {
                       BillingProcessor bp = new BillingProcessor(this, "YOUR LICENSE KEY FOR THIS APPLICATION", this);
             /// this is the actually product 
//                    bp.purchase(PrivateAndPublicCardHoldScreen.this, "upgrade_to_premium");

      //// for testing purposes  
                bp.purchase(PrivateAndPublicCardHoldScreen.this, "android.test.purchased");
            }else{
                Toast.makeText(PrivateAndPublicCardHoldScreen.this, "Your device is not supported, please contact us.", Toast.LENGTH_LONG).show();
            }
        }
    });

  ..........

   @Override
public void onProductPurchased(String productId, TransactionDetails details) {
    /// handle your app after purchases done

}

@Override
public void onPurchaseHistoryRestored() {

}

@Override
public void onBillingError(int errorCode, Throwable error) {

}

@Override
public void onBillingInitialized() {

}


 }

PS:我已经使用了这个库来实现应用内购买轻量级的Android应用内计费版本3实现


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接