目次


    必要なもの

    • PayPalのビジネスアカウント
    • PayPal REST APIのアプリを作成し、クライアントIDシークレットキーを取得する
    • 決済機能を実装したいウェブアプリケーション

    ステップ1: PayPal開発者アカウントを作成してAPIクレデンシャルを設定

    1. PayPal開発者アカウントを作成する PayPalの開発者ポータルにアクセスして、アカウントを作成します。

    2. PayPalアプリを作成する

      • ログイン後、「My Apps & Credentials」に移動し、「REST API Apps」セクションで「Create App」をクリックします。
      • アプリ名を入力し、テスト用の「Sandbox」環境か本番用の「Live」環境を選択します。
      • アプリを作成すると、クライアントIDシークレットキーが表示されます。これらを後で使用します。
    3. Webhooksを設定する(オプションですが推奨)

      • PayPalの開発者ダッシュボードでWebhooksを設定し、支払い通知を受け取るURLを指定します。

    ステップ2: PayPal SDKをインストール(PHP例)

    PayPalをPHPアプリケーションに統合するために、公式SDKを使用します。まず、Composerを使ってSDKをインストールします。

    1. PayPal SDKをインストール

      以下のコマンドを実行して、SDKをインストールします:

      composer require paypal/rest-api-sdk-php
      
    2. PayPal SDKを設定

      次に、PayPalのクレデンシャルを設定するための設定ファイルを作成します。

      <?php
      
      use PayPal\Auth\OAuthTokenCredential;
      use PayPal\Rest\ApiContext;
      
      $apiContext = new ApiContext(
          new OAuthTokenCredential(
              'YOUR_CLIENT_ID',     // クライアントIDをここに入れる
              'YOUR_SECRET_KEY'     // シークレットキーをここに入れる
          )
      );
      
      $apiContext->setConfig([
          'mode' => 'sandbox', // 本番環境では 'live' を使用
          'log.LogEnabled' => true,
          'log.FileName' => 'PayPal.log',
          'log.LogLevel' => 'DEBUG',
      ]);
      
      • YOUR_CLIENT_IDYOUR_SECRET_KEY に、PayPal Developer Dashboardから取得したクレデンシャルを入力します。

    ステップ3: 支払いを作成

    次に、ユーザーが支払いを承認できるように、PayPalで支払いを作成します。

    1. 支払いを作成

      以下のコードで支払いを作成します。

      use PayPal\Api\Amount;
      use PayPal\Api\Transaction;
      use PayPal\Api\Payer;
      use PayPal\Api\Payment;
      use PayPal\Api\RedirectUrls;
      use PayPal\Api\PaymentExecution;
      
      // 支払い方法を設定
      $payer = new Payer();
      $payer->setPaymentMethod('paypal');
      
      // 支払い金額を設定
      $amount = new Amount();
      $amount->setCurrency('USD')
             ->setTotal(20.00); // 支払い金額
      
      // トランザクションを設定
      $transaction = new Transaction();
      $transaction->setAmount($amount)
                  ->setDescription('サービスの支払い');
      
      // リダイレクトURLを設定
      $redirectUrls = new RedirectUrls();
      $redirectUrls->setReturnUrl('http://yourdomain.com/return')  // 支払い承認後のURL
                   ->setCancelUrl('http://yourdomain.com/cancel');  // 支払いキャンセル時のURL
      
      // 支払いを作成
      $payment = new Payment();
      $payment->setIntent('sale')
              ->setPayer($payer)
              ->setTransactions([$transaction])
              ->setRedirectUrls($redirectUrls);
      
      // PayPal APIを使用して支払いを作成
      try {
          $payment->create($apiContext);
          // PayPalで支払いを承認するためにリダイレクト
          header('Location: ' . $payment->getApprovalLink());
          exit;
      } catch (Exception $e) {
          // エラーハンドリング
          echo 'エラー: ' . $e->getMessage();
      }
      
      • このコードは、ユーザーがPayPalで支払いを承認した後、支払いの確認ページにリダイレクトされる仕組みです。
    2. ユーザーをPayPalにリダイレクト

      支払いが作成されると、PayPalで支払いを承認するために、ユーザーはPayPalの支払いページにリダイレクトされます。

    ステップ4: PayPalからの戻りを処理

    ユーザーが支払いを承認すると、PayPalはあなたのサイトにリダイレクトします。この時点で、支払いの確認を行う必要があります。

    1. 支払いを実行

      ユーザーがPayPalで支払いを承認した後、支払いを実行して取引を完了させます。

      use PayPal\Api\Payment;
      use PayPal\Api\PaymentExecution;
      
      // クエリパラメータから支払いIDとPayerIDを取得
      $paymentId = $_GET['paymentId'];
      $PayerID = $_GET['PayerID'];
      
      // PayPalから支払いの詳細を取得
      $payment = Payment::get($paymentId, $apiContext);
      
      // 支払いを実行
      $execution = new PaymentExecution();
      $execution->setPayerId($PayerID);
      
      try {
          // 支払いを実行
          $payment->execute($execution, $apiContext);
          echo '支払い成功';
      } catch (Exception $e) {
          echo '支払い失敗: ' . $e->getMessage();
      }
      
      • これにより、ユーザーが支払いを確認した後、取引が完了します。

    ステップ5: 支払い通知の処理(Webhooks)

    Webhooksを使うことで、PayPalから支払いの状態が変更されたときに通知を受け取ることができます。たとえば、支払いが完了したときや返金されたときなどです。

    1. Webhookリスナーを設定

      • PayPal開発者ダッシュボードでWebhookリスナーURLを作成します。
      • 次のコードを使ってWebhook通知を処理します:
      $input = file_get_contents('php://input');
      $json = json_decode($input, true);
      
      // 支払い通知を処理(例:支払い完了)
      if ($json['event_type'] == 'PAYMENT.SALE.COMPLETED') {
          // 支払い成功時の処理
          // データベースを更新したり、メール通知を送信する
      }
      

    ステップ6: テスト

    PayPalは、実際のお金を使わずにテストができるサンドボックス環境を提供しています。PayPalのサンドボックスでテストアカウントを作成して、決済の動作を確認できます。

    結論

    これらの手順に従うことで、PayPalをあなたのウェブアプリケーションに統合し、ユーザーが安全に支払いを行えるようになります。eコマースサイトやサブスクリプションサービスを作成している場合、PayPalは信頼性が高く、使いやすい決済ゲートウェイです。実際の支払いを行う前にサンドボックス環境で十分にテストを行ってください。

    PREV
    2024.12.10
    DNSとネームサーバー設定について
    NEXT
    2024.12.11
    サイドプロジェクトで使ってる面白いツール - zod