1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WordPressにStripeのカスタマーポータルを導入した時の話

Last updated at Posted at 2022-10-04

会員管理プラグイン『Simple Membership』を使用しているサイトにStripeのカスタマーポータルの導入した話

目次

  1. https://example.com/customer-portal/ という固定ページを作成する
  2. Customer Id の取得
  3. ボタンの設置
  4. 諸注意
  5. 終わりに

参考文献

https://example.com/customer-portal/ という固定ページを作成する

WPの管理画面から固定ページを作成してください。

Customer Idの取得

Subscription Id から取得する方法とメールアドレスから取得する方法等がありますが、
WordPressにメールアドレスが複数登録されていなくても、Stripeにはメールアドレスが複数登録されている場合があります。そのため、Subscription Idから取得するのが一般的です。

$stripe の定義

page-customer-portal/.php
$stripe = new \Stripe\StripeClient(
    'sk_live_****************'
);

Subscription Idから取得する

page-customer-portal.php
//ログインユーザーのIDを取得してsubscriptionIDからCustomerIdを取得する
$member_id       = SwpmMemberUtils::get_logged_in_members_id();
$subscr_id       = SwpmMemberUtils::get_member_field_by_id( $member_id, 'subscr_id' );
$useSubscription = $stripe->subscriptions->retrieve($subscr_id);
$customer_id     = $useSubscription['customer'];

補足

メールアドレスから取得する場合
page-customer-portal.php
$customers   = $stripe->customers->all(['email' => $user->user_email]);
$customer    = $customers->first();
$customer_id = $customer->id;

取得したCustomer Id から、カスタマーポータルのURLを発行する。

page-customer-portal.php
$session = $stripe->billingPortal->sessions->create([
    'customer'   => $customer_id,
    'return_url' => home_URL(),
]);

取得した $Session から、カスタマーポータルのURLへリダイレクトする。

page-customer-portal.php
header("Location: " . $session->url);

ボタンの設置

好きなページ (*ログインしていないと見れないページにした方が良いです。)
に『カード情報の更新はこちら』のようなボタンを設置し、
リンク先を https://example.com/customer-portal/ に設定する

これでカスタマーポータルのページに自動的に遷移されるようになります。

諸注意

・Stripeの導入方法等は省いております。

・カスタマーポータルのURLが取得できなかった場合用のページを設定するのがおすすめです。

お客様は本ページからクレジットカードの変更はできません。
誠に恐れ入りますが、一度お問い合わせをお願いいたします。
」等

1, Subscription Idで取得した場合に正しいカスタマーポータルのURLが取得できない場合は、会員期限が切れていてもログインできる場合などで発生しうる可能性が考えられます。(または、データの整合性が一致していない場合等)
2, メールアドレスで取得した場合は、正しいカスタマーポータルのURLが取得できない場合があります。 (メールアドレスの重複登録等)

終わりに

先月、カスタマーポータルがノーコードで実装できるようになりました。
衝撃でした。。。。

しかし、メール認証等が発生するため、
既に会員サイト等を運用されている方のために、
今回公開することにしてみました。

多くの人のお役に立てることを願っております。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?