The product you requested is not available for purchase in the application.

I'm having trouble testing my Android billing! Someone help me! I am making an example:

Mainactivity

public class MainActivity extends Activity {
    IabHelper mHelper;

    IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
        public void onQueryInventoryFinished(IabResult result, Inventory inventory){
            if (result.isFailure()) {
                // handle error
                Toast.makeText(getApplicationContext(), "debug: Query occur error!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (result.isSuccess()) {
                Toast.makeText(getApplicationContext(), "debug: Query successfully!", Toast.LENGTH_SHORT).show();
                Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_1").getTitle(), Toast.LENGTH_SHORT).show();
                Toast.makeText(getApplicationContext(), "debug: " + inventory.getSkuDetails("product_2").getTitle(), Toast.LENGTH_SHORT).show();
                return;
            }
        }
    };

    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result, Purchase purchase)
        {
            if (result.isFailure()) {
                Toast.makeText(getApplicationContext(), "debug: purcharge failed", Toast.LENGTH_SHORT).show();
                Log.d("Purchrge", "Error purchasing: " + result);
                return;
            }
            switch (purchase.getSku()){
                case "product_1":
                    Toast.makeText(getApplicationContext(), "debug: purcharge product 1", Toast.LENGTH_SHORT).show();
                    break;
                case "product_2":
                    Toast.makeText(getApplicationContext(), "debug: purcharge product 2", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String base64EncodedPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn9zEWzKIvk/hScbZyrZ6HE4y679DUIQPsxfz0mQJmnv3RYCdd7Zcy+peOtnvRyZzmbrAcYmW1FOsH/3dJwuAmdO+Wd9HyDre+vJwAAQ/QI2WA4lbWSl4jVEr7AX9p3J8pBIy3UKRmhjk/PFN8N1jYDUnnPbZJnSkd6eRpiET+MMUsNHIoCxXzmqXvy3bFh/L61gtqUW/acOkWuXnLkn6rVVBzHUL9YLeVRdnN86DnejJySe8DniiAH0sfMP7wxU2y4GoKPjXDeZFNZr4ii22re7ogpIjEfUEb3+FxtxfbjPFz6hONsy/NofkEDznci5fPk8FtulhVbkJ82Rpiq6BXQIDAQAB";
        mHelper = new IabHelper(this, base64EncodedPublicKey);

    }

    public void query(View view){
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    // Oh noes, there was a problem.
                    Log.d("Billing error: ", "Problem setting up In-app Billing: " + result);
                    Toast.makeText(getApplicationContext(), "debug: IAB is not set up!", Toast.LENGTH_SHORT).show();
                }
                // Hooray, IAB is fully set up!
                Toast.makeText(getApplicationContext(), "debug: Hooray, IAB is fully set up!", Toast.LENGTH_SHORT).show();
                List additionalSkuList = new ArrayList();
                additionalSkuList.add("product_1");
                additionalSkuList.add("product_2");
                mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener);
            }
        });
    }

    public void pay(View view){
        mHelper.launchPurchaseFlow(this, "product_1", 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mHelper != null) mHelper.dispose();
        mHelper = null;
    }
}

activity_main

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Query"
        android:onClick="query"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pay"
        android:onClick="pay"/>
</LinearLayout>

when deploying the application, I have two buttons (Query, Pay). I click the Request button before clicking the Submit button.

Then I get a form with: "the product you requested is not available for purchase

I guarantee that:

I signed the APK in release mode

Application published

Products are active

Anyone help me find our problem?

I am so grateful!

+4
source share
1 answer

, android:versionCode="" AndroidManifest.xml, , , .apk, - .

, .

+8

Source: https://habr.com/ru/post/1605668/


All Articles