如何解决条纹php集成错误:ReferenceError:未定义sessionId
我一直坚持将Stripe的预构建支付网关集成到我的项目中。
我正在编写非常简单的Eshop(无需登录/注册和购物车),只是一个简单的项目,其中包含表单和条纹结帐作为付款方式...
我一直在关注官方的Stripe文档,但是我很难找到一个答案来解决如何将其“简单的预构建结帐页面”实现到过程PHP的问题。
目前,我一直坚持要获取此错误...所提供的代码是我从其官方文档中使用的代码“仍在获取错误ReferenceError:在devtools的控制台中未定义sessionId://
IDK还可以在不使用Slim / Laravel等PHP框架进行编码的情况下如何在服务器上配置端点... stripe提供的示例在配置端点时使用Slim框架....有什么想法吗?
<?PHP
//config PHP
require_once("vendor/autoload.PHP");
// === SET UP STRIPE PAYMENT GATEWAY ===
$stripe = [
"secret_key" => "sk_test_4eC39HqLyjWDarjtT1zdp7dc","publishable_key" => "pk_test_TYooMQauvdEDq54NiTphI7jx",];
\Stripe\Stripe::setApiKey($stripe['secret_key']);
?>
<?PHP
//create-checkout-session.PHP
require_once '_includes/config.PHP';
// ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param
$checkout_session = \Stripe\Checkout\Session::create([
'success_url' => 'http://localhost:8888/Avanza---Eshop/success.PHP?session_id={CHECKOUT_SESSION_ID}','cancel_url' => 'http://localhost:8888/Avanza---Eshop/canceled.PHP','payment_method_types' => ['card'],//,'alipay'
'mode' => 'payment','line_items' => [[
'amount' => 2000,'currency' => 'usd','name' => 'mikina','quantity' => 1,]]
]);
header('Content-type: application/json');
echo json_encode(['sessionId' => $checkout_session['id']]);
<!--order.PHP actual page that will be displayed to users-->
<button style="width: 100px; height: 100px" id="checkout-button"></button>
<script type="text/javascript">
// Create an instance of the Stripe object with your publishable API key
var stripe = Stripe('pk_test_51HjoRfIaBaXJG6udQspXdLRNwMesCriMwZoR7nGCF0hZtu2Zp9FUxCFWwVpwwU4BZs7fTxJtYorVTuoK1vqXp2Uw002r6qvmO7'); // removed for Stackoverflow post
var checkoutButton = document.getElementById('checkout-button');
checkoutButton.addEventListener('click',function() {
// Create a new Checkout Session using the server-side endpoint you
// created in step 3.
fetch('create-checkout-session.PHP',{
method: 'POST',})
.then(function(response) {
return response.json();
})
.then(function(session) {
return stripe.redirecttocheckout({ sessionId: sessionId});
})
.then(function(result) {
// If `redirecttocheckout` fails due to a browser or network
// error,you should display the localized error message to your
// customer using `error.message`.
if (result.error) {
alert(result.error.message);
}
})
.catch(function(error) {
console.error('Error:',error);
});
});
</script>
解决方法
我认为您需要将return stripe.redirectToCheckout({ sessionId: sessionId});
替换为return stripe.redirectToCheckout({ sessionId: session.sessionId});
它对我有用。如果您看到更多错误或遇到任何问题,请在浏览器控制台的“网络”选项卡中搜索。
$(function() {
var stripe = Stripe('<?= Config::STRIPE_PUB_KEY ?>'); // here write: pk_test_5...
$(document).on('click','.buy_now_btn',function(e) {
let id = $(this).attr('id');
$(this).text('Please wait...');
$.ajax({
url: 'action.php',method: 'post',data: {
id: id,stripe_payment_process: 1
},dataType: 'json',success: function(response) {
console.log(response);
return stripe.redirectToCheckout({
sessionId: response.id
});
},})
})
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。