我正在尝试将 Stripe 支付集成到我的 PHP 项目中(Windows 上带有 WAMP 的 PHP 7.4.5)。
我使用官方文档中的结构(https://stripe.com/docs/ payments/integration-builder),但当我在浏览器中检查控制台时,出现以下错误:
POST 500(内部服务器错误)并且在网络部分对 POST(对于 create.php)请求的响应是
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{"error":"Call to undefined function curl_version()"}
这是我的代码: 创建.php
require_once('../stripe-php-7.37.1/init.php'); //my others require are not printed
\Stripe\Stripe::setApiKey('my_key');
header('Content-Type: application/json');
try {
// retrieve JSON from POST body
$json_str = file_get_contents('php://input');
$json_obj = json_decode($json_str);
$paymentIntent = \Stripe\PaymentIntent::create([
'amount' => calculateOrderAmount(), //amount calculator
'currency' => 'eur',
]);
$output = [
'clientSecret' => $paymentIntent->client_secret,
];
echo json_encode($output);
} catch (Error $e) {
http_response_code(500);
echo json_encode(['error' => $e->getMessage()]);
}
结帐.php
...
<script src="https://js.stripe.com/v3/"></script>
...
<form id="payment-form">
<div id="card-element"><!--Stripe.js injects the Card Element--></div>
<button id="submit">
<div class="spinner hidden" id="spinner"></div>
<span id="button-text">Pay</span>
</button>
<p id="card-errors" role="alert"></p>
<p class="result-message hidden">
Payment succeeded, see the result in your
<a href="" target="_blank">Stripe dashboard.</a> Refresh the page to pay again.
</p>
</form>
...
<script>
var stripe = Stripe("my_key");
// Disable the button until we have Stripe set up on the page
document.querySelector("button").disabled = true;
fetch("/Stripe/create.php", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(purchase)
})
.then(function(result) {
result.json();
})
.then(function(data) {
var elements = stripe.elements();
...
</script>
我检查了WAMP,在PHP.ini中启用了curl扩展
我有以下文件架构:
├────stripe-php-7.37.1
├────条纹
│ ├───checkout.php
│ ├────创建.php
感谢您的帮助
这是更正后的版本:
“看,你的 cURL DLL 文件无法访问。我在 XAMPP Windows 计算机上遇到了同样的问题。转到 XAMPP 目录 -> Apache -> Conf -> Extra,然后打开 'httpd-xampp.conf ' 文件。在 '# PHP-Module setup' 部分添加行 'LoadFile "/xampp/php/ext/php_curl.dll" 然后,打开 XAMPP 控制面板并重新启动 Apache。”