# Codeless IAP の設定

> Codeless IAPを使用して、最小限のスクリプトでアプリケーション内課金を設定およびテストし、サポートされているストア間で設定を合理化します。

Codeless IAPでは、最小限のスクリプトでUnityエディター インターフェースを使用してアプリケーション内課金を実装できます。基盤となるトランザクションプロセスを処理します。そのため、複雑な購入コードを記述しなくても、機能するゲーム内ストアを作成できます。

プレイヤーが IAP ボタンをタップすると、Unity は関連する製品の購入フローを開始し、アプリストアと通信して結果を返します。

> **Note:**
>
> コードレスIAP機能は、プラットフォーム ネイティブの支払いプロバイダーに対してのみ使用できます。Codeless IAPは、D2C(ダイレクト トゥ コンシューマー)支払いプロバイダーとの統合には互換性がありません。

> **Note:**
>
> 購入フローはコードレスですが、購入処理 (例えば、購入が成功した後にプレイヤーにアイテムを付与するなど) をハンドルするスクリプトを指定する必要があります。詳細については、[フルフィルメントの購入](#purchase-fulfillment) を参照してください。

## Codeless IAP の設定##set-up-codeless-iap

Codeless IAP をプロジェクトに実装するには、エディターで以下の手順を実行します。

1. IAP ボタンをシーンに追加します。エディターで IAP ボタンを作成および設定して、購入を開始またはトランザクションを復元します。詳細は、『 [Codeless IAP ボタン設定](./codeless-iap-button-configuration.md) 』を参照してください。
2. IAP カタログで製品を定義します。エディターの製品カタログで購入できるすべての製品のリスト:エディターの製品カタログで購入できるすべての製品のリスト。詳細については、[エディターでのカタログ](./create-catalog-in-editor.md)の作成 を参照してください。
3. 自動初期化を設定します。Unity Iap を自動的に初期化するように設定し、ゲームの開始時に課金システムの準備ができるようにします。
   * IAP Catalog ウィンドウで、ウィンドウの下部にある **Automatically initialize UnityIAPServices** を選択します。

> **Note:**
>
> **Automatically initialize UnityIAPServices** オプションは、最初の製品をカタログに追加すると表示されます。

> **Note:**
>
> IAP ボタンまたはリスナーで自動初期化を使用できます。自動初期化を有効にすると、ゲームの起動時に SDK が起動します。スクリプトで SDK を手動で初期化する場合は、自動初期化を有効にしないでください。エラーが発生する可能性があります。

## 購入処理##purchase-fulfillment

購入が成功すると、Unity は購入処理スクリプトを呼び出して、購入したコンテンツをプレイヤーに配信します。

1. シーンビューで、**IAP ボタン**を選択します。
2. Inspector で、**Product ID** ドロップダウンを開き、リンクする製品を選択します。
3. 購入処理を処理する機能を作成するか、この機能を提供するアセットをインポートします。以下のコードサンプルを参照してください。
4. コンポーネントとしてゲームオブジェクトに購入処理スクリプトを適用します。
5. IAP ボタンを選択した状態で、Inspector の **IAP ボタン (スクリプト)** コンポーネントに移動します。
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
    }
}
```
