---
title: PayPal
description: PayPal を NexCMP に接続してウォレット入金を有効化 — REST アプリの認証情報、Webhook、サンドボックスでのテスト、保存された PayPal アカウントに対応。
url: https://nexcmp.com/ja/docs/billing/paypal/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# PayPal

> **管理画面での場所:** Finance › Payment channels › PayPal (`/payments/paypal`)。有効・無効の切り替えと手数料の設定は Finance › Payment channels › Fees & limits (`/payments/fees`) にあります。

## 動作内容 {#what-it-does}

お客様が PayPal の残高、銀行口座、または PayPal に登録されたカードを使用して、USD ウォレットに入金できるようにします。また、お客様が [automatic top-up](https://nexcmp.com/ja/docs/billing/auto-top-up/) のために NexCMP に PayPal アカウントを記憶させることも可能です。PayPal を好むお客様のために [Stripe](https://nexcmp.com/ja/docs/billing/stripe/) と併用してください。

## 要件 {#requirements}

| 項目 | 要件 |
|---|---|
| PayPal アカウント | USD を受け取ることができる PayPal **ビジネス**アカウント。 |
| REST アプリ | PayPal Developer Dashboard (**Apps & Credentials**) 内の 1 つの REST アプリ。**Client ID** と **Client secret** を提供します。テストには **Sandbox** タブを、本番には **Live** タブを使用します。 |
| ネットワーク | インターネットから到達可能な HTTPS（PayPal が Webhook を呼び出します）、および `api-m.paypal.com`（本番）または `api-m.sandbox.paypal.com`（サンドボックス）のポート 443 へのアウトバウンドアクセス。 |
| 権限 | REST アプリには返金および Webhook の機能が必要です。**Check** ダイアログで、両方のスコープが存在するかどうかを確認できます。 |
| 依存関係 | なし。 |

## インフラストラクチャの準備 {#prepare-the-infrastructure}

1. ビジネスアカウントで [developer.paypal.com](https://developer.paypal.com) にサインインし、**Apps & Credentials** を開きます。
2. **Sandbox**（テスト）または **Live**（本番）を選択し、**Create App** をクリックします。「NexCMP」などの名前を付けます。
3. アプリの **Client ID** と **Secret** をコピーします。
4. テストの際は、**Testing Tools › Sandbox Accounts** を使用して *Personal*（購入者）サンドボックスアカウントを見つけるか、新規作成します。
5. Webhookを自分で作成する必要はありません。NexCMPは**Create webhook**ボタンで自動的に作成します。

## NexCMP での接続 {#connect-in-nexcmp}

1. **Finance › Payment channels › PayPal** (`/payments/paypal`) を開きます。
2. **API keys**で、**Mode**を選択します: `live` (リアルマネー、`api-m.paypal.com`) または `sandbox` (`api-m.sandbox.paypal.com`)。
3. **Client ID** (20文字以上) と **Client secret**を貼り付けます。
4. **Check**をクリックします。入力した認証情報をテストし (保存は不要です)、接続、App ID、モード、返金およびWebhookのスコープの有無、トークンの有効期間を報告します。
5. **Save**をクリックします。
6. **Webhook**カードでURLが`https://<your-domain>/v1/billing/paypal/webhook`であることを確認し (`https`である必要があります)、**Create webhook**をクリックして確認します。NexCMPはPayPalに11件のイベントを指定してWebhookの作成または更新を要求し、返された**Webhook ID**を保存します。このボタンは**保存済み**のキーを使用するため、編集したばかりの場合は先に保存してください。
7. もう一度**Check**をクリックします。**Webhook**の行に「exists, 11 events」と表示されるはずです。
8. **Fees & limits**を開き、**PayPal**を有効にし、**PayPal fee %** (デフォルトは4.4) と **PayPal fixed fee (cents)** (デフォルトは30) を料金体系に合わせて設定し、**Save channels & fees**をクリックします。

![サンドボックスモードとテスト用認証情報が入力されたPayPalページ](https://nexcmp.com/ja/docs/images/billing/paypal-01-keys.webp)


### Webhookイベント {#webhook-events}

NexCMPは次の11件のイベントを登録します: `CHECKOUT.ORDER.APPROVED`、`PAYMENT.CAPTURE.COMPLETED`、`PAYMENT.CAPTURE.PENDING`、`PAYMENT.CAPTURE.DECLINED`、`PAYMENT.CAPTURE.REFUNDED`、`PAYMENT.CAPTURE.REVERSED`、`CUSTOMER.DISPUTE.CREATED`、`CUSTOMER.DISPUTE.UPDATED`、`CUSTOMER.DISPUTE.RESOLVED`、`RISK.DISPUTE.CREATED`、`CHECKOUT.PAYMENT-APPROVAL.REVERSED`。

各WebhookはPayPalの署名検証APIを呼び出して検証され、1回のみ保存されてべき等に処理されます。NexCMPはWebhookボディ内の金額を信用せず、キャプチャをクレジットする前にPayPalからキャプチャを取得します。

## 確認 {#verify}

1. **Mode** を `sandbox` のままにします。ポータルで **Billing › Deposit** を開き、**PayPal** を選択して **Continue on PayPal**（または PayPal ボタン）をクリックし、sandbox の購入者アカウントでログインします。
2. 支払いを承認します。ポータルに戻ると残高が増加し、支払いは**Finance › Billing › Top-ups**の下に *Completed* として表示されます。
3. **Payment channels › Gateway events › PayPal & USDT**を開きます。`PAYMENT.CAPTURE.COMPLETED`イベントがリストに表示されます。
4. すべてが正常に動作したら、**Mode**を`live`に切り替え、本番用の認証情報を入力して**Save**をクリックし、再度**Create webhook**をクリックします (サンドボックスと本番のWebhookは別々です)。

## 制限と注意事項 {#limits-notes}

- **支払い完了の仕組み。** 注文はUSDで作成されます。顧客が承認した後、**サーバー**がそれをキャプチャし (べき等なリクエストID)、ウォレットに正確に1回クレジットします。顧客がブラウザを閉じた場合の安全網として、Webhookと10分ごとに実行されるリコンシリエーション (照合) ジョブが機能します。
- **保留中および破棄された注文。** 注文は12時間オープン状態を維持できます。顧客が持てる保留中の注文は最大5件までです (サーバーは`too_many_pending`、HTTP 429を返します)。24時間経過してもキャプチャされない注文は失敗としてマークされます。
- **Webhookが設定されていない場合。** Webhook IDが保存されるまで、パネルはすべてのPayPal Webhookに対してHTTP 503を返します。ポータル経由のキャプチャや10分ごとのリコンシリエーションによりウォレットへの入金は行われますが、PayPalがWebhookで報告する内容 (異議申し立て、取り消し、遅延キャプチャ) は適用されません。**Create webhook**をクリックしてください。
- **保存されたPayPalアカウント。** 顧客がPayPalの保存を選択した場合 (または[automatic top-up](https://nexcmp.com/ja/docs/billing/auto-top-up/)を有効にする初回デポジットを完了した場合)、PayPalはその支払いトークンをVaultに保存します。NexCMPは識別子とPayPalのメールアドレスのみを保持します。[Saved payment methods](https://nexcmp.com/ja/docs/billing/saved-payment-methods/)を参照してください。
- **返金と異議申し立て**はStripeと同様に処理されます。返金リクエストは**Finance › Payouts › Card refunds**で承認され、異議申し立ては顧客のアカウントをブロックし、解決するまでプリペイドサービスの利用を停止します。
- **手数料。** PayPalの手数料は自動取得されません。設定したパーセンテージと固定手数料によって、顧客に表示される金額とクレジットされる金額が決まります。実際の料金は国によって異なります (フォームにはベトナム向けに4.4 %、米国向けに3.49 %のヒントが表示されます)。

## トラブルシューティング {#troubleshooting}

| 症状 | 原因 | 対処法 |
|---|---|---|
| 「Client ID too short」のエラーが表示される | 20文字未満が貼り付けられている場合 | 完全なクライアント ID をコピーします。 |
| "Webhook URL は https である必要があります" | URL が `http://` で入力されています | 公開用の `https://` ドメインを使用してください。 |
| チェックで接続エラーが報告されます | モードの間違い (サンドボックスでのライブキー、またはその逆)、シークレットの間違い、アウトバウンドアクセスの不足 | **Mode** をキーの種類に合わせ、サーバーから `curl -I https://api-m.paypal.com` をテストします。 |
| Refund / webhooks のスコープが「いいえ」を示しています | REST アプリに必要な機能がありません | PayPal Developer Dashboard のアプリで機能を有効にします。 |
| バナー「PayPal key set, NO webhook」 | Webhook ID がありません | **Create webhook** をクリックします。 |
| チェックで "Webhook not found" | Webhook が PayPal で削除されたか、別のアプリに属しています | **Create webhook** をもう一度クリックします。 |
| PayPal が支払いを拒否したことが顧客に通知されます | PayPal がその資金源を拒否しました | 別の支払いソースを選択するようお客様にご依頼ください。 |
| 顧客に "Too many pending requests" が表示されます | 5 件のオープンな注文 | 期限切れを待つか、完了させます。 |
| PayPal ボタンが見つかりません | **Fees & limits** で PayPal がオフになっているか、設定されていません | オンにして認証情報を保存します。 |
