You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何通过Stripe动态PDF URL存储发票文件?

解决Laravel中Stripe发票PDF无法存储的问题

直接使用file_get_contents处理Stripe的动态发票URL失败,主要是因为Stripe服务器会验证请求头(比如User-Agent),且file_get_contents默认不处理重定向,也没有携带必要的请求标识。以下是两种可行的解决方案:

方案一:使用Laravel Http客户端(推荐)

Laravel的Http客户端更健壮,能自动处理重定向,且方便设置请求头:

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

// 替换为你的Stripe发票URL
$stripeInvoiceUrl = 'https://pay.stripe.com/invoice/acct_1sflasjfmsklagbs/test_alkfnsajklgdbnajkgsbnajkfbsuayasgtjbwq8tuy23690q8319qr8busajvbssavkjsabngukwjqhr82rhadsawoilafkn/pdf?s=ap';

// 发送请求并携带User-Agent
$response = Http::withHeaders([
    'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
])->get($stripeInvoiceUrl);

// 验证响应并存储PDF
if ($response->successful()) {
    Storage::disk('public')->put('invoices/stripe_invoice.pdf', $response->body());
} else {
    // 记录错误日志或处理失败逻辑
    logger()->error('获取Stripe发票PDF失败', [
        '状态码' => $response->status(),
        '错误信息' => $response->body()
    ]);
}

方案二:配置file_get_contents的请求上下文

如果坚持使用file_get_contents,需要手动设置请求头和允许重定向:

use Illuminate\Support\Facades\Storage;

$stripeInvoiceUrl = 'https://pay.stripe.com/invoice/acct_1sflasjfmsklagbs/test_alkfnsajklgdbnajkgsbnajkfbsuayasgtjbwq8tuy23690q8319qr8busajvbssavkjsabngukwjqhr82rhadsawoilafkn/pdf?s=ap';

// 创建请求上下文,设置User-Agent和允许重定向
$context = stream_context_create([
    'http' => [
        'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        'follow_location' => true
    ]
]);

$contents = file_get_contents($stripeInvoiceUrl, false, $context);

if ($contents !== false) {
    Storage::disk('public')->put('filename.pdf', $contents);
} else {
    // 处理获取失败的情况
}

关键原因说明

  • Stripe的动态发票URL会验证请求的User-Agent字段,无标识的请求会被拒绝。
  • Stripe的URL可能存在3xx重定向,file_get_contents默认不跟随重定向,导致获取到的是重定向页面而非PDF内容。
  • Laravel Http客户端默认处理重定向,且更易于调试和错误处理。

内容的提问来源于stack exchange,提问作者Dev Team

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:15:36