Age Verification
LI PASS provides a standard compliance solution for games that have integrated LI PASS, allowing games to configure compliance services directly without having to integrate the APIs mentioned in this article. For games that are using LI PASS, reach out to the Player Network representative to learn more details.
For games not following the standard LI PASS compliance workflow, this article introduces the methods that Player Network provides for compliance services and how to use them.
Prerequisites
- Integrate the SDK.
- Integrate the Player Network authentication service.
- Fill in the file Backend Configurations for Minors according to the Regional Compliance Configurations, then pass the file to the compliance team.
For games planning to include multi-language support, a separate Terms of Service and Privacy Policy in each language has to be provided as well, by including their respective URLs in the Backend Configurations for Minors file to be submitted.
URLs for each of the languages should be set by appending ?lang_type=
and the respective language code to the end of the URL for the agreement.
Sample URLs:
Terms of Service in English: https://www.example.com/TermsofService.html?lang_type=en
Privacy Policy in Chinese (Simplified): https://www.example.com/PrivacyPolicy.html?lang_type=zh-Hans
Set up age verification for the game app
Callbacks
Add the following callbacks for the age verification service.
- Unity
- Unreal Engine
API | Function |
---|---|
AddComplianceResultObserver | Adds the ComplianceResult callback to manage the callbacks of ComplianceQueryUserInfo, ComplianceMultiSetStatusWithAdultCheckStatus, ComplianceMultiSetStatusWithAge, ComplianceMultiSetStatusWithBirthday, ComplianceSetParentCertificateStatus, ComplianceSendEmail, ComplianceVerifyCreditCard, ComplianceVerifyRealName. |
RemoveComplianceResultObserver | Deletes the ComplianceResult callback. |
API | Function |
---|---|
SetComplianceResultObserver | Sets the ComplianceResult callback for the age verification service. |
GetComplianceResultObserver | Gets the ComplianceResult callback for the age verification service. |
OnComplianceResult_Implementation | For the ComplianceResult callback to manage the callbacks of ComplianceQueryUserInfo, ComplianceMultiSetStatusWithBirthday, ComplianceMultiSetStatusWithAdultCheckStatus, ComplianceMultiSetStatusWithAge, ComplianceSetParentCertificateStatus, ComplianceSendEmail, ComplianceVerifyCreditCard, ComplianceVerifyRealName. |
Set player profile
As compliance requirements differ by region, including factors such as the legal age of majority and data protection laws, developers first need to set up the player's user profile, which is used to determine the specific compliance process required for each player. Therefore, the game should prompt players to submit their regional information.
Developers can call ComplianceInitWithParams
with game ID, OpenID, token, channel ID, and country/region as input parameters to set the player's user profile. The user profile can be used to retrieve the legal age of majority for the player's region based on previously submitted regional configurations. Together with the player's actual age, the game can determine if the player is required to continue with the age or real-name verification process.
- Unity
- Unreal Engine
bool succ = INTLAPI.ComplianceInitWithParams(gameID, openID, token, channelID);
bool succ = UINTLSDKAPI::ComplianceInitWithParams(gameID, openID, token, channelID);
Set region and player adult status
A player's adult status is set using different methods depending on their country or region.
For countries or regions with country codes 840 (United States), 826 (United Kingdom), 170 (Colombia), and 356 (India), developers should prompt players to enter their birthday, then call ComplianceMultiSetStatusWithBirthday
to save the region, year, month, and day information. The player's adult status will be determined by their birthday and the legal age of majority in their region.
- Unity
- Unreal Engine
string openID = "123456789";
string token = "qwewerasd123456789qwewer";
string region = "413",
string birthday = "1970-01-01",
int certificate_type = 1;
int channelID = 131
INTLAPI.ComplianceMultiSetStatusWithBirthday(openID,token,region,birthday,certificate_type,"{}", channelID);
FString openID = "123456789";
FString token = "qwewerasd123456789qwewer";
FString region = "413",
FString birthday = "1970-01-01",
int certificate_type = 1;
int channelID = 131
UINTLSDKAPI::ComplianceMultiSetStatusWithBirthday(openID,token,region,birthday,certificate_type,"{}", channelID);
For mobile devices with country code 410 (South Korea), verification of a player's age group is required. First call ComplianceMultiSetStatusWithAge
to save the region for the particular player, then pass 13, 16, or 20 as the specific age value in years for the age groups below 14 years old, 14-18 years old, and over 18 years old respectively. The player's adult status will be determined by the passed age value and the legal age of majority in their region.
- Unity
- Unreal Engine
string openID = "123456789";
string token = "qwewerasd123456789qwewer";
string region = "410",
int age = 18,
int certificate_type = 1;
int channelID = 131
ComplianceApiCall.Instance.ComplianceMultiSetStatusWithAge(openID,token,region,age,certificate_type,"{}", channelID);
FString openID = "123456789";
FString token = "qwewerasd123456789qwewer";
FString region = "410",
int age = 18,
int certificate_type = 1;
int channelID = 131
UINTLSDKAPI::ComplianceMultiSetStatusWithAge(openID,token,region,age,certificate_type,"{}", channelID);
For PCs with country code 410 (South Korea), according to Korean compliance requirements, real-name verification is required. First call ComplianceMultiSetStatusWithAdultCheckStatus
to save the region for the particular player, then pass the default value unknown as the adult status. After obtaining the player's actual age through real-name verification, the player's adult status will be determined by their actual age and the legal age of majority in their region.
- Unity
- Unreal Engine
string openID = "123456789";
string token = "qwewerasd123456789qwewer";
string region = "410",
int adult_check_status = 0,
int compare_age = 18,
int certificate_type = 1;
int channelID = 131
INTLAPI.ComplianceMultiSetStatusWithAdultCheckStatus(openID,token,region,adult_check_status,compare_age,certificate_type,"{}", channelID);
FString token = "qwewerasd123456789qwewer";
FString region = "410",
int adult_check_status = 0,
int compare_age = 18,
int certificate_type = 1;
int channelID = 131
UINTLSDKAPI::ComplianceMultiSetStatusWithAdultCheckStatus(openID,token,region,adult_check_status,compare_age,certificate_type,"{}", channelID);
For all other countries or regions, developers have the option to prompt the player to confirm if they are an adult, and then call ComplianceMultiSetStatusWithAdultCheckStatus
to directly set the player's adult status.
- Unity
- Unreal Engine
string openID = "123456789";
string token = "qwewerasd123456789qwewer";
string region = "410",
int adult_check_status = 1,
int compare_age = 18,
int certificate_type = 1;
int channelID = 131
INTLAPI.ComplianceMultiSetStatusWithAdultCheckStatus(openID,token,region,adult_check_status,compare_age,certificate_type,"{}", channelID);
FString token = "qwewerasd123456789qwewer";
FString region = "410",
int adult_check_status = 1,
int compare_age = 18,
int certificate_type = 1;
int channelID = 131
UINTLSDKAPI::ComplianceMultiSetStatusWithAdultCheckStatus(openID,token,region,adult_check_status,compare_age,certificate_type,"{}", channelID);
Query player profile
The compliance process required for players varies by region. Developers should call ComplianceQueryUserInfo
to return the ComplianceResult
data structure, which is used to confirm the compliance process applicable to the player.
For example, each country has its own legal age of majority, and games also have minimum age restrictions corresponding to their age ratings. Developers can call ComplianceQueryUserInfo
to return the ComplianceResult
of the logged in player. This information can be used to verify if the player's country/region imposes age restrictions for gaming. If no age restrictions exist, the player can directly enter the game. Otherwise, continue to verify whether the player is an adult based on the country's legal age of majority. If the player is below the age rating assigned for the game, the game exits immediately. If the player is of legal age, enter the game directly. If the player is a minor but is above the age rating, they will have to obtain Parental consent specific to their country or region before they can enter the game.
Parental consent
For underage players, Player Network provides three different methods for parents to confirm their identity and grant their consent. Verification methods can be determined through the certificate_type
from the AuthResult
API for Unity SDK and Unreal Engine SDK.
Self-verification
For underage players opting for self-verification, a popup should be displayed for the player to confirm that they have obtained their parent's consent to play the game.
If confirmation has been obtained, call ComplianceSetParentCertificateStatus
to set parental consent as received. After obtaining consent, the player's status will be updated, the game can call the ComplianceQueryUserInfo
API to query player's updated status and determine if the player can enter the game.
If the confirmation is denied, exit the game.
Email verification
For underage players opting to use email verification to obtain parental consent, a popup should be displayed for the player to enter their parent's name and email address. The ComplianceSendEmail
API should then be called to send a parental consent email, for the parent to verify their identity and grant their consent.
If consent is granted, LI PASS will update the player's status, and the game can call the ComplianceQueryUserInfo
API to query the player's updated status to determine if a new compliance process should be started.
If consent is denied, LI PASS will call EnterGameFailed
to inform the game that verification has failed by setting retCode == INTLErrorCode.CANCEL
in INTLAuthResult
. The player will receive a notification informing them of the result, and the wait time before verification can be attempted again. The game should determine the follow-up steps according to the game platform:
- Mobile, PC (independent release): Reopen the login interface.
- PC (Steam/Epic), console: Exit the game.
For more details about error codes such as INTLErrorCode.CANCEL
, see the file INTLErrorCode.cs
.
Credit card verification
For underage players opting to use credit card verification, call ComplianceVerifyCreditCard
to open the credit card verification webpage to continue the process.
If verification is successful, set the parental consent status as received and enter the game directly.
If the verification fails, exit the game.
Sync LI PASS status
It is recommended to adopt the standard LI PASS compliance process. If developers insist on developing their own compliance process but fail to incorporate the steps mentioned in this section, issues may arise. Specifically, when players try to link their account to LI PASS without completing the LI PASS compliance process, their LI PASS compliance status could overwrite the game's compliance status. This may lead to a conflict between the LI PASS compliance status and the game's compliance status, requiring developers to manually resolve the matter.
It's important to note that the parameters for LI PASS compliance functions and the game's compliance functions may vary significantly. The INTLAuthResult
or FINTLAuthResult
contains all authentication parameters, including those relevant to compliance status. For more information, please contact the Player Network representative.
Developers choosing to completely customize their compliance workflow without using any functions from the SDK, but still wish to allow players to link to LI PASS, they are required to integrate the following steps into their customized compliance logic. Developers could take the following parental consent process as an example to implement similar logic to other compliance processes.
Once a player logs in, verify whether their account is linked to LI PASS and whether the LI PASS age verification process is completed, that is, has_bind_li
is true and at the same time, the player is identified as an adult, or the player is identified as underage but completed the parental consent process, meaning that parent_certificate_status
is 1. These properties can be found in the need_notify_rsp
and get_status_rsp
in the extra_json
of AuthResult
.
If has_bind_li
is false, the player can proceed to the game's compliance workflow. However, if has_bind_li
is true, indicating that the account is linked to LI PASS, then their LI PASS age verification status must be verified. If the player is underaged, their parental consent status must be verified.
- If
parent_certificate_status
is -1, the parent refuses certification, the player cannot link LI PASS, and will continue to use the current third-party or guest account to play the game. - If
parent_certificate_status
is 1, the parent authentication is successful and the player account is successfully linked to LI PASS. - If
parent_certificate_status
is 0 or 10, the player has either not initiated the parental consent process, or the process is incomplete. Therefore, the game will have to initiate or continue with the parental consent process. First, callGetLIUidAndTokenForAdultCert
to set the LI PASS UID and token for the current login channel, then callComplianceInitWithParams
to save the player's game ID, OpenID, token, channel ID. ThechannelID
parameter for theComplianceInitWithParams
API has to be set to the ID of the third-party channel or 131 (LI PASS channel ID) according to the situation. Before the parental consent process, the game needs to callComplianceMultiSetStatusWithBirthday
,ComplianceMultiSetStatusWithAge
, orComplianceMultiSetStatusWithAdultCheckStatus
depending on the player's current location, then save their region, birthday or adult status. After saving the above information, the game can continue with the Parental consent process specific to the region after receiving the callback.
Set up age verification for the website
Step 1: Install the JavaScript SDK
Install the SDK package from the production environment when launching the game. The SDK package from the test environment is only used for integration testing.
Games can install the SDK from npm
or CDN
.
- npm
- CDN
$ npm install @intlsdk/compliance-api
// SDK package from the test environment
<script src="https://test-common-web.intlgame.com/sdk-cdn/compliance-api/index.umd.js"></script>
// SDK package from the production environment
<script src="https://common-web.intlgame.com/sdk-cdn/compliance-api/index.umd.js"></script>
Step 2: Instantiate the SDK
Set env
to the test environment during the integration testing and set env
to the corresponding production environment when launching the game.
const complianceApi = new IntlgameComplianceApi({
env: "test",
});
Parameter | Type | Description | Remark |
---|---|---|---|
env | string | SDK environment For more information, see SDK Environment (env). | Required |
Step 3: Implement the age verification service
Set player region
As the age of majority differs by region, developers need to first prompt the player to enter their regional information. This information should then be set using the setUserProfile
function.
Save player status
To verify a player's adult status, developers should prompt the player to enter their birthday. This information is then saved by calling the commitBirthday
function. The saved information is used to calculate the player's actual age and compare it with the age of majority in the player's region to determine if the player is considered an adult.
Query player status
Each country has its own legal age of majority, and games also have minimum age restrictions corresponding to their age ratings. Call queryUserStatus
and use the information returned to verify whether the player's country/region has age restrictions for playing games. If the country/region does not have any age restriction, the player can enter the game directly. Otherwise, games need to verify whether the player is adult or minor based on the legal age of majority of the country/region. If the player is at or older than the age of majority, the player can enter the game. If the player is younger than the age of majority, games need to verify the parental consent status to determine if the player can enter the game.