11.4.1 Server-Side Support: ECSV Library
■ Authenticating Tickets
Authentication of tickets can only be performed on the server side. Do not call the nn::ec::EcApplet::RequestInitializeSession function to connect to the Nintendo eShop server at any point during the sequence that starts with ticket authentication and ends with providing the service. If the service is designed on the assumption that the session is successfully initialized before communication with the game server starts, users would be unable to use the service at certain times, such as when the Nintendo eShop server is going through server maintenance and is unavailable. Also, the Nintendo eShop server is a shared infrastructure. Unnecessary connections place a load on it and may impact the overall provision of services.
■ Management of License Information within Servers
When managing license information per user within servers, you must create entries in such a way that users can be uniquely identified. You must also include environment information such as the development environment, Lotcheck environment, or production environment in the entries you create. This is to prevent work done in the development environment from affecting users in the production environment.
You can get environment information either by decoding the authentication token (when using NEX authentication), or the service token (when using Nintendo Network ID authentication). See the "Independent Servers" chapter in the CTR-NEX Manual and the CTR Account System Developer's Guide for details.
Create user entries via one of the following methods, depending on which version of the CTR-SDK you are using.
- If using a version of CTR-SDK earlier than the 7.x series:
Nintendo recommends using the account ID obtained from the nn::ec::CTR::GetAccoundId function for creating server entries. However, note that the account ID obtained from the nn::ec::CTR::GetAccountId function, and the accountId member of the ECExtendedTicketInfo structure obtained from the ECSV library's EC_VerifyExtendedTicket function can sometimes be different values. Therefore, if you create entries using the nn::ec::CTR::GetAccountId function, you must not search for the entries using the account ID obtained from the ticket envelope.
- If using CTR-SDK 7.x series or later:
In CTR-SDK 7.x and later, the nn:ec::CTR::GetAccountId function is no longer available. Nintendo recommends using the principal ID from the Nintendo Network ID when creating entries.
11.4.1.1 Prohibition Against Connecting to Nintendo eShop Server When Using a Service
Guideline Item |
When service items are being used, the application must not connect to the Nintendo eShop server. |
---|---|
Software to Be Tested |
Applications that use service items via the ECSV library. |
Test Method |
|
Pass/Fail Determination |
Passes if in step 3, the EC applet initialization screen is not displayed. |
11.4.1.2 Creating Entries within Servers
Guideline Item |
You must create entries that allow users to be identified uniquely on servers, and include environment information such as the development, Lotcheck, or production environments in the entries. |
---|---|
Software to Be Tested |
Applications that meet all of the following conditions:
|
Test Method |
Check the source code. |
Pass/Fail Determination |
Passes if the entries include environment information, which allows users to be uniquely identified. |
11.4.1.3 Account IDs Used for Entry Searching
Guideline Item |
Applications must not search for entries using account IDs obtained from ticket envelopes. |
---|---|
Software to Be Tested |
Applications that meet all of the following conditions:
|
Test Method |
Check the source code. |
Pass/Fail Determination |
Passes if the application does not use account IDs obtained from ticket envelopes to search entries. |
11.4.2 Using Service Items: ECSV Library
■ Display of Amount of Time/Uses of Subscription Tickets and Consumable Tickets on the Final Purchase Screen
If your application allows purchase of subscription tickets and/or consumable tickets, failure to display the amount of time/uses remaining for that item on the final purchase screen could violate European law. In titles for the European market, you must always configure the nn::ec::CTR::ServiceDescription structure so that the amount of time/uses remaining is displayed within the final purchase screen in the EC applet. If you use consumable tickets to implement a subscription service that has an expiration element, you must display the amount of time remaining instead of uses.
11.4.2.1 Display of Amount of Time/Uses on the Final Purchase Screen
Guideline Item |
Applications that allow purchase of subscription tickets and/or consumable tickets must display the amount of time/uses of the items the user is purchasing on the final purchase screen of the EC applet. |
---|---|
Software to Be Tested |
Applications that meet all of the following conditions:
|
Test Method |
Purchase a subscription ticket or consumable ticket, and check the final purchase screen of the EC applet. |
Pass/Fail Determination |
Passes if the amount of time/uses for the item you are purchasing is displayed. |