Stripeで事前に顧客情報(カード情報)を登録して任意のタイミングで決済する場合の処理をPHPで書いてみた

どうもふうやです。

先日StripeのSubscriptionに関する記事を書きました。

アイキャッチ画像StripeでのSubscriptionをPHPで実装してみた

この記事ではその場でクレジットカードの情報を入力して月額課金するために決済するという処理を施すことが出来ますが、事前にカード情報を登録して後々に決済するにはどうするのかとたくちゃむ君に聞かれました!

stripe 後々 決済

そこで参考にしようと思っていた記事を見せてもらい、その記事にはバックエンド側について書かれていなかったためググってすぐに解決しました!笑

PHPでStripeに事前にカード情報を登録する処理についてカキカキ

まずはAPIのプライマリキーとシックレットキーを準備します。

フロント側

HTML

<form action="POST先のPHPファイルを指定します" method="post">
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="プライマリキーを挿入します"
    data-locale="ja"
    data-name="クレジットカード情報の登録"
    data-label="ボタンのラベル"
    data-panel-label="登録する"
    data-allow-remember-me="false">
</script>
</form>

バックエンド側(POST先のPHP)

PHP

<?php
session_start();
/****DB接続処理を行う****/
//composerでライブラリをダウンロードした場合 
require_once('vendor/autoload.php'); 
//直接ライブラリをダウンロードした場合 
require_once('stripe-php-6.7.4/init.php'); 
\Stripe\Stripe::setApiKey("シックレットキーを挿入する");
try
{
	$customer = \Stripe\Customer::create(array(
	    "source" => $_POST["stripeToken"],
	    "email" => $_POST['stripeEmail'],
	));

	$customer_id = $customer -> id;//cus_乱数
        /*以下$customer_idをDBに格納して任意のページに遷移させる*/
	exit;
}catch(Exception $e)
{
	echo $e;
}
?>

DBの特定ユーザーのcustomer_idを格納する列に”cus_乱数”を挿入しないといけないので、手順としてはセッション処理を行ってDBに接続し何らかの列を取得してきます。(SQLのUPDATEで挿入するため)

そして新たなCustomer(顧客)を作成し、$customerのidにあるcus_乱数をDBに格納し任意のページに遷移させるだけです。

決済処理を行う(バックエンド側)

ここでは月額課金を任意のタイミングで始めることを想定して処理を行います。

PHP

<?php
//composerでライブラリをダウンロードした場合 
require_once('vendor/autoload.php'); 
//直接ライブラリをダウンロードした場合 
require_once('stripe-php-6.7.4/init.php'); 
\Stripe\Stripe::setApiKey("シックレットキーを挿入する");
$subscription = \Stripe\Subscription::create(array(
	'customer' => DBに保存したcus乱数を挿入する,
	'items' => array(array('plan' => '作成したプラン名を記述')),
));
?>

ここでは事前にDBに保存した顧客情報を利用して決済を行うため、$subscriptionの’customer’にはDBに保存しておいた顧客情報を挿入します。

itemsには作成しておいたプラン名を記述します。

サブスクリプションのプランに関しては先日書いた記事が参考になるかと思います。

アイキャッチ画像StripeでのSubscriptionをPHPで実装してみた

まとめ

APIをいじってコードをカキカキするの楽しいなあと最近改めて実感しました。

APIなんてググればリファレンスも出てくるし、有志の方が書いた記事も出てくるのでそれを参考にするのが一番手っ取り早いです。

書籍なんて買わなくても無料で解決できちゃいます笑

ありがとうございました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です