> For the complete documentation index, see [llms.txt](https://onestore-dev.gitbook.io/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://onestore-dev.gitbook.io/dev/ai/iap-skill.md).

# IAP SKILL

AI로 원스토어 출시하기에서 소개한 첫 번째 스킬이에요. 여기서는 실제 사용법만 다뤄요.

**IAP SKILL**은 원스토어 인앱결제(IAP) SDK 연동을 AI 코딩 에이전트가 대신 해주는 도구예요. 설치만 하면, 평소 쓰던 AI 도구에게 말로 시키는 것만으로 연동이 끝나요.

<table><thead><tr><th width="289.6689453125">스킬</th><th>언제 쓰나요</th></tr></thead><tbody><tr><td><code>onestore-iap</code></td><td>결제가 아직 없는 앱에 원스토어 인앱결제를 새로 연동할 때</td></tr><tr><td><code>onestore-iap-migrate</code></td><td>구글 플레이 결제가 이미 있는 앱에 원스토어 결제를 더할 때</td></tr></tbody></table>

### 설치

{% stepper %}
{% step %}

#### 준비하기

이미 만들어진 안드로이드 프로젝트와 빌드 환경(Android Studio 등)이 있으면 돼요 — 바이브 코딩으로 만든 프로젝트도 괜찮아요. 설치 스크립트는 bash라서 macOS·Linux는 바로, Windows는 WSL이나 Git Bash가 있어야 해요.
{% endstep %}

{% step %}

#### 설치하기

**저장소**: [github.com/ONE-store/onestore\_iap\_skills](https://github.com/ONE-store/onestore_iap_skills)

{% tabs %}
{% tab title="AI에게 시키기" %}
아래를 복사해서 에이전트에 붙여넣어요.

```
https://github.com/ONE-store/onestore_iap_skills.git 를 임시 폴더에 클론하고, 안에 있는 install 스크립트를
[내 안드로이드 프로젝트 경로]에 실행해서 IAP SKILL을 설치해줘.
끝나면 결과를 한 줄로 알려줘.
```

{% endtab %}

{% tab title="터미널에서 직접" %}

```bash
git clone https://github.com/ONE-store/onestore_iap_skills.git
cd onestore_iap_skills
./install.sh <내 안드로이드 프로젝트 경로>
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### 설치 확인하기

"지금 원스토어 인앱결제 연동 상태 확인해줘"라고 물어보세요. 진단 표가 나오면 설치가 끝난 거예요.
{% endstep %}
{% endstepper %}

### 어디서 쓸 수 있나요

| 지원 도구                    |
| ------------------------ |
| Claude Code              |
| Cursor                   |
| GitHub Copilot (VS Code) |
| Gemini CLI               |
| OpenAI Codex             |
| Grok Build               |

### 무엇을 할 수 있나요

| 상황       | 성격       | 손으로 하면                                | 이 스킬을 쓰면                                   |
| -------- | -------- | ------------------------------------- | ------------------------------------------ |
| 상태 진단    | 🟢 읽기 전용 | 어디서부터 손대야 할지 몰라 문서 전체를 훑어봄            | 프로젝트를 읽어 표와 다음 할 일로 바로 알려줌 (판정마다 파일 링크 포함) |
| SDK 연동   | 🟡 파일 수정 | 매니페스트(앱 설정 파일) · 소스코드에 손으로 붙여넣음       | 같은 순서로 대신 넣어주고, 애매하면 먼저 물어봄                |
| 상품 값 채우기 | 🟡 파일 수정 | 소비성/영구성 헷갈려도 오류 없이 그대로 등록, 나중에 사고로 발견 | "이 상품은 소비성인가요?"처럼 직접 확인시켜 헷갈릴 여지를 없앰       |
| 동작 확인 화면 | 🟡 파일 생성 | 테스트 화면을 직접 만들어야 함                     | 눌러서 확인할 테스트 화면을 대신 만들어 줌 (Compose 프로젝트 기준) |
| 오류 진단    | 🟢 읽기 전용 | 오류 코드를 검색하고 문서와 대조하며 짐작               | 원인 · 재현 조건 · 수정 코드 · 참고 문서까지 짚어서 설명        |
| 릴리즈 전 점검 | 🟢 읽기 전용 | 체크리스트를 처음부터 끝까지 손으로 확인                | 블로커만 앞에 모으고, 통과한 항목은 한 줄로 접어서 보여줌          |

### 직접 써보세요 · 자연어 프롬프트

아래 문장을 그대로 복사해서 에이전트에 붙여넣어 보세요.

| 프롬프트                                  | 결과                                                                                                             |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `원스토어 결제 스킬로 뭐 할 수 있어?`               | 지금 이 스킬로 할 수 있는 일을 전부 정리해서 보여줘요                                                                                |
| `이제 뭐 해야 해?`                          | 지금 상태를 다시 확인하고, 다음에 뭘 요청하면 되는지까지 짚어줘요                                                                          |
| `지금 원스토어 인앱결제 연동 상태 확인해줘`             | 지금까지 뭐가 됐고 뭐가 남았는지 표로 정리하고, 다음 할 일까지 알려줘요                                                                      |
| `원스토어 인앱결제 SDK 연동해줘`                  | 의존성 추가부터 매니페스트 설정, 결제 코드 작성까지 순서대로 진행해줘요                                                                       |
| `[상품ID] 상품이 소비성인지 확인하면서 값 채워줘`        | 헷갈리는 부분은 다시 물어보면서 상품 값을 정확히 채워줘요                                                                               |
| `결제 테스트할 수 있는 화면 만들어줘`                | 로그인부터 구매, 소비/승인까지 눌러볼 수 있는 테스트 화면을 만들어줘요                                                                       |
| `이 오류 왜 나는지 확인해줘` (오류 로그 붙여넣기)        | 예를 들어 `responseCode 7`이 뜨면 "이미 소유 중인 상품"이라는 뜻이에요. 소비 안 된 상품이면 원인과 고치는 법을, 영구성 상품·구독이면 "정상이라 고칠 게 없다"는 것까지 알려줘요 |
| `출시 전에 결제 연동 점검해줘`                    | 출시를 막을 만한 문제만 골라서 보여주고, 나머지는 통과했다고 알려줘요                                                                        |
| `구글 플레이 결제를 쓰는 앱인데 원스토어 결제로 마이그레이션해줘` | 기존 결제 코드를 진단하고, 상품 구성표를 뽑아 확인받은 뒤, 기존 지급 로직에 원스토어 결제를 이어줘요                                                     |

### FAQ

<details>

<summary>이 스킬이 못 하는 게 있나요?</summary>

* **Gradle 동기화와 빌드**: 의존성을 넣어준 다음 동기화는 직접 해야 해요.
* **실제 결제 테스트**: 샌드박스 테스트, 테스트 계정 등록은 개발자센터에서 하는 일이에요.
* **서버 영수증 검증 구현**: 서버 대 서버 검증은 앱이 할 수 없는 일이에요. 서버가 상품을 지급하는 구조라면 코드에 연결 지점만 만들어줘요 — 구매 서명 자체는 공개키를 넘긴 것으로 SDK가 이미 검증해요.
* **동작 확인 화면을 운영 화면으로 고치기**: 확인용 화면이라 거기까지만 해요.
* **빌드 설정 변경**: `compileSdk` · `minSdk` · Java 타깃은 건드리지 않아요.

</details>

<details>

<summary>어떤 버전 기준으로 만들어졌나요?</summary>

`sdk-iap 21.04.00` 기준으로 만들었어요 (유료 앱이라면 `sdk-licensing 2.2.1`도요). 공개 가이드 · 샘플 앱으로 검증했고, 실기기 구매 · 소비 · 승인 · 구독 결제까지 확인을 마쳤어요. 연동되면 `build.gradle.kts`에 `com.onestorecorp.sdk:sdk-iap:21.04.00` 의존성이 추가돼요.

</details>

<details>

<summary>다음엔 뭐가 추가되나요?</summary>

PBL → 원스토어 자동 마이그레이션, `onestore CLI`, 유니티 · 언리얼 · 플러터 엔진 지원 순으로 이어질 예정이에요.

</details>

<details>

<summary>라이선스 키는 안전하게 다뤄지나요?</summary>

네. 라이선스 공개키는 소스에 평문으로 남기지 않고 은닉 처리한 뒤, 원본과 대조까지 하고 알려줘요.

</details>

<details>

<summary>상품 값을 채울 때 뭘 준비해야 하나요?</summary>

"어떤 상품이 소비성인지" 물어봐요 — 정확히 답해야 해요 (잘못 답하면 오류 없이 조용히 깨져요). 실제로 준비해야 하는 값은 3가지예요.

| 값            | 어디서 구하나요                         |
| ------------ | -------------------------------- |
| 라이선스 공개키     | 개발자센터 → 공통정보 → 라이선스 관리           |
| 상품 ID 목록     | 개발자센터 → In-App 정보에 등록한 In-App ID |
| 그중 무엇이 소비성인지 | 앱 기획 — 다시 살 수 있어야 하는 상품이 어느 것인지  |

값이 없어도 코드 배치까지는 진행되고, 값 자리는 비워둔 채로 멈춰요.

</details>

<details>

<summary>동작 확인 화면을 앱에 어떻게 연결하나요?</summary>

먼저 연결할지 물어봐요. 연결한다고 하면 기존 화면을 방해하지 않는 순서로 세 가지 방법(별도 화면 · 지금 화면에 겹치기 · 연결 안 함) 중 하나를 고를 수 있게 제안해요.

</details>

<details>

<summary>상품 조회가 빈 목록으로 나와요</summary>

상품 ID는 개발자센터에 등록된 실제 상품이어야 해요. 등록 전이면 조회 결과가 빈 목록으로 와요. 먼저 상품 등록 가이드를 따라 개발자센터에 등록해 주세요.

</details>

<details>

<summary>설치할 때 옵션이 있나요?</summary>

네, 6가지가 있어요.

| 옵션          | 하는 일                                                                   |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | 무엇을 어디에 복사할지만 보여주고 아무것도 바꾸지 않아요                                        |
| `--user`    | 홈 디렉토리에 설치해 모든 프로젝트에서 써요                                               |
| `--all`     | `.cursor/` · `.github/` · `.gemini/` · `.codex/` · `.junie/`까지 함께 설치해요 |
| `--pull`    | 원격에서 최신 버전을 받아온 뒤 설치해요                                                 |
| `--force`   | 설치본을 직접 고쳤어도 덮어써요                                                      |
| `--offline` | 원격 확인을 건너뛰어요                                                           |

스크립트 없이 `skills/onestore-iap` 폴더를 원하는 도구의 스킬 경로에 직접 복사해도 돼요.

</details>

<details>

<summary>스킬 없이 직접 연동하고 싶어요</summary>

기존 결제 연동 가이드를 그대로 쓰시면 돼요. 이 스킬도 같은 공개 가이드를 기준으로 코드를 배치하니까, 중간에 수동으로 전환해도 이어서 작업할 수 있어요.

</details>

<details>

<summary>재설치했는데 파일이 안 바뀌어요?</summary>

직접 고친 파일은 덮어쓰지 않아요. 어떤 파일인지 안내한 대로 병합한 뒤 다시 실행하거나, 정말 덮어쓰고 싶으면 `--force` 옵션으로 실행해 주세요.

</details>

<details>

<summary>에이전트가 스킬을 안 써요</summary>

"지금 사용할 수 있는 스킬을 나열해줘"라고 먼저 물어보세요.

* **목록에 없다면** 설치 경로 문제예요. 쓰는 도구가 읽는 경로가 맞는지 확인하고, 설치한 뒤 세션을 새로 시작해 주세요.
* **목록에는 있는데 안 쓴다면** 요청에 "원스토어"나 "인앱결제" 같은 말을 넣어보세요. 그래도 직접 코드를 만들려고 하면 "스킬을 써서 해줘"라고 덧붙이면 돼요.

</details>

<details>

<summary>빌드가 안 돼요</summary>

대부분 결제 코드 문제가 아니라 자바(JDK) 설정이에요. 특히 `Unsupported class file major version`, `Android Gradle plugin requires Java …`, `JAVA_HOME is not set` 같은 메시지가 보이면 그쪽이에요. 오류 전문을 그대로 에이전트에게 주면 원인과 고치는 법을 알려줘요.

</details>

<details>

<summary>더 알아보고 싶어요</summary>

* [인앱결제 개발 가이드 (API V7 / SDK V21)](https://onestore-dev.gitbook.io/dev/tools/billing/v21)
* [공개 샘플 앱](https://github.com/ONE-store/onestore_iap_release)
* [ONEconsole](https://dev.onestore.net/dev/)
* [Maven Central](https://repo1.maven.org/maven2/com/onestorecorp/sdk/)

</details>
