stripのdashboardで商品を追加して、api idをメモします。
続いて、登録画面
-> これは普通の購入画面とほぼ一緒の書き方。
-> emailをpostする
<body> <img src="img/boat.jpg" width="300px" height="200px"><br> <p>サロン会員: ¥<?php echo $price; ?>(月額課金)</p> <form action="/subscription.php" method="post"> <input hidden name="name" value="<?php echo $name; ?>"> <input hidden name="email" value="<?php echo $email; ?>"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_*" data-image="" data-amount="<?php echo $price; ?>" data-name="<?php echo $name; ?>" data-description="" data-email="<?php echo $email; ?>" data-locale="auto" data-allow-remember-me="false" data-label="クレジットカードで登録する" data-currency="jpy" > </script> </form><br> <!-- <form action="/banck.php" method="post"> <button class="bank-btn">銀行振込で支払う</button> </form> --> </body>
### サーバーサイド側
-customerを作るときは、emailとsourceのみ。payment_methodを設定するとエラーになる。
-echo $e;でエラー内容を表示しながら作業する
-\Stripe\Subscription::createのpriceのところで、先ほど取得したAPI IDを設定する
require_once('vendor/autoload.php'); \Stripe\Stripe::setApiKey('sk_*'); $sub_id = null; try { $token = $_POST['stripeToken']; $name = $_POST['name']; $email = $_POST['email']; $customer = \Stripe\Customer::create([ 'email' => $email, 'source' => $token, ]); $subscription = \Stripe\Subscription::create([ 'customer' => $customer->id, 'items' => [ [ 'price' => 'price_*', ], ] ]); var_dump($subscription); $sub_id = $subscription->id; // // アプリケーション側のDB更新 header("Location: /complete.php"); exit; } catch(Exception $e){ echo $e; // if($sub_id !== null){ // // 例外が発生すればオーソリを取り消す // \Stripe\Refund::create(array( // 'charge' => $sub_id, // )); // } // header("Location: /error.html"); // exit; }
これでOK。
定額もショッピングも両方いけます。
続いて、定額の解約を実装したい。