Search code examples
google-playmaui

Plugin.InAppBilling.InAppBillingPurchaseException: Unable to process purchase. at Plugin.InAppBilling.InAppBillingImplementation


I am getting below exception when I try to pay for a subscription for play store.

Plugin.InAppBilling.InAppBillingPurchaseException: Unable to process purchase. at Plugin.InAppBilling.InAppBillingImplementation.ParseBillingResult(BillingResult result, Boolean ignoreInvalidProducts) at Plugin.InAppBilling.InAppBillingImplementation.PurchaseAsync(String productSku, String itemType, String obfuscatedAccountId, String obfuscatedProfileId, String subOfferToken) at Plugin.InAppBilling.InAppBillingImplementation.PurchaseAsync(String productId, ItemType itemType, String obfuscatedAccountId, String obfuscatedProfileId, String subOfferToken)

Screenshot:

enter image description here

I have created 3 subscriptions on the play store and activated it. My app was in draft state, so I published a new build on internal testing. But when I try to pay for the subscription I am getting above exception.

My Code:

UserDialogs.Instance.ShowLoading("");
if (IsBusy)
    return;

IsBusy = true;
try
{
    // check internet first with Essentials
    if (Connectivity.NetworkAccess != NetworkAccess.Internet)
        return;

    // connect to the app store api
    var connected = await CrossInAppBilling.Current.ConnectAsync();
    if (!connected)
        return;

    UserDialogs.Instance.HideHud();
    //try to make purchase, this will return a purchase, empty, or throw an exception
    var purchase = await CrossInAppBilling.Current.PurchaseAsync(productId, ItemType.Subscription);

    if (purchase == null)
    {
        //nothing was purchased
        return;
    }

    if (purchase.State == PurchaseState.Purchased)
    {
        Debug.WriteLine("Purchase successfull");
        Debug.WriteLine("Purchase token:>>" + purchase.PurchaseToken);
        Debug.WriteLine("Purchase id:>>" + purchase.Id);
        
    }
    else
    {
        throw new InAppBillingPurchaseException(PurchaseError.GeneralError);
    }
}
catch (InAppBillingPurchaseException purchaseEx)
{
    // Handle all the different error codes that can occure and do a pop up
    Debug.WriteLine("purchaseEx:>>" + purchaseEx);
}
catch (Exception ex)
{
    // Handle a generic exception as something really went wrong
    Debug.WriteLine("exception:>>" + ex);
}
finally
{
    await CrossInAppBilling.Current.DisconnectAsync();
    IsBusy = false;
}

Under manifest added the below permission:

<uses-permission android:name="com.android.vending.BILLING" />

Also added the below meta-data code:

<meta-data
  android:name="com.google.android.play.billingclient.version"
  android:value="6.0.1" />

Do I miss any other set up for the proper working of this? Is the subscriptions needs to published on anywhere? I have activated it. And my app is not published yet, it is only in draft state.


Solution

  • According to your error message, please make sure you have accepted the test invite and opt into the test program invitation in the google play console. Please refer to this detailed steps to enable the test program invitation.