UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#120 Stripeのサブスクリプション決済を取得するWebhookの例

記入日:2023-05-08 編集日:2023-05-08

Stripe PHP SDKを使用してサブスクリプションの決済更新時の情報を取得するWebhookの例を解説してみようと思います。

この記事を読むと(約5分)
Stripe PHP SDKを使用してサブスクリプションの決済更新時の情報をWebhook取得する方法をイメージできます。

サブスクリプションの決済更新情報を取得するWebhookの例

以下の例では、Stripe\StripeClientクラスを使用して、Stripe APIキーを設定し、Stripe APIにアクセスします。また、Stripe\Webhook::constructEvent()関数を使用して、Webhookシークレットキーを使って受信したWebhookの署名を検証しています。

Webhookで受信したイベントの種類がinvoice.payment_succeededである場合、サブスクリプションのIDを取得し、$stripe->subscriptions->retrieve()メソッドを使用して、サブスクリプション情報を取得しています。ここで、$stripeは、Stripe\StripeClientクラスのインスタンスです。

Webhookが正常に処理された場合にはHTTPステータスコード200を返します。

require_once('vendor/autoload.php');

$webhook_secret = getenv('STRIPE_WEBHOOK_SECRET');
$stripe = new \Stripe\StripeClient(getenv('STRIPE_SECRET_KEY'));

$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_STRIPE_SIGNATURE'];

try {
  $event = \Stripe\Webhook::constructEvent($payload, $signature, $webhook_secret);
} catch (\UnexpectedValueException $e) {
  // Invalid payload
  http_response_code(400);
  exit();
} catch (\Stripe\Exception\SignatureVerificationException $e) {
  // Invalid signature
  http_response_code(400);
  exit();
}

// Handle the event
if ($event->type == 'invoice.payment_succeeded') {
  $invoice = $event->data->object;
  $subscription_id = $invoice->subscription;
  $subscription = $stripe->subscriptions->retrieve($subscription_id);
  // Do something with the subscription information
}

http_response_code(200);

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。