WordCamp Haneda 2019 - 4月20日(土)、4月21日(日) 大田区産業プラザPiOにて開催

Stripe決済のプラグイン

はじめに

競技会採点システムの Web サービスを開発する際に、Stripe での決済を管理画面で自装しました。それを汎用的なものにしましたので公開します。

機能

  • Stripe チェックアウトボタンをショートコードで個別投稿と個別投稿ページに貼り付けます。
  • Stripe チェックアウトボタンをブロックで個別投稿と個別投稿ページに貼り付けます。
  • Stripe チェックアウトボタンをウィジェットとしてアーカイブページとホームページに貼り付けます。
  • 属性をブロックから指定できます。
  • 画面遷移無しで支払いを完了します。
  • 支払い前と支払い後にテキストまたは HTML を指定できます。
  • 支払い後に HTML 要素を削除できます。
  • 支払いの直後に処理するためのフィルターフックを用意しました。

チュートリアル動画


要件

  • Stripeアカウントが必要です。
  • StripeAPI キーが必要です。

管理画面での使い方

ユーザーを複数登録するサイトなどで、ユーザーの管理画面内で課金させて何らかの制限を解除するという仕組みです。フィルターフックを提供しているのでそれを利用します。

PHP コード内でショートコードを、do_shortcode で呼び出し購入ボタンを作成します。フィルターフックでフィルターを呼び関数内で、オプションテーブル内に課金済みを示す testpaid を作成します。値は bool 値です。この値で課金を判定する仕組みです。

ショートコード属性の email にメールアドレスを指定すると値を受け渡せるので、関数内でメールを送信できます。

サンプルコード

// 購入ボタン
$user = wp_get_current_user();
$email = $user->user_email;
echo do_shortcode('[simplestripepayment amount=1000 currency="JPY" name="テスト" description="課金テスト" email="'.$email.'"]');

// フィルターフック
add_filter('simple_stripe_payment_charge', 'stripe_charge', 10, 6);

// 関数
public function stripe_charge( $token, $email, $amount, $currency, $name, $description ) {
    // 課金直後の処理
    // メールを送信します。
    $subject = 'ご購入ありがとうございます。';
    $message = $amount.$currency.'お支払いいただきました。制限が解除されました。';
    wp_mail($email, $subject, $message);
  // オプションテーブルに書きこみます。
  update_option( 'test_paid', TRUE );
  // 未課金に戻したい場合は、phpMyAdmin などで、test_paid をオプションテーブルから削除してください。
}