Describe the bug
On a Huawei Mate X7 running microG, applications that rely on in-app purchases or subscription checks (e.g., FaceApp) fail to restore or recognize existing PRO licenses/subscriptions. The billing service (com.android.vending) returns an empty purchase list (INAPP_PURCHASE_ITEM_LIST=[]) despite the Google account having a valid, active subscription.
To Reproduce
Steps to reproduce the behavior:
- Set up a Huawei Mate X7 with microG and Aurora Store (or install an app via APK).
- Log in to microG with a Google account that has a valid, paid subscription for an app (e.g., FaceApp PRO).
- Install the application (e.g., FaceApp).
- Launch the application.
- Observe that the app does not automatically recognize the PRO features and shows a paywall or "Restore Purchases" prompt.
- (Optional) Tap "Restore Purchases" – the operation will likely fail or report no purchases found.
- Observe the logcat output for
Finsky/Phonesky and Billing services.
Expected behavior
Valid license
Actual behavior
- Logs show no attempt by microG/Phonesky to determine the "preferred billing account" from installer data.
- The billing service responds with an empty purchase list (
INAPP_PURCHASE_ITEM_LIST=[]).
- The application remains in a "free" or "unlicensed" state.
Screenshots
N/A
System
- Device: Huawei Mate X7
- Android Version: [Fill in your version, e.g., Android 12 / HarmonyOS 4.x]
- microG Services Core Version: [Fill in your version, e.g., 0.3.0.233515]
- microG Companion / Phonesky Version: [Fill in your version]
Relevant Logs (Huawei Mate X7 with microG)
Empty purchase lists returned by Phonesky billing service:
04-16 20:10:27.617 23690 23704 D Billing : getPurchasesExtraParams(apiVersion=24, packageName=io.faceapp, type=inapp, continuationToken=null, extraParams=Bundle[{billingClientSessionId=-2548996740595174335, playBillingLibraryVersion=8.0.0, enablePendingPurchases=true}])
04-16 20:10:27.617 23690 23704 D Billing : Result: Bundle[{INAPP_PURCHASE_ITEM_LIST=[], DEBUG_MESSAGE=, RESPONSE_CODE=0, INAPP_PURCHASE_DATA_LIST=[], INAPP_DATA_SIGNATURE_LIST=[]}]
04-16 20:10:27.619 23690 23711 D Billing : getPurchasesExtraParams(apiVersion=24, packageName=io.faceapp, type=subs, continuationToken=null, extraParams=Bundle[{billingClientSessionId=-2548996740595174335, playBillingLibraryVersion=8.0.0, enablePendingPurchases=true}])
04-16 20:10:27.620 23690 23711 D Billing : Result: Bundle[{INAPP_PURCHASE_ITEM_LIST=[], DEBUG_MESSAGE=, RESPONSE_CODE=0, INAPP_PURCHASE_DATA_LIST=[], INAPP_DATA_SIGNATURE_LIST=[]}]
04-16 20:18:45.612 9185 9206 D Billing : getPurchasesExtraParams(apiVersion=24, packageName=io.faceapp, type=subs, continuationToken=null, extraParams=Bundle[{billingClientSessionId=5600665361842319971, playBillingLibraryVersion=8.0.0, enablePendingPurchases=true}])
04-16 20:18:45.618 9185 9206 D Billing : Result: Bundle[{INAPP_PURCHASE_ITEM_LIST=[], DEBUG_MESSAGE=, RESPONSE_CODE=0, INAPP_PURCHASE_DATA_LIST=[], INAPP_DATA_SIGNATURE_LIST=[]}]
04-16 20:18:45.613 9185 11881 D Billing : getPurchasesExtraParams(apiVersion=24, packageName=io.faceapp, type=inapp, continuationToken=null, extraParams=Bundle[{billingClientSessionId=5600665361842319971, playBillingLibraryVersion=8.0.0, enablePendingPurchases=true}])
04-16 20:18:45.618 9185 11881 D Billing : Result: Bundle[{INAPP_PURCHASE_ITEM_LIST=[], DEBUG_MESSAGE=, RESPONSE_CODE=0, INAPP_PURCHASE_DATA_LIST=[], INAPP_DATA_SIGNATURE_LIST=[]}]
04-16 20:10:27.634 1767 1932 D ActivityManager: setPrivilegeType serviceRecord: ServiceRecord{48ecb16 u0 com.google.android.gms/org.microg.gms.auth.loginservice.GoogleLoginService}, interfaceDescriptor: android.accounts.IAccountAuthenticator, shouldSetPrivType: false
04-16 20:10:27.634 24783 24849 D GmsAuthenticator: getAuthToken: Account {name=XXXXXXXXX, type=com.google}, oauth2:https://www.googleapis.com/auth/googleplay https://www.googleapis.com/auth/accounts.reauth, Bundle[{androidPackageName=com.android.vending, callerPid=23690, callerUid=10198}]
04-16 20:10:27.636 24783 24849 D GmsAuthManager: peekAuthToken: com.android.vending:38918a453d07199354f8b19af05ec6562ced5788:oauth2:https://www.googleapis.com/auth/googleplay https://www.googleapis.com/auth/accounts.reauth
04-16 20:18:45.625 1795 1913 D ActivityManager: setPrivilegeType serviceRecord: ServiceRecord{663f240 u0 com.google.android.gms/org.microg.gms.auth.loginservice.GoogleLoginService}, interfaceDescriptor: android.accounts.IAccountAuthenticator, shouldSetPrivType: false
04-16 20:18:45.628 9096 9662 D GmsAuthenticator: getAuthToken: Account {name=XXXXXXXXX, type=com.google}, oauth2:https://www.googleapis.com/auth/googleplay https://www.googleapis.com/auth/accounts.reauth, Bundle[{androidPackageName=com.android.vending, callerPid=9185, callerUid=10198}]
04-16 20:18:45.631 9096 9662 D GmsAuthManager: peekAuthToken: com.android.vending:38918a453d07199354f8b19af05ec6562ced5788:oauth2:https://www.googleapis.com/auth/googleplay https://www.googleapis.com/auth/accounts.reauth
04-16 20:10:27.809 10978 11118 I PlayCore: UID: [10338] PID: [10978] IntegrityService : requestIntegrityToken(IntegrityTokenRequest{nonce=eVp4VDdrb0xPdUNMNXVxTHdEOVNiZzllVUxJcjJkQ3BnczZKME04TzdSYw==, cloudProjectNumber=554161020816, network=null})
04-16 20:10:28.687 23690 23690 D IntegrityService: requestIntegrityToken() success for io.faceapp)
04-16 20:18:46.117 12148 12274 I PlayCore: UID: [10338] PID: [12148] IntegrityService : requestIntegrityToken(IntegrityTokenRequest{nonce=TWFaaEZrY0lOWVhDdjM1RjZRTkUwWDgzbGhaa0h4VURyRVdlU1N0UDJobw==, cloudProjectNumber=554161020816, network=null})
04-16 20:18:46.853 9185 9185 D IntegrityService: requestIntegrityToken() success for io.faceapp)
Contrasting Logs (Official Google Play Services on Honor 20 Pro)
These logs are provided for comparison to show the expected behavior. On a standard GMS device, Finsky explicitly determines the correct billing account via installer data.
04-16 20:45:44.647 15929 15977 I Finsky : [827] io.faceapp: Account determined from installer data - [8_OSEtGFSOfTV8FlfNP8cmifYxUg3prfpxnUMzlgmrE]
04-16 20:45:44.648 15929 15977 I Finsky : [827] Billing preferred account via installer for io.faceapp: [8_OSEtGFSOfTV8FlfNP8cmifYxUg3prfpxnUMzlgmrE]
Describe the bug
On a Huawei Mate X7 running microG, applications that rely on in-app purchases or subscription checks (e.g., FaceApp) fail to restore or recognize existing PRO licenses/subscriptions. The billing service (
com.android.vending) returns an empty purchase list (INAPP_PURCHASE_ITEM_LIST=[]) despite the Google account having a valid, active subscription.To Reproduce
Steps to reproduce the behavior:
Finsky/PhoneskyandBillingservices.Expected behavior
Valid license
Actual behavior
INAPP_PURCHASE_ITEM_LIST=[]).Screenshots
N/A
System
Relevant Logs (Huawei Mate X7 with microG)
Empty purchase lists returned by Phonesky billing service:
Contrasting Logs (Official Google Play Services on Honor 20 Pro)
These logs are provided for comparison to show the expected behavior. On a standard GMS device, Finsky explicitly determines the correct billing account via installer data.