---
title: "Unity SDKでカスタムペイウォールの購入を有効にする"
description: "Adapty SDKをUnityのカスタムペイウォールに統合してアプリ内課金を有効にします。"
---

このガイドでは、カスタムペイウォールへのAdapty統合方法を説明します。ペイウォールの実装を完全にコントロールしながら、Adapty SDKがプロダクトの取得、新規購入の処理、過去の購入の復元を担当します。

:::important
**このガイドはカスタムペイウォールを実装する開発者向けです。** 購入を最も簡単に有効にする方法をお探しの場合は、[Adapty ペイウォールビルダー](unity-quickstart-paywalls)をご利用ください。ペイウォールビルダーを使えば、ノーコードのビジュアルエディターでペイウォールを作成でき、購入ロジックはAdaptyが自動処理します。また、アプリを再公開することなく異なるデザインをテストできます。
:::

## 始める前に \{#before-you-start\}

### プロダクトのセットアップ \{#set-up-products\}

アプリ内課金を有効にするには、次の3つの重要な概念を理解する必要があります：

- [**プロダクト**](product) – ユーザーが購入できるもの（サブスクリプション、消耗型アイテム、永続アクセス）
- [**ペイウォール**](paywalls) – どのプロダクトを提供するかを定義する設定。Adaptyではペイウォールがプロダクトを取得する唯一の方法ですが、この設計によりアプリコードを変更せずにプロダクト、価格、オファーを変更できます。
- [**プレースメント**](placements) – アプリ内でペイウォールを表示する場所とタイミング（`main`、`onboarding`、`settings`など）。ダッシュボードでプレースメントにペイウォールを設定し、コード内でプレースメントIDを使ってリクエストします。これにより、A/Bテストの実施や異なるユーザーへの異なるペイウォール表示が簡単になります。

カスタムペイウォールを使う場合でも、これらの概念を理解しておくことが重要です。基本的に、アプリで販売するプロダクトを管理するための手段です。

カスタムペイウォールを実装するには、**ペイウォール**を作成して**プレースメント**に追加する必要があります。この設定によりプロダクトを取得できます。ダッシュボードで何をすべきかを理解するには、[こちら](quickstart)のクイックスタートガイドをご覧ください。

### ユーザーの管理 \{#manage-users\}

バックエンド認証の有無にかかわらず利用できます。

ただし、Adapty SDKは匿名ユーザーと識別済みユーザーを異なる方法で扱います。詳細を確認し、ユーザーを適切に扱うために[識別クイックスタートガイド](unity-quickstart-identify)をお読みください。

## ステップ1. プロダクトを取得する \{#step-1-get-products\}

カスタムペイウォール用のプロダクトを取得するには、次の手順が必要です：

1. `getPaywall`メソッドに[プレースメント](placements)IDを渡して`paywall`オブジェクトを取得します。
2. `getPaywallProducts`メソッドを使ってこのペイウォールのプロダクト配列を取得します。

```csharp showLineNumbers
using AdaptySDK;

void LoadPaywall() {
    Adapty.GetPaywall("YOUR_PLACEMENT_ID", (paywall, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        Adapty.GetPaywallProducts(paywall, (products, productsError) => {
            if (productsError != null) {
                // Handle the error
                return;
            }

            // Use products to build your custom paywall UI
        });
    });
}
```

## ステップ2. 購入を受け付ける \{#step-2-accept-purchases\}

ユーザーがカスタムペイウォールでプロダクトをタップしたら、選択されたプロダクトを引数に`makePurchase`メソッドを呼び出します。購入フローが処理され、更新されたプロファイルが返されます。

```csharp showLineNumbers
using AdaptySDK;

void PurchaseProduct(AdaptyPaywallProduct product) {
    Adapty.MakePurchase(product, (result, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        switch (result.Type) {
            case AdaptyPurchaseResultType.Success:
                var profile = result.Profile;
                // Purchase successful, profile updated
                break;
            case AdaptyPurchaseResultType.UserCancelled:
                // User canceled the purchase
                break;
            case AdaptyPurchaseResultType.Pending:
                // Purchase is pending (e.g., user will pay offline with cash)
                break;
        }
    });
}
```

## ステップ3. 購入を復元する \{#step-3-restore-purchases\}

アプリストアは、サブスクリプションのあるすべてのアプリに対して、ユーザーが購入を復元できる手段を提供することを要求しています。

ユーザーが復元ボタンをタップしたら`restorePurchases`メソッドを呼び出します。購入履歴がAdaptyと同期され、更新されたプロファイルが返されます。

```csharp showLineNumbers
using AdaptySDK;

void RestorePurchases() {
    Adapty.RestorePurchases((profile, error) => {
        if (error != null) {
            // Handle the error
            return;
        }

        // Restore successful, profile updated
    });
}
```

## 次のステップ \{#next-steps\}

---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="tip">
ご質問やお困りのことがあれば、[サポートフォーラム](https://adapty.featurebase.app/)をご覧ください。よくある質問への回答を見つけたり、ご自身の質問を投稿することができます。チームとコミュニティがサポートいたします！
</Callout>

ペイウォールをアプリに表示する準備が整いました。[App Storeサンドボックス](test-purchases-in-sandbox)または[Google Play Store](testing-on-android)でテスト購入を実施して、ペイウォールからテスト購入を完了できることを確認してください。

次に、[ユーザーが購入を完了したかどうか確認](unity-check-subscription-status)して、ペイウォールを表示するか有料機能へのアクセスを許可するかを判断します。