HI all, i uploaded an app in dev mode on the Poynt SmartPOS Store, for testing.
For this dev version i had set 2 price plan.
After this, from the store, I chose the app, I activated one of the plans and installed the app on the SmartPos (i have a physical device for testing, i’m not using emulator).
To detect the plans I went into debug mode for the same app, but for this package (which ends with .dev, as also indicated on the Poynt Mission Control panel, it is not possible to call getSubscriptions and it return the error: “java.lang.SecurityException: Cannot access billing for other packages”.
Instead if I use the name of the package without the suffix .dev, the call returns an empty list.
I need to know if there is some kind of limitation for dev version about billing or if the problem is related to debug mode, which actually causes another separate but identical app to be installed in the device.
There is no limitation on the billing for dev apps, you need to create billing plans for .dev variant and then install the .dev variant to access the plans.
Also please do not forget to upload the apk to mission control to associate the appId with a package name to get authorization for the business when installed.
Once the plans are created send an email to devsupport@poynt.co to activate the plans
Thank you for the answer. My problem is that i can’t do the call to the method getSubscription for the package “mypackage.dev” because poynt library detects that it is not the same package (“Cannot access billing for other packages” as i say).
To be more precise, the same app is present on the store in a non-dev version and the associated plans are still in the approval phase. Instead the dev version plans are already uploaded to the store and approved.
You need to call plans for mypackage.dev version from a mypackage.dev app on the device.
Maybe i didn’t explain my problem well.
this is my code, inside the .dev variant of my app:
String requestId = UUID.randomUUID().toString();
mBillingService.getSubscriptions( "sikelia.benfappnexiabbigliamento.dev", requestId, new IPoyntInAppBillingServiceListener.Stub() {
@Override
public void onResponse(final String resultJson, final PoyntError poyntError, String requestId) throws RemoteException {
String result = resultJson;
if (poyntError != null) {
Log.d(TAG, "poyntError: " + poyntError.toString());
}
}
});
In DEBUG mode, the call returns an error : "java.lang.SecurityException: Cannot access billing for other packages".
This is the code of the build file:
android {
compileSdkVersion 27
defaultConfig {
applicationId "sikelia.benfappnexiabbigliamento"
minSdkVersion 19
targetSdkVersion 27
versionCode 10
versionName "1.0.10"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
dev {
initWith debug
applicationIdSuffix ".dev"
}
}
lintOptions {
checkReleaseBuilds false
}
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
This is a screenshot from my mission control panel :
I don’t know how to fix it, is there an error in my code?
is there another way to get subscriptions?, for example with the App ID?
Instead of hardcoding the package name try using the getPackageName() method available in the context to fetch the package name. You could log the package name returned by this method to check the package that is running on the device.
I am guessing the debug mode is installing on attaching to the non dev package
Thank you for the answer and suggestions.
I added this code in build file inside buildTypes section:
debug {
applicationIdSuffix ".dev"
}
and now it works!, i get subscription list. It was related to the package name in debug mode.