我正在尝试使用Android实现应用内结算,但我遇到了一个奇怪的错误,我找不到任何有类似问题的在线人员.
我做了以下事情:
当我按下"购买"按钮时,它会打开商店对话框,其中显示"这是测试订单,您不会被收费".到目前为止一切似乎都很好,但每种付款方式都说"此付款方式已被拒绝." 所以我无法继续 这包括Google Play余额,美国运通卡,Visa和PayPal帐户.
我尝试了以下,但没有一个工作:
对可能出错的任何想法?
到目前为止,我通过应用内购买在Play商店中发布我的应用以禁用广告.
我正在重新设计整个应用程序,我想将它分成两个应用程序:一个用于移动设备(如原始设备)和一个用于Android TV设备,因此我考虑将这两个版本作为两个新应用程序发布并转换为实际的应用程序成像购买经理.我希望已付费的用户移除移动版中的广告,以便在电视广告中删除广告.
有一些方法可以检查应用程序是否未从Play商店安装和/或是否已被篡改(例如,使用apktools).
也可以将付费应用创建为其他应用的"关键".
我在想创建三个应用程序:
所有三个应用程序都将使用相同的密钥进行签名,并将包括篡改检测.PM将有一个Activity 可供MB或电视使用的曝光,以检查用户是否购买了"移除广告"功能.
但我有两个问题:
编辑1: 我分割我的应用程序有两个主要原因:
我即将为正在开发的应用程序中的高级升级功能实现应用程序内购买(IAP),并且已经阅读了官方开发人员指南。在那里,他们提到
您可以使用Play Billing Library简化您的开发流程,使您可以将精力集中于实现针对您的应用程序的逻辑,例如显示应用程序内产品和购买商品。
并参考TrivialDrive_v2示例应用程序,以获取有关如何实现应用程序内计费的完整培训课程。
查看示例,特别是com.example.billingmodule.billing包,短语“简化开发过程”并不是想到的第一件事。
这真的是我们应该如何实施应用内购买进行高级升级的方式吗?似乎比应该的要复杂得多,所以我想也许是我在此过程中误解了一些东西,并且有一种更简单的方法来实现此非常常见的功能?
android in-app-purchase in-app-billing android-billing play-billing-library
我目前正在我的 Android 应用上测试 Google Play 的应用内订阅计费库。我已经创建了订阅并将我的应用程序发布到内部测试轨道。但是,当我尝试完成结算流程时,我的应用程序因未知原因崩溃。发生这种情况时我正在发送崩溃报告,但是当我在 ANR 和崩溃报告中查看我的 android 生命体征时,我的崩溃报告数据无处可寻。相反,谷歌控制台说我“没有发现所选标准的错误”。
为什么我的崩溃数据没有注册?我在这里做错了什么?我只想找出我的错误在哪里。我必须将我的应用程序作为一个版本进行测试,否则 google billing api 将无法工作。例如,当尝试在我的模拟器上进行测试时,我收到错误响应代码 5,它表示我的应用程序未设置为应用程序内计费。在内部测试轨道上进行测试时,我通过了此检查并开始了我的计费流程,但随后它就崩溃了。
请帮忙!
android android-testing android-billing android-developer-api google-play-developer-api
我有
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识别类型,我只是简单地传递null给setOldSkus
文档报告说
setSku (String sku)并setType (String type)已被替换为setSkuDetails(SkuDetails)
(此SkuDetails对象String在构造函数中仅接收一个作为参数并抛出,JSONException因此似乎它不适用于旧String常量)
和
setOldSkus(ArrayList<String> oldSkus) 已被替换为 setOldSku(String)
我正在过渡到 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。
显然,我没有启用新流程,但这是为什么呢?
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 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
我正在使用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) 我正在尝试集成 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