11.4 Service Items: ECSV Library

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.

Note:

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
  1. Purchase a service item.
  2. Exit the purchase flow, and then disconnect from the Nintendo eShop server.
  3. Play with the service item purchased in step 1.
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:

  • The application supports service items that use the ECSV library.
  • Applications that need to distinguish between users on the server side for purposes such as user management.
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:

  • The application uses service items via the ECSV library.

  • The application supports service items and uses an SDK version earlier than the CTR-SDK 7.x series.
  • The application uses the account ID obtained from the nn::ec::CTR::GetAccountId function as its basis for creating server entries.
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:

  • Applications that allow purchase of subscription tickets or consumable tickets via the ECSV library.
  • Applications for the Europe market.
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.

 


CONFIDENTIAL