Android In-App Billing v3: Not receiving signatures

倾然丶 夕夏残阳落幕 提交于 2019-12-18 11:51:36

问题


I'm working on a In App Store on my app, I used AndroidBillingLibrary by robotmedia, when I purchase android.test.purchased using the library the response is OK, all the data I need is in there.

The problem is, when I switched to Android In-App Billing v3 this is all received from the response, no signatures.

{"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"}

I followed exactly this sample https://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample but there's no signatures. I even run the given sample app by Google but no luck.

I put my Base64-encoded RSA public key correctly in mHelper = new IabHelper(this, myPublicKey);

and this is my purchase code 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);
            }
        }
    };

Somehow my mPurchaseFinishedListener is not receiving anything after the purchase but the protected void onActivityResult(int requestCode, int resultCode, Intent data) is receiving something but there's no signature.

Any solutions to this? It's weird that v2 is receiving signatures and v3 is not.


回答1:


You don't get signatures for the test IDs, android.test.purchased, etc.

You'll receive signatures with real purchases.




回答2:


As was said by Rawkode, you no longer get signatures for test purchases (android.test.*). I took the dive and uploaded my app to the market place (just didn't publish it) using my real products.

Low and behold signatures started to be returned! I recommend amending any server side validation you are using to skip the signature check when the data contains an android.test.* item id.




回答3:


What you mean by Signatures? Is that Subscriptions? Or an in-app item (consumable or not)? Because in-App Billing v3 does not support subscriptions at the moment, if you want that feature you have to use v2 (https://developer.android.com/google/play/billing/billing_overview.html). Also, make sure your item is marked as "a managed item" on your developer console (for Billing v3).

Sorry if I misunderstood. Also, try enabling the debug mode on your IabHelper instance, this will provide you a better overview of your problem.

mHelper.enableDebugLogging(true, "YOURTAG");

I suggest taking a look at the implementation guide on the Developers website: https://developer.android.com/google/play/billing/billing_integrate.html

There's also sample code there.



来源:https://stackoverflow.com/questions/14272012/android-in-app-billing-v3-not-receiving-signatures

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!