我正在我的应用程序上的In App Store中工作,我使用了robotmedia的AndroidBillingLibrary, 当我使用库购买 android.test.purchased 时,响应正常,我需要的所有数据都在那里。
问题是,当我切换到 Android In-App Billing v3 时,这是从响应中收到的,没有签名。
{"packageName":"com.my.sampleapp","orderId":"transactionId.android.test.purchased","productId":"android.test.purchased","developerPayload":"","purchaseTime":0,"purchaseState":0,"purchaseToken":"inapp:com.my.sampleapp:android.test.purchased"}
我完全遵循了这个样本https://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample,但没有签名。我甚至运行谷歌提供的示例应用程序,但没有运气。
我正确地将我的Base64编码的RSA公钥放入
mHelper = new IabHelper(this, myPublicKey);
这是我的购买代码mHelper.launchPurchaseFlow(this, itempackage, 10001, mPurchaseFinishedListener);
OnIabPurchaseFinishedListener mPurchaseFinishedListener = new OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.i("Billing", "purchasing: " + result.getMessage());
if (result.isFailure()) {
Log.i("Billing", "Error purchasing: " + result);
return;
} else if (purchase.getSku().equals("android.test.purchased")) {
Log.i("Billing - signature", purchase.getSignature());
consumeItems();
} else {
Log.i("Billing", "Error purchasing: " + result);
}
}
};
我的 mPurchaseFinishedListener 在购买后没有收到任何内容,但protected void onActivityResult(int requestCode, int resultCode, Intent data)
收到的内容却没有签名。
对此有何解决方案? v2接收签名而v3不接收是奇怪的。
答案 0 :(得分:12)
您没有获得测试ID,android.test.purchased等的签名
您将收到真实购买的签名。
答案 1 :(得分:1)
正如Rawkode所说,你不再获得测试购买的签名(android.test。*)。我使用我的真实产品进行了潜水并将我的应用程序上传到了市场(只是没有发布)。
低,看到签名开始被退回!我建议修改您使用的任何服务器端验证,以便在数据包含android.test。* item id时跳过签名检查。
答案 2 :(得分:0)
Signatures的意思是什么?这是订阅吗?或者是应用内商品(可以使用或不使用)? 由于应用内结算v3目前不支持订阅,因此如果您需要该功能,则必须使用v2(https://developer.android.com/google/play/billing/billing_overview.html)。此外,请确保您的项目在开发者控制台上标记为“托管项目”(对于Billing v3)。
对不起,如果我误解了。此外,尝试在IabHelper实例上启用调试模式,这将为您提供更好的问题概述。
mHelper.enableDebugLogging(true, "YOURTAG");
我建议您查看开发者网站上的实施指南: https://developer.android.com/google/play/billing/billing_integrate.html
那里还有示例代码。