Laravel Omnipay/Stripe 无法在 linux 上发送请求
Laravel Omnipay/Stripe unable to send request on linux
目前我已经将 omnipay/stripe 集成到我的 laravel 项目中,在我的本地没有问题,但是当我在服务器上测试它时它返回 “无效请求:不支持Content-Type 。如果错误仍然存在并且您需要帮助,请联系支持@stripe.com。 尝试发送请求时,请帮助。
$response = $gateway->purchase([
'amount' => $amount,
'currency' => $currency,
'token' => $token,
'confirm' => true,
'description' => auth()->user()->name
])->send();
错误的确切文本 Content-Type .
表明请求有一个 empty Content-Type
header(该值包含在句点之前).虽然我无法解释为什么会发生这种情况,但有些东西干扰了请求。
您可以尝试从您的服务器进行基本 curl
调用(如下所示),以帮助隔离这是 network-level 干扰还是在应用程序堆栈中。
curl --request POST \
--url 'https://api.stripe.com/v1/customers' \
-u sk_test_123: \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'description=test cust'
您可以尝试使用和不使用显式 header 看看这是否会有所不同。
我终于找到了解决方法,我将 post 放在这里以备将来参考。
我咨询了 Stripe 的技术支持,他们的回答给了我一个想法。
Stripe 支持发现的causes/issue:
正在发送空请求 Content-Type header。
我浏览了库并尝试调试正在发送的请求 header 但实际上在日志中发现它只是默认的“授权” header,有不知道 Content-Type 是如何添加的,所以根据他们的回应,我在 sendData($data)
处添加了 'Content-Type' => 'application/x-www-form-urlencoded'
到 omnipay/stripe/src/Message/AbstractRequest.php
。当然你也可以把它放在比我做的更有条理的方式。
令人惊讶的是它有效!
他们还建议了一种你也可以尝试的方法,但我没有。
$request = $gateway->purchase([
'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
'amount' => $amount,
'currency' => $currency,
'token' => $token,
'confirm' => true,
'description' => auth()->user()->name
])->send();
目前我已经将 omnipay/stripe 集成到我的 laravel 项目中,在我的本地没有问题,但是当我在服务器上测试它时它返回 “无效请求:不支持Content-Type 。如果错误仍然存在并且您需要帮助,请联系支持@stripe.com。 尝试发送请求时,请帮助。
$response = $gateway->purchase([
'amount' => $amount,
'currency' => $currency,
'token' => $token,
'confirm' => true,
'description' => auth()->user()->name
])->send();
错误的确切文本 Content-Type .
表明请求有一个 empty Content-Type
header(该值包含在句点之前).虽然我无法解释为什么会发生这种情况,但有些东西干扰了请求。
您可以尝试从您的服务器进行基本 curl
调用(如下所示),以帮助隔离这是 network-level 干扰还是在应用程序堆栈中。
curl --request POST \
--url 'https://api.stripe.com/v1/customers' \
-u sk_test_123: \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'description=test cust'
您可以尝试使用和不使用显式 header 看看这是否会有所不同。
我终于找到了解决方法,我将 post 放在这里以备将来参考。 我咨询了 Stripe 的技术支持,他们的回答给了我一个想法。
Stripe 支持发现的causes/issue: 正在发送空请求 Content-Type header。
我浏览了库并尝试调试正在发送的请求 header 但实际上在日志中发现它只是默认的“授权” header,有不知道 Content-Type 是如何添加的,所以根据他们的回应,我在 sendData($data)
处添加了 'Content-Type' => 'application/x-www-form-urlencoded'
到 omnipay/stripe/src/Message/AbstractRequest.php
。当然你也可以把它放在比我做的更有条理的方式。
令人惊讶的是它有效!
他们还建议了一种你也可以尝试的方法,但我没有。
$request = $gateway->purchase([
'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
'amount' => $amount,
'currency' => $currency,
'token' => $token,
'confirm' => true,
'description' => auth()->user()->name
])->send();