# 상품ID 생성 규칙 가이드

## 개요 <a href="#undefined" id="undefined"></a>

* 결제 스토어 또는 결제수단(구글, 애플, 스팀 등)에 상품ID를 등록할 때는 스토어 제약과 HYBE IM 내부 재무 처리 등을 목적으로 유니크해야하고, 게임 및 상품이 구분되어야 합니다.
* 기존에 라이브되어 서비스 중인 게임은 해당 가이드에서 제외됩니다.<br>

## 상품ID 생성 규칙 <a href="#undefined" id="undefined"></a>

* <mark style="color:red;">**스토어(결제수단)구분코드**</mark>**\_**<mark style="color:red;">**게임구분자**</mark>\_<mark style="color:red;">**게임에서정의한상품ID**</mark>
  * 언더바로 필드 구분
  * 최대 64자(애플 기준으로 사용)
  * 숫자 및 소문자, 언더바만 사용하고 특수기호 사용 금지(구글 대문자 허용X)
  * 구글에 런칭한 경우에는 게임 구분자를 패키지명을 사용하는 것도 허용
* 스토어 구분 코드
  * 글자 수 제한 때문에 빌링 시스템의 payment 또는 app store 코드를 사용하지 않고 줄여서 사용<br>

    | **스토어(또는 결제수단)**                        | **코드(prefix)** | **예**                                                                  |
    | --------------------------------------- | -------------- | ---------------------------------------------------------------------- |
    | 구글                                      | google         | <p>google\_gamecode\_ruby01<br>google\_com.hybeim.testgame\_ruby01</p> |
    | 애플                                      | apple          | <p>apple\_gamecode\_ruby01<br>apple\_com.hybeim.testgame\_ruby01</p>   |
    | 스팀                                      | steam          | <p>steam\_gamecode\_ruby01<br>steam\_com.hybeim.testgame\_ruby01</p>   |
    | 엑솔라                                     | xsolla         | <p>xsolla\_gamecode\_ruby01<br>xsolla\_com.hybeim.testgame\_ruby01</p> |
    | 갤럭시 스토어                                 | galaxy         | <p>galaxy\_gamecode\_ruby01<br>galaxy\_com.hybeim.testgame\_ruby01</p> |
    | 마이카드                                    | mycard         | <p>mycard\_gamecode\_ruby01<br>mycard\_com.hybeim.testgame\_ruby01</p> |
    | 코다샵                                     | coda           | <p>coda\_gamecode\_ruby01<br>coda\_com.hybeim.testgame\_ruby01</p>     |
    | 유니핀                                     | unipin         | <p>unipin\_gamecode\_ruby01<br>unipin\_com.hybeim.testgame\_ruby01</p> |
    | PG                                      | pg             | pg\_gamecode\_ruby01                                                   |
    | [Appcharge](https://www.appcharge.com/) | appcharge      | appcharge\_gem\_123                                                    |
    | Epic Games                              | epic           | epic\_gem\_1                                                           |
    | ONE Store                               | onestore       | onestore\_gem\_1                                                       |

## 참고 <a href="#undefined" id="undefined"></a>

### 주요 결제 스토어(결제 수단)의 최대 글자 수 <a href="#undefined" id="undefined"></a>

* 스팀과 PG는 상품관리 기능을 제공하지 않아서 빌링 시스템에서 관련 기능을 구현하여 제공 중

| **스토어/결제수단** | **상품ID(제품ID)**                           | **상품명(이름)**                            | **상품 설명**                                       | **비고**                                                                                                                                   |
| ------------ | ---------------------------------------- | -------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 구글           | 152                                      | 55                                     | 200                                             |                                                                                                                                          |
| 애플           | **64**                                   | 30                                     | 45                                              |                                                                                                                                          |
| 스팀           | <p>200</p><ul><li>빌링 기준 최대 200</li></ul> | <p>50</p><ul><li>빌링 기준 최대 50</li></ul> | 미 지원                                            | <ul><li><p>상품ID</p><ul><li>빌링에서 uint32로 맵핑해서 스팀과 통신</li></ul></li><li><p>상품명</p><ul><li>스팀쪽에서 최대 128까지 허용하지만 빌링에서 제한</li></ul></li></ul> |
| 엑솔라          | 255                                      | <p>50</p><ul><li>빌링 기준 최대 50</li></ul> | <p>50</p><ul><li>엑솔라 가이드 없어서 보수적으로 50</li></ul> |                                                                                                                                          |
| PG           | 200                                      | 50                                     | 50                                              | <ul><li>토스와 같은 PG를 이용한 결제에 사용 </li><li>빌링 시스템에 상품 정보가 등록되어야 판매 가능</li></ul>                                                              |
| Appcharge    | 200                                      | 200                                    | N/A                                             | Appcharge 측에서 공식 정보가 없어서 내부 관리용 최대 길이로 제약                                                                                                |
| Epic Games   | <p>200</p><ul><li>빌링 기준 최대 200</li></ul> | <p>64</p><ul><li>오퍼 이름 최대 64</li></ul> | N/A                                             | Epic Games는 상품을 오퍼라는 개념으로 관리하고 있는데, 게임에서 연동 및 관리를 편하게 하도록 상품ID로 추상화해서 기능 제공                                                              |
| ONE Store    | 136                                      | 50                                     | N/A                                             | 상품ID는 소문자(a-z), 숫자(0-9), 밑줄(\_), 점(.)으로만 구성되어야 하며 소문자 또는 숫자로 시작                                                                          |

<br>
