Stripe-phpを使って顧客のクレジットカードを登録する流れについてメモします。
Stripeは機能がたくさんあってやりたいことの流れが飛び飛びでリファレンスにあるので探すのが大変だったのでメモ。
即座に決済はしないがカード情報をSTRIPEに登録しておきたい場合に使えるコード
STEP
フォームから送信されたクレジットカード情報をトークン化
// クレジットカード情報(テスト用ダミーカード番号)
$cardNumber = '4242424242424242';
$cardExpMonth = '12';
$cardExpYear = '2025';
$cardCvc = '123';
// クレジットカード情報をトークン化
$token = $stripe->tokens->create([
'card' => [
'number' => $cardNumber,
'exp_month' => $cardExpMonth,
'exp_year' => $cardExpYear,
'cvc' => $cardCvc,
],
]);
STEP
顧客の支払い方法を登録する準備
// 顧客に支払い方法を追加
$paymentMethod = $stripe->paymentMethods->create([
'type' => 'card',
'card' => [
'token' => $token->id,
],
]);
STEP
クレジットカード情報と顧客IDをヒモつける
トークン化されたカード情報と顧客IDをヒモつけるコード
$customerId = 'cus_xxxxxxxxxxxxxxx'; // 顧客のStripe管理ID
// 顧客に支払い方法をアタッチ
$stripe->paymentMethods->attach(
$paymentMethod->id,
['customer' => $customerId]
);
STEP
顧客のデフォルトの支払い方法として登録
// 顧客のデフォルト支払い方法を更新
$stripe->customers->update(
$customerId,
['invoice_settings' => ['default_payment_method' => $paymentMethod->id]]
);
目次
最終コード
上記の一連のコードを繋げると以下のようになる
大前提としてStripe-phpをインストールしてインスタンスを立ち上げてる状態から行う
$customerId = 'cus_xxxxxxxx';
// クレジットカード情報(テスト用ダミーカード番号)
$cardNumber = '4242424242424242';
$cardExpMonth = '12';
$cardExpYear = '2025';
$cardCvc = '123';
// クレジットカード情報をトークン化
$token = $stripe->tokens->create([
'card' => [
'number' => $cardNumber,
'exp_month' => $cardExpMonth,
'exp_year' => $cardExpYear,
'cvc' => $cardCvc,
],
]);
// 顧客に支払い方法を追加
$paymentMethod = $stripe->paymentMethods->create([
'type' => 'card',
'card' => [
'token' => $token->id,
],
]);
$customerId = 'cus_NlfIwdM7YCSZ6t';
// 顧客に支払い方法をアタッチ
$stripe->paymentMethods->attach(
$paymentMethod->id,
['customer' => $customerId]
);
// 顧客のデフォルト支払い方法を更新
$stripe->customers->update(
$customerId,
['invoice_settings' => ['default_payment_method' => $paymentMethod->id]]
);