Android In app Purchase

I am developing a mobile app and will release both IOS and Android.

So I’m in the process of testing in-app purchases, but on IOS it works fine if I add what I find in other answers.

Build.cs: =

IOSEngine.ini: =

But when tested on Android, neither loading nor purchasing the item responds.

The part I confirmed is …

・ Add “” to the additional authority

・ Enter key store information

・ Enter the game application ID and license key

・ Check to enable Google play support

・ In androidEngine.ini

DefaultPlatformService = GooglePlay

bSupportsInAppPurchasing = True


・ This has been added to Build.cs

if (Target.Platform == UnrealTargetPlatform.Android)
PrivateDependencyModuleNames.AddRange (new string ] {“Core”, “CoreUObject”, “Engine”, “OnlineSubsystem”});
DynamicallyLoadedModuleNames.Add (“OnlineSubsystemGooglePlay”);

・In Gooleplay console, the status of the game service is “Ready to publish”

・Managed items are registered with the same ID as AppStoreConnent and all are valid.

・For the actual machine test, the closed alpha version will be released and the opt-in URL of the internal test version will appear. Next, I added a test user, opened the opt-in URL from the actual machine, installed it, and tested it.

・ The tester’s email address has been added to the license test in the account details.

What’s wrong?
I think there is a problem with the Build.cs or googleplayconsole settings.

I don’t think the BP purchase node is wrong as it is working properly on IOS.

I would like someone who understands the problem to help me. It’s very troubled. Thank you.

< Build.cs>
// Fill out your copyright notice in the Description page of Project Settings.

using UnrealBuildTool;

public class BlankTest : ModuleRules
public BlankTest(ReadOnlyTargetRules Target) : base(Target)



if (Target.Platform == UnrealTargetPlatform.IOS)
PrivateDependencyModuleNames.AddRange(new string] { “Core”, “CoreUObject”, “Engine”, “OnlineSubsystem” });
DynamicallyLoadedModuleNames.AddRange(new string] { “OnlineSubsystemIOS”, “IOSAdvertising” });
else if (Target.Platform == UnrealTargetPlatform.Android)
PrivateDependencyModuleNames.AddRange(new string] { “Core”, “CoreUObject”, “Engine”, “OnlineSubsystem” });

if (Target.Platform == UnrealTargetPlatform.Android)
PrivateDependencyModuleNames.AddRange(new string] { “Core”, “CoreUObject”, “Engine”, “OnlineSubsystem” });


PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string] { “Core”, “CoreUObject”, “Engine”, “InputCore” });

PrivateDependencyModuleNames.AddRange(new string] { });

// Uncomment if you are using Slate UI
// PrivateDependencyModuleNames.AddRange(new string] { “Slate”, “SlateCore” });

// Uncomment if you are using online features
// PrivateDependencyModuleNames.Add(“OnlineSubsystem”);

// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true

I recently got Android IAP working (make payments/read) but not the check for player purchases (the node does not work).

Did you add the SHA-1 certificate to the Google API Console? You need to swap between the Debug certificate and the actual certificate you use depending on if you are testing with a shipping build or are in debug. Also I never opted in to Google Ap signing (not sure if that affects things).

I’d suggest you run the ADB logger to see what errors are being thrown out from your phone (do a search to see how done). I run the command ADB logcat > myLogFile.txt to get the logging info in windows

As far as I can tell IAP is not usable for Android (don’t know about iOS) unless you have a means to check what purchases players have made. For example if the player changes phone, uninstalls the game or after you release a game patch you should be able to recredit them whatever purchases they have made.

At this point I can not find a way to get checking for purchases working in 4.25.