Billingservice Android - No signature

穿精又带淫゛_ 提交于 2019-12-01 17:46:17

问题


I have followed to following great tutorial at : http://blog.blundell-apps.com/simple-inapp-billing-payment/

I have done everything the tutorial says and have read everything 3 times over again but still i am not receiving a signature in the intent.getStringExtra(INAPP_SIGNATURE) in onReceive() : BillingReceiver.java

which makes my app crash because the app cant compare signatures to verify if the purchase is done correctly.

This is how my BillingReceiver looks like:

public class BillingReceiver extends BroadcastReceiver {

    private static final String TAG = "BillingService";

    @Override
    public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.i(TAG, "Received action: " + action);
    if (ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
        String signedData = intent.getStringExtra(INAPP_SIGNED_DATA);
        String signature = intent.getStringExtra(INAPP_SIGNATURE);
        Log.e(TAG, "<!-- SIGNATURE : "+ intent.getExtras().getString("inapp_signature"));


        Log.i(TAG, "<!-- SIGNATURE : "+intent.getStringExtra(INAPP_SIGNATURE));

        purchaseStateChanged(context, signedData, signature);
    } else if (ACTION_NOTIFY.equals(action)) {
        String notifyId = intent.getStringExtra(NOTIFICATION_ID);
        notify(context, notifyId);
    } else if (ACTION_RESPONSE_CODE.equals(action)) {
        long requestId = intent.getLongExtra(INAPP_REQUEST_ID, -1);
        int responseCodeIndex = intent.getIntExtra(INAPP_RESPONSE_CODE, C.ResponseCode.RESULT_ERROR.ordinal());
        checkResponseCode(context, requestId, responseCodeIndex);
    } else {
       Log.e(TAG, "unexpected action: " + action);
    }
    }

    private void purchaseStateChanged(Context context, String signedData, String signature) {
            Log.i(TAG, "purchaseStateChanged got signedData: " + signedData);
            Log.i(TAG, "purchaseStateChanged got signature: " + signature);
            BillingHelper.verifyPurchase(signedData, signature);
    }

    private void notify(Context context, String notifyId) {
            Log.i(TAG, "notify got id: " + notifyId);
            String[] notifyIds = {notifyId};
            BillingHelper.getPurchaseInformation(notifyIds);
    }

    private void checkResponseCode(Context context, long requestId, int responseCodeIndex) {
            Log.i(TAG, "checkResponseCode got requestId: " + requestId);
            Log.i(TAG, "checkResponseCode got responseCode: " + C.ResponseCode.valueOf(responseCodeIndex));
    }
}

回答1:


Is the primary account on your test device the same as your Google Play developer account?

If not you won't get signatures on the android.test.* static responses unless the app has been published on Play before.

See the table at http://developer.android.com/guide/market/billing/billing_testing.html#static-responses-table for the full set of conditions.



来源:https://stackoverflow.com/questions/9790125/billingservice-android-no-signature

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