StripeでCheckoutを使った単発決済を行うだけだったらめちゃ簡単なんだけど、
決済済ステータスに会員情報などくっつけて、決済後に処理を入れる時なんかは苦労する。
単発決済のみ
stripe.redirectToCheckout({
lineItems: [
{price: 'price_123', quantity: 1},
],
mode: 'payment',
successUrl: 'https://your-website.com/success',
cancelUrl: 'https://your-website.com/canceled',
})
.then(function(result) {
});
メタ情報をくっつけたいとき
メタ情報は現在のjsバージョンでは扱えないらしいので、一旦checkout用のセッションをphp等サーバー側で別で作りjsで呼び出してあげる
$session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price' => 'price_123',
'quantity' => 1,
]],
'mode' => 'payment',
'payment_intent_data' => [
'metadata' => [
'{key}' => '{value}',
]
],
'success_url' => 'https://your-website.com/success?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => 'https://your-website.com/canceled',
]);
echo json_encode(['session_id' => $session->id]);
決済内容が入ったsessionをjsに与える
stripe.redirectToCheckout({
sessionId: さきほどのsession_id
})
.then(function(result) {
});
決済完了後にメタ情報を取る
で、決済後に返ってくるのはsession_idだけなので、メタ情報を取り出す為には手順が必要になる
まずセッション情報を取得
$session = \Stripe\Checkout\Session::retrieve($_GET['session_id']);
セッション情報から購入履歴を取得
$stripe = new \Stripe\StripeClient('sk_test_...');
$payment = $stripe->paymentIntents->retrieve(
$session->payment_intent
);
・・・なんか書き方が違うのだけど、ドキュメントどおりに読んだらこうなった^^;
購入履歴からメタ情報を取得
$value = $payment->metadata->{key};
コメント