# 코드리스 IAP 설정

> 코드리스 IAP를 사용하면 최소한의 스크립팅 사용하여 인앱 구매를 설정하고 테스트하여 지원되는 스토어 전반에서 설정을 간소화할 수 있습니다.

코드리스 IAP를 사용하면 스크립팅 최소화하면서 Unity 에디터 인터페이스를 사용하여 인앱 구매를 구현할 수 있습니다. 기본 거래 프로세스를 처리하므로 복잡한 구매 코드를 작성하지 않고도 작동하는 게임 내 스토어를 만들 수 있습니다.

플레이어가 IAP 버튼을 누르면 Unity는 관련 제품의 구매 흐름을 시작하고 앱 스토어 통신한 후 결과를 반환합니다.

> **Note:**
>
> 코드리스 IAP 기능은 플랫폼 네이티브 결제 제공업체에서만 사용할 수 있습니다. 코드리스 IAP는 D2C(Direct-to-Consumer) 결제 제공업체와의 연동과 호환되지 않습니다.

> **Note:**
>
> 구매 플로는 코드가 없지만, 구매 이행을 처리하는 스크립트를 제공해야 합니다(예: 성공적인 구매 후 플레이어에게 아이템 허용). 자세한 내용은 [Purchase fullfilment](#purchase-fulfillment)를 참조하십시오.

## 코드리스 IAP 설정##set-up-codeless-iap

프로젝트에 코드리스 IAP를 구현하려면 에디터에서 다음 단계를 완료하십시오.

1. 씬에 IAP 버튼을 추가합니다. 에디터에서 IAP 버튼을 생성하고 설정하여 구매를 시작하거나 거래를 복원합니다. 자세한 내용은 [코드리스 IAP 버튼 설정](./codeless-iap-button-configuration.md)을 참조하십시오.
2. IAP 카탈로그에서 상품을 정의합니다. 에디터의 제품 카탈로그에서 구매 가능한 모든 상품을 나열합니다. 에디터의 제품 카탈로그에서 구매 가능한 모든 상품을 나열합니다. 자세한 내용은 에디터에서 [카탈로그 만들기](./create-catalog-in-editor.md)를 참조하십시오.
3. 자동 초기화 설정: 게임이 시작될 때 구매 시스템이 준비되도록 Unity IAP를 자동으로 초기화하도록 설정합니다.
   * IAP 카탈로그 창 하단의 **Automatically initialize UnityIAPServices**를 선택합니다.

> **Note:**
>
> **Automatically initialize UnityIAPServices** 옵션은 첫 번째 상품을 카탈로그에 추가한 후에 표시됩니다.

> **Note:**
>
> IAP 버튼 또는 리스너로 자동 초기화를 사용할 수 있습니다. Auto-initialize를 활성화하면 게임이 실행될 때 SDK가 시작됩니다. 스크립트에서 수동으로 SDK를 초기화하는 경우에는 자동 초기화를 활성화하지 마십시오. 이렇게 하면 오류가 발생할 수 있습니다.

## 구매 이행##purchase-fulfillment

구매가 성공하면 Unity는 구매 이행 스크립트를 호출하여 구매한 콘텐츠를 플레이어에게 전달합니다.

1. 씬 뷰에서 **IAP 버튼**을 선택합니다.
2. 인스펙터에서 **제품 ID** 드롭다운을 열고 연결할 제품을 선택합니다.
3. 구매 이행을 처리하는 함수를 생성하거나 이 기능을 제공하는 에셋을 임포트합니다. 아래 코드 샘플을 참고하십시오.
4. 구매 이행 스크립트를 게임 오브젝트에 컴포넌트로 적용합니다.
5. IAP 버튼을 선택한 상태에서 인스펙터의 **IAP Button (Script)** 컴포넌트로 이동합니다.
6. **On Order Pending (Product)** 목록에서 새 이벤트를 추가하려면 \*\*+\*\*를 선택합니다.
7. 구매 이행 스크립트가 포함된 게임 오브젝트를 이벤트 필드로 드래그한 다음 드롭다운 메뉴에서 이행 함수를 선택합니다.

> **Note:**
>
> 구매를 진행하려면 해당 앱 스토어 제품 카탈로그를 구성해야 합니다.

다음 코드 샘플은 올바른 상품을 구매했는지 확인하여 플레이어에게 제공합니다.

```cs
public void ExampleProductPurchased(Product product)
{
    // Check if the correct product has been passed
    if (product.definition.id == "com.example.product")
    {
        // Grant product to player
    }
    else
    {
        // Handle unexpected product
    }
}
```
