WP Simple Pay ドキュメント

WP Simple Pay のドキュメント、参考資料、チュートリアル

StripeからWebhookを受け付けるようにサイトを構成する方法

Webフックにより、StripeはWordPressサイトにメッセージを送信できます。WP Simple Payの一部の機能(メール送信分割払いプランの作成、顧客によるサブスクリプション支払い情報の更新AffiliateWPとの連携など)には、Webフックの設定が必須です。

WP Simple Payは、Webhookエンドポイントを自動的に作成しようとします。ほとんどの場合、以下に示すような手動構成は必要ありません。

Stripeにエンドポイントを追加する

適切なWebhookエンドポイントを追加するには、Stripeダッシュボードの開発者 → Webhooksに移動します。

Stripeエンドポイントを追加

エンドポイントを追加をクリックし、次にWP Simple Pay → 設定 → Stripe → WebhooksにあるURLを追加します。

WP Simple Pay Webhookエンドポイント設定
Stripe WebhookはStripeイベントをリッスンします

接続済みアカウントでイベントをリッスンするを有効にしないでください。これはWP Simple PayのWebhook機能を壊します。

次に、+イベントを選択というラベルのボタンをクリックして、リッスンする特定のイベントを追加する必要があります。その後、以下の各イベントをコピーして、送信するイベントを選択 → イベントを検索の検索ボックスに貼り付けることができます。

送信するWebhookイベントを選択

各用語を検索した後、チェックボックスをクリックして追加し、追加の用語を検索します。以下のすべてのイベントをチェックするまで、イベントを追加をクリックしないでください。

  • payment_intent.processing
  • payment_intent.succeeded
  • charge.failed
  • charge.refunded
  • charge.succeeded
  • checkout.session.completed
  • customer.subscription.deleted
  • customer.subscription.updated
  • invoice.payment_succeeded
  • invoice.upcoming

これらの各イベントの機能に関する詳細は、このドキュメントの最後に示されています。

イベントの追加が完了したら、エンドポイントを追加をクリックしてプロセスを完了します。エンドポイントを追加すると、新しいURLがWebhooks設定に表示されるはずです。

Webhookエンドポイントを追加

Webhook署名シークレットの設定

Stripeは、エンドポイントに送信するWebhookイベントに署名してセキュリティを強化できます。強く推奨します。

これを行うには、ダッシュボードのWebhook設定からエンドポイントのシークレットを取得します。シークレットを取得したい追加されたエンドポイントを選択し、表示ボタンをクリックします。

Webhookシークレットキーを表示

次に、Stripeダッシュボードから署名シークレットをコピーし、WordPress管理画面のWP Simple Pay → 設定 → Stripe → Webhookに戻って、現在の支払いモードのエンドポイントシークレットテキストボックスに貼り付けます。

テストモードでも繰り返す

Webhookエンドポイントはテストモードでも作成する必要があります。Stripeダッシュボードの右上にあるテストモードトグルを切り替え、上記の手順を繰り返します。

Stripeテストモード切り替え

イベントタイプの説明

invoice.payment_succeeded

  • 分割払いのインクリメントに使用され、サブスクリプションの「支払い確認」および「支払い通知」メールを送信します。
  • サブスクリプションが正常に作成された後の追加処理のために、simpay_webhook_subscription_createdアクションを公開します。
  • 請求書が処理された後の追加処理のために、simpay_webhook_invoice_payment_succeededアクションを公開します。
<?php
add_action(
	'simpay_webhook_subscription_created',
	/**
	 * Fires when a subscription is created in Stripe.
	 * 
	 * @param \SimplePay\Vendor\Stripe\Event        $event Stripe webhook event.
	 * @param \SimplePay\Vendor\Stripe\Subscription $subscription Stripe Subscription.
	 */
	function( $event, $subscription ) {
		// Do something.
	},
	10,
	2
);
<?php
add_action(
	'simpay_webhook_invoice_payment_succeeded',
	/**
	 * Fires when a subscription invoice payment has succeeded.
	 * Does not fire for the subscription creation (first) invoice.
	 * 
	 * @param \SimplePay\Vendor\Stripe\Event        $event Stripe webhook event.
	 * @param \SimplePay\Vendor\Stripe\Invoice      $invoice Stripe Invoice object.
	 * @param \SimplePay\Vendor\Stripe\Subscription $subscription Stripe Subscription object.
	 */
	function( $event, $invoice, $subscription ) {
		// Do something.
	},
	10,
	3
);

カスタムコードの追加方法はこちら →

payment_intent.succeeded

  • 都度払いの「支払い確認」および「支払い通知」メールを送信します。
  • 支払いが正常に行われた後の追加処理のために、simpay_webhook_payment_intent_succeededアクションを公開します。
<?php
add_action(
	'simpay_webhook_payment_intent_succeeded',
	/**
	 * Fires when a one-time payment has succeeded.
	 * 
	 * @param \SimplePay\Vendor\Stripe\Event         $event Stripe webhook event.
	 * @param \SimplePay\Vendor\Stripe\PaymentIntent $paymentintent Stripe PaymentIntent.
	 */
	function( $event, $paymentintent ) {
		// Do something.
	},
	10,
	2
);

カスタムコードの追加方法はこちら →

invoice.upcoming

checkout.session.completed

  • 生成された放棄されたStripe Checkoutレコードを削除するために使用されます。
  • 必要に応じて追加処理を行うために、simpay_webhook_checkout_session_completedアクションを公開します。

charge.succeeded

  • ACHデビットを使用した都度払いの「支払い確認」および「支払い通知」メールを送信します。
  • 支払いが正常に行われた後の追加処理のために、simpay_webhook_charge_succeededアクションを公開します。

charge.failed

  • 請求が失敗した後の追加処理のために、simpay_webhook_charge_failedアクションを公開します。

よくある質問

Webhookは必要ですか?

支払いを処理するためにWebhookは必須ではありません。Webhookが失敗しても、支払いが処理されなかったことを意味するわけではありません。ただし、不正検出、メールレシート、次回の請求書通知、分割払いの管理などの機能にはWebhookが利用されます。

不正が検出された場合にメール検証を利用するには、Webhookが必要です。

現在これらの機能を使用していなくても、将来的にこれらの機能を有効にすることにした場合や、WP Simple Pay が将来の機能でこれらの機能性を必要とする場合に混乱を避けるために、Webhook エンドポイントが正しく設定されていることを確認することを強くお勧めします。

「WP Simple Pay が正しく機能していない可能性があります」と表示されるのはなぜですか?

WP Simple Pay は、Webhook 機能(メール、分割払いプランなど)を利用する機能の中断を避けるために、Webhook エンドポイントの誤設定やエラーの可能性について警告します。WP Simple Pay が予期した Webhook イベントを検証できない場合、プラグイン設定内に通知バブルが表示され、「WP Simple Pay が正しく機能していない可能性があります」というエラーメッセージが表示されます。

誤設定された Webhook エンドポイントを修正するにはどうすればよいですか?

Webhook エンドポイントの誤設定の可能性を解決するには、Stripe ダッシュボードの「開発者 → Webhook」にアクセスしてください(テストモードの場合は、「テストモードのエンドポイントを表示」してください)。

「ホストされたエンドポイント」の下に、WP Simple Pay の Webhook イベント受信者を含むエントリが表示されるはずです:「wp-json/wpsp/v1/webhook-receiver」。このエンドポイントが表示されない場合は、この記事の冒頭に記載されている設定手順を完了してください。

WP Simple Pay エンドポイントの URL をクリックして、エンドポイントの設定を表示します。ここに、エンドポイントに送信された Webhook イベントのリストが表示されます。

「失敗した」タブをクリックして、失敗したイベントを一覧表示します。

Stripeで失敗したWebhookイベント

失敗した Webhook イベントがある場合、エントリのいずれかを選択すると、エンドポイント URL から受信した応答が表示されます。この応答には、多くの場合、「応答」セクションでエンドポイントがイベントの処理に失敗した理由に関する情報が含まれています。

応答本文なし

リモートホストへの接続に失敗しました

Stripe はサーバーとの通信に失敗しました。Web サーバーがリクエストに応答していること、特に Stripe の完全修飾ドメイン名および IP アドレスすべてに応答できることを確認してください。

ペイロードの期待される署名と一致する署​​名が見つかりませんでした

Stripe は、「WP Simple Pay → 設定 → Stripe → Webhook」で指定された署名シークレットを使用して Webhook イベントデータを検証できませんでした。Webhook エンドポイントを表示しているときに、「署名シークレット」の下にある「表示」をクリックし、各支払いモードの WP Simple Pay で署名シークレット設定を更新してください。

404 エラー <!DOCTYPE html>

Webhook エンドポイント URL が正しくなく、404 ページが見つかりませんというページを指しています。「WP Simple Pay → 設定 → Stripe → Webhook」にアクセスして、Webhook エンドポイント URL の正しい値を見つけ、Stripe のエンドポイントを更新してください。

Stripe Webhookエンドポイントの詳細を更新

エンドポイントの設定を確認しましたが、エラーが引き続き表示されるのはなぜですか?

WP Simple Payは、真のエラーが見過ごされないように、意図的に設定ミスに対して過剰に反応します。しかし、Webhookイベントの設定ミスに関する誤検知通知を受け取る可能性は依然としてあります。これは、Stripeがイベントデータを送信するのに平均よりも長い遅延がある場合、またはStripe Checkoutでオフサイトの支払いページが放棄された場合に発生する可能性があります。

エンドポイントで失敗したWebhookエンドポイントイベントがないことを確認した場合、以下の手順に従って設定通知を無効にすることができます。

Webhook設定通知を無効にできますか?

前述のように、Webhookエンドポイントを適切に設定し、有効にしておくことを強くお勧めします。ただし、ご自身の責任において、設定ミスや不適切に受信されたイベントに関するアラートを受け取りたくない場合は、WP Simple Pay → 設定 → Stripe → Webhooks で「再度表示しない」をクリックして、通知を永続的に却下できます。

ご不明な点はまだありますか?喜んでお手伝いさせていただきます!

最終更新日:

今日から決済を受け付けましょう

WordPressウェブサイトで、単発および定期的な支払いまたは寄付の受け付けを開始しましょう。