Skip to main content

Account Deletion

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, follow the instructions in this article to implement the account deletion function.

Prerequisites

  1. Establish the prerequisites for account deletion. Players should meet these conditions before they can proceed with the account deletion.
  2. Set a cooling-off period for different countries or regions according to compliance requirements. This period allows players to cancel their account deletion requests. After it passes, the account is deleted.
  3. Share the official game name for each region and the email address for account deletion requests with the compliance team. The official game name helps players identify you, reducing the risk of your emails being blocked or marked as spam. This email address is for sending and receiving account deletion-related emails.

Set up account deletion for the game app

Image: Account deletion workflow

Access the account deletion HTML5 page

caution

Players must log in so that when the encryptEnable parameter is set to true when calling the OpenUrl method, login state data can be automatically added to the URL.

Call OpenUrl to open WebView and access the account deletion HTML5 page.

URL request GET parameters
ParameterTypeDescriptionRemark
pageIndexintThe HTML5 page to access
0: The account deletion page
2: The page to withdraw consent to privacy policy
3: The page to withdraw consent to player agreement
Required
intl_clusterstringThe deployment cluster URL
The base64UR encoding of the INTL_URL which is configured in INTLConfig.ini.
Required
user_namestringUsername (Recommended to be the in-game character name. If an empty string was passed, the character name will appear to be blank in the account deletion email.) Required
area_iduintGame area ID (pass a null string when none exists)Required
zone_iduintGame zone ID (pass a null string when none exists)Required
lang_typestringLanguage Type (RFC 4646), such as "en". For details, see Language Type Definitions.Required
Login state data

When parameter encryptEnable is true in OpenUrl, the following login state data will be automatically added to the link. For more information, see the OpenUrl method for Unity or UE.

ParameterTypeDescriptionRemark
gameidstringGame ID assigned by Player NetworkRequired
channelidintLogin channelRequired
osstringTerminal Operating System
1: Android
2: iOS
3: Web
4: Linux
5: Windows
6: Switch
Required
encodeparamstringEncrypted fields:
Player Network SDK OpenID, Player Network SDK token, third-party channel OpenID, etc.
Required
seqstringSerial numberOptional

For example, if a player is logged in to the game and developers call OpenUrl with encryptEnable = true to open a QQ page, the opened URL is https://www.qq.com?gameid=11&channelid=3&os=1&ts=1634707615&sdk_version=1.11.00.487&seq=11-3b61c8315b91d319eaa5622d72c474ec7ee395cee116d142a74b3455607e3d21-1634707615-14&encodeparam=C524E9DE27EB02E552CFBA9C54BFA301317DF66F49C5C02ED708D582B80A1B74DE8F0723731F0D66EBD12095E244097DC3AFAE1203A8FCD2A2821C1DEC9CD3AE254BAD99C93B095E8F39FCE414FBFB0A79F9EA8DF2E1B309190E5A8721A5AC8132E8E89506CDBA1ACBB1C17AA794A658502C5CCA6B25E6105049EABB44C408700FE2713FDD327217AF45A226F46FFD02.

Request sample
note

Test environment URL: test-common-web.intlgame.com
Production environment URL: common-web.intlgame.com

string delete_account_url = "test-common-web.intlgame.com";
int pageIndex = 0;
string intl_cluster = "aHR0cHM6Ly90ZXN0LmludGxnYW1lLmNvbQ";
string user_name = "xiaooang%20Tx";
string lang_type = "en";
uint area_id = 1;
uint zone_id = 1;
bool encryptEnable = true;
bool isFullScreen = false;
string url = $"https://{delete_account_url}/account-deletion/index.html?pageIndex={pageIndex}&intl_cluster={intl_cluster}&user_name={user_name}&lang_type={lang_type}&area_id={area_id}&zone_id={zone_id}";
INTLAPI.OpenUrl(url, INTLWebViewOrientation.Auto, isFullScreen, encryptEnable);
Access sample
Production environment:
https://common-web.intlgame.com/account-deletion/index.html?pageIndex=0&area_id=1&zone_id=1&lang_type=en&intl_cluster=aHR0cHM6Ly90ZXN0LmludGxnYW1lLmNvbQ&gameid=11&channelid=6&user_name=xiaooang%20Tx&os=1&ts=1617245219&sdk_version=1.7.00.28&seq=11-805b892eed1065983850b0d87f7fe706c862473b579703b711cae6a0d6ffefd4-1617245219-201&encodeparam=97C45AE512DDEDE0F1ED0E2E4FB3C31F8B96E406110A8D6E2F464859350DC359A8E94B25DA42454829B5336D8CD6ADDBCD13C66081391E96EC2F938A1F9F6DE429EBEF3B65D0560D10C428C21E204686D09CE0B64B2BA1E51E732FD05300249C5F118E8316B0A65D700C9AC28310A458
Testing environment:
https://test-common-web.intlgame.com/account-deletion/index.html?pageIndex=0&area_id=1&zone_id=1&lang_type=en&intl_cluster=aHR0cHM6Ly90ZXN0LmludGxnYW1lLmNvbQ&gameid=11&channelid=6&user_name=xiaooang%20Tx&os=1&ts=1617245219&sdk_version=1.7.00.28&seq=11-805b892eed1065983850b0d87f7fe706c862473b579703b711cae6a0d6ffefd4-1617245219-201&encodeparam=97C45AE512DDEDE0F1ED0E2E4FB3C31F8B96E406110A8D6E2F464859350DC359A8E94B25DA42454829B5336D8CD6ADDBCD13C66081391E96EC2F938A1F9F6DE429EBEF3B65D0560D10C428C21E204686D09CE0B64B2BA1E51E732FD05300249C5F118E8316B0A65D700C9AC28310A458

HTML5 callback

Once the account deletion request is submitted, the page will call the JS API of the Player Network SDK and execute the jsCallNative method. The cooling-off period and account deletion status are determined at this stage based on the country or region configurations that the game has previously set.

For Apple accounts, Apple's account deletion API is called without requiring any intervention from the game.

  • If the account deletion request is successful, the callback returns a JSON string:

    {"type":"request_delete_account_success","value":"Request for game account cancellation submitted successfully"}

    When type is request_delete_account_success, the account deletion application was successful. In this case, value is a fixed string.

  • If the account deletion request fails, the callback returns a JSON string:

    {"type":"request_delete_account_fail","value":"$code|$seq_id|$message"}

    When type is request_delete_account_fail, the request failed. In this case, value has three pieces of information (separated with |): $code is the error code (a number), $seq_id is the serial number of the request (used by backend APIs to locate errors), and $message is the error message.

Player information deletion protocol

The Player Network account deletion service notifies the game to delete player information through IDIP. The game must implement a IDIP player game information deletion API. It is recommended that the game integrates with the API based on the IDIP account deletion protocol.

IDIP account deletion protocol

{gameserver_dns}:{port}/{path}?idip_sign=xxx

Request body

FieldTypeDescriptionRemark
headObjectHeader informationRequired
bodyObjectBody informationRequired

Request body "head" parameters

FieldTypeDescriptionRemark
iCmdidintCommand word, value: 101Required
iSeqidintData stream message no.Required
ServiceNamestringService name ("GDOS" extended alternate field)Required
dtSendTimestringFormat: YYYY-MM-DD HH:mm:ssRequired
iVersionintVersion no., a fixed value set by the callerRequired
AuthenticateString(32)Reserved fieldRequired
iSourceUint32Request source valueRequired

Request body "body" parameters

FieldTypeDescriptionRemark
OpenIdString(64)Player Network SDK user IDRequired
SerialStringRequest no., generated by the callerRequired
AreaIduintGame main serverNot required
PlatIduintPlatformNot required
ZoneIduintAreaNot required

Return body

FieldTypeDescriptionRemark
headObjectHeader informationRequired
bodyObjectBody informationRequired

Return body "head" parameters

FieldTypeDescriptionRemark
iCmdidintCommand word, value: 100Required
iSeqidintData stream message no.Required
ServiceNamestringService name ("GDOS" extended alternate field)Required
dtSendTimestringFormat: YYYY-MM-DD HH:mm:ssRequired
iVersionintVersion no., a fixed value set by the callerRequired
AuthenticateString(32)Reserved fieldRequired
iSourceUint32Request source valueRequired

Return body "body" parameters

FieldTypeDescriptionRemark
iRetintGame return codeRequired
ErrorInfostringInformation Returned from Game-sideRequired

Player last login time protocol

The Player Network account deletion service uses IDIP to query player information logs (must be implemented by the game).

It is recommended that the game integrates with the API based on the IDIP query last login time protocol.

IDIP query last login time protocol

{gameserver_dns}:{port}/{path}?idip_sign=xxx

Request body

FieldTypeDescriptionRemark
headObjectHeader informationRequired
bodyObjectBody informationRequired

Request body "head" array content

FieldTypeDescriptionRemark
iCmdidintCommand word, value: 101Required
iSeqidintData stream message no.Required
ServiceNamestringService name ("GDOS" extended alternate field)Required
dtSendTimestringFormat: YYYY-MM-DD HH:mm:ssRequired
iVersionintVersion no., a fixed value set by the callerRequired
AuthenticateString(32)Reserved fieldRequired
iSourceUint32Request source valueRequired

Request body "body" array content

FieldTypeDescriptionRemark
OpenIdString(64)Player Network SDK user IDRequired
AreaIduintGame main serverNot required
PlatIduintPlatformNot required
ZoneIduintAreaNot required

Response body

FieldTypeDescriptionRemark
headObjecthead infoRequired
bodyObjectbody infoRequired

Response body "head" array content

FieldTypeDescriptionRemark
iCmdidintCommand word, value: 101Required
iSeqidintData stream message no.Required
ServiceNamestringService name ("GDOS" extended alternate field)Required
dtSendTimestringFormat: YYYY-MM-DD HH:mm:ssRequired
iVersionintVersion no., a fixed value set by the callerRequired
AuthenticateString(32)Reserved fieldRequired
iSourceUint32Request source valueRequired

Response body "body" array content

FieldTypeDescriptionRemark
iRetintGame return codeRequired
ErrorInfostringInformation Returned from Game-sideRequired
LoginTimeuint64The time the player last logged in to the game, in the Unix timestamp formatRequired

Set up account deletion for the website

Step 1: Install the JavaScript SDK

caution

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 either npm or CDN.

$ npm install @intlsdk/dsr-api
//SDK package from the test environment
<script src="https://test-common-web.intlgame.com/sdk-cdn/dsr-api/index.umd.js"></script>

//SDK package from the production environment
<script src="https://common-web.intlgame.com/sdk-cdn/dsr-api/index.umd.js"></script>

Step 2: Instantiate the SDK

const dsrApi = new IntlgameDSRApi({
env: "test",
channelID: 52,
gameID: 11,
accountPlatType: 52,
appID: "",
});
ParameterTypeDescriptionRemark
envstringSDK environment
For more information, see Retrieve cluster information
Required
channelIDnumberChannel ID of supported third-party channels
For more information, see Login Channel and ChannelID Relationship
Required for third-party channels
appIDstringApp ID
ACCOUNT_APP_ID assigned by Player Network Console
Optional
accountPlatTypenumberPlatform type (channel ID) of the custom account
ACCOUNT_PLAT_TYPE assigned by Player Network Console
Required for custom accounts
gameIDnumberPlayer Network unique game IDRequired

Step 3: Implement the account deletion service

Image: Account deletion