Stripe payments 条带预构建的托管签出在localhost中运行良好,但在live server中不起作用(400错误请求))
我已经在localhost中使用测试密钥和实时密钥进行了测试,一切正常。但是,当我上传到服务器时,它不工作,错误消息如下: 错误消息 以下是直接从Stripe官方文件复制的2个文件Stripe payments 条带预构建的托管签出在localhost中运行良好,但在live server中不起作用(400错误请求)),stripe-payments,Stripe Payments,我已经在localhost中使用测试密钥和实时密钥进行了测试,一切正常。但是,当我上传到服务器时,它不工作,错误消息如下: 错误消息 以下是直接从Stripe官方文件复制的2个文件 https://stripe.com/docs/checkout/integration-builder index.php <button id="checkout-button">Checkout</button> <script typ
https://stripe.com/docs/checkout/integration-builder
index.php
<button id="checkout-button">Checkout</button>
<script type="text/javascript">
// Create an instance of the Stripe object with your publishable API key
var stripe = Stripe("pk_test_51HmrX2IxP40eGXqz3tWsmlkfw11otNk5U6DDiaDvejfYd33oFZCE13zvp2nRbPUweGMbkVEmfUQYzPho9uI8odHk009iU4cFjG");
var checkoutButton = document.getElementById("checkout-button");
checkoutButton.addEventListener("click", function () {
fetch("create-session.php", {
method: "POST",
})
.then(function (response) {
return response.json();
})
.then(function (session) {
return stripe.redirectToCheckout({ sessionId: session.id });
})
.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>
require 'vendor/init.php';
\Stripe\Stripe::setApiKey('sk_test_51HmrX2IxP40eGXqzRwJ6ObqPSvqZcXYRtJDxAsFqru1a2kFzas9tBfZH9UkEYHHwdFRVIRgS2bmsmqiwtDDmMbD70zy0SFFarz');
$response = array(
'status' => 0,
'error' => array(
'message' => 'Invalid Request!'
)
);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$input = file_get_contents('php://input');
$request = json_decode($input);
}
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode($response);
exit;
}
header('Content-Type: application/json');
$YOUR_DOMAIN = 'mydomain.com';
$checkout_session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => 'usd',
'unit_amount' => 2000,
'product_data' => [
'name' => 'Stubborn Attachments',
'images' => ["http://i.imgur.com/EHyR2nP.png"],
],
],
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => $YOUR_DOMAIN . '/success.php?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.php',
]);
echo json_encode(['id' => $checkout_session->id]);
我已经上传文件到2个不同的网站进行测试,但仍然满足错误400(错误请求)。。。有人能提供帮助和建议吗?谢谢您应该查看服务器端日志,因为您很可能没有返回您认为是的JSON。你也可以
console.log()
session的值来确认/反驳它实际上是你所期望的。我删除了这部分编码,如果(json\u last\u error()!==json\u error\u NONE){http\u response\u code(400);echo json\u encode($response);exit;}那么现在它可以工作了吗?或者这只是阻止JSON解析错误导致400错误吗?错误仍然存在。。。。只是我删除了那部分代码,这样程序现在就可以运行了。。。
require 'vendor/init.php';
\Stripe\Stripe::setApiKey('sk_test_51HmrX2IxP40eGXqzRwJ6ObqPSvqZcXYRtJDxAsFqru1a2kFzas9tBfZH9UkEYHHwdFRVIRgS2bmsmqiwtDDmMbD70zy0SFFarz');
$response = array(
'status' => 0,
'error' => array(
'message' => 'Invalid Request!'
)
);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$input = file_get_contents('php://input');
$request = json_decode($input);
}
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode($response);
exit;
}
header('Content-Type: application/json');
$YOUR_DOMAIN = 'mydomain.com';
$checkout_session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => 'usd',
'unit_amount' => 2000,
'product_data' => [
'name' => 'Stubborn Attachments',
'images' => ["http://i.imgur.com/EHyR2nP.png"],
],
],
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => $YOUR_DOMAIN . '/success.php?session_id={CHECKOUT_SESSION_ID}',
'cancel_url' => $YOUR_DOMAIN . '/cancel.php',
]);
echo json_encode(['id' => $checkout_session->id]);