目次一覧
状態:-
閲覧数:656
投稿日:2019-04-13
更新日:2019-04-19
質問履歴30 / 質問した後に気が付いたこと / A抜粋
質問履歴30 / 質問した後に気が付いたこと / A抜粋
質問履歴30
Checkout (new) の「Checkout Server Quickstart」の「Step 2: Add Checkout to your website」について
・2019/4/13
下記をPHPで試しているのですが、エラーになります
https://stripe.com/docs/payments/checkout/server
エラーメッセージ
・Uncaught ReferenceError: cs_kaWQxxxx is not defined
下記ログを見ると「cs_kaWQxxxx」は作成されているのですが、なぜエラーになるのですか?
https://dashboard.stripe.com/test/logs/req_HOVJQ3DqWv8II9
もしかして、作成と同時に取得は出来ないのですか?
・その場合はどう使用するのですか?
試したコード
https://stripe.com/docs/payments/checkout/server
エラーメッセージ
・Uncaught ReferenceError: cs_kaWQxxxx is not defined
下記ログを見ると「cs_kaWQxxxx」は作成されているのですが、なぜエラーになるのですか?
https://dashboard.stripe.com/test/logs/req_HOVJQ3DqWv8II9
もしかして、作成と同時に取得は出来ないのですか?
・その場合はどう使用するのですか?
試したコード
<?php
\Stripe\Stripe::setApiKey("sk_test_xxxx");
$checkoutSession = \Stripe\Checkout\Session::create([
'success_url' => 'https://ecample.com',
'cancel_url' => 'https://ecample.com',
'payment_method_types' => ['card'],
'line_items' => [[
'amount' => 2000,
'quantity' => 2,
'name' => 'Blue banana',
'currency' => 'usd',
'images' => ['https://www.example.com/banana.png']
],
],
], [
'stripe_version' => '2018-11-08; checkout_sessions_beta=v1'
]);
?>
<script src="https://js.stripe.com/v3"></script>
<button id="checkout-button" role="link">Pay</button>
<div id="error-message"></div>
<script>
var stripe = Stripe('pk_test_xxxx', {
betas: ['checkout_beta_4']
});
stripe.redirectToCheckout({
sessionId: <?php echo $checkoutSession->id; ?>
})
.then(function (result) {
if (result.error) {
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
</script>
・async / defer
手動でマジックナンバーとして「cs_kaWQxxxx」を指定したら
・エラーは発生しないが、イベント欄に何も表示されない。支払い欄には追記されるが…
・もしかして、開発途中なの?
質問した後に気が付いたこと
jsにクリックイベント記述が必要
このコードは
・通常、支払いボタンのクリックなど、顧客が行った操作に応答してトリガーされるイベントハンドラーから呼び出される
・Checkout Server Quickstart / チェックアウトサーバーのクイックスタート・通常、支払いボタンのクリックなど、顧客が行った操作に応答してトリガーされるイベントハンドラーから呼び出される
セッションIDパラメータは、文字列で指定
セッションID
string
・Stripe.js Referencestring
上記2つを修正したら
・期待した通り動作するようになった
A抜粋
チェックアウトのセッションIDはStringで書かれる必要がある
stripe.redirectToCheckout({
sessionId: 'cs_kaWQxxxx'
})