EnglishEN EspañolES FrançaisFR DeutschDE ItalianoIT PortuguêsPT 中文ZH 日本語JA 한국어KO РусскийRU NederlandsNL
← Back to all articles

如何将 Stripe Checkout 添加到定制 PHP 网站(无需插件)

Stripe 是目前最简洁的支付 API,把它直接接入 PHP 意味着没有每月 SaaS 费用、没有 WooCommerce 的臃肿,也没有 Shopify 的交易抽成。下面是 BuiltToWinWeb 真实客户商店中正在运行的确切实现:纯 PHP、官方 Stripe SDK、安全的 webhook 以及自动化的邮件确认。你会看到各部分如何衔接——结账会话、跳转、webhook 验证、订单履行——从而在不向任何平台分一杯羹的情况下收取真实付款。这里的一切都是生产级代码,而非一次性演示。

为什么原生 PHP + Stripe 优于任何页面构建器

Shopify 在 Stripe 自身费用之外每笔交易额外收取 0.5–2%。WooCommerce 添加 14 个以上插件依赖项,将结账页面 LCP 拖慢至 3.8 秒。

  • 零平台交易费 – 仅 Stripe 的 2.9% + 30¢
  • 结账页面 Lighthouse 评分:98 对比 Shopify 典型的 61
  • 完整 Webhook 控制 – 自定义履单、库存、邮件
  • 无电商平台月度订阅费用
  • 拥有代码,随处部署,自由迁移

步骤 1 — 安装 Stripe PHP SDK

Composer 是最简洁的方法。如果您的主机不支持 Composer,可下载 SDK ZIP 放入项目根目录。

composer require stripe/stripe-php

在结账脚本顶部加载:

require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));

步骤 2 — 创建 Checkout 会话(服务器端)

永远不要在浏览器中放置密钥。创建前端 POST 的服务器端端点:

<?php
$session = \Stripe\Checkout\Session::create(['payment_method_types'=>['card'],'line_items'=>[['price_data'=>['currency'=>'usd','unit_amount'=>300000,'product_data'=>['name'=>'Business Pro Website']],'quantity'=>1]],'mode'=>'payment','success_url'=>'https://yoursite.com/success','cancel_url'=>'https://yoursite.com/pricing']);
echo json_encode(['url'=>$session->url]);

步骤 3 — 从前端重定向用户

在价格页面按钮上进行简单的 fetch 调用:

document.getElementById('buy-btn').addEventListener('click', async () => {
    const res = await fetch('/create-checkout-session.php', {method:'POST'});
    const data = await res.json();
    window.location.href = data.url;
});

步骤 4 — 处理 Webhook(订单履单)

支付成功后 Stripe 向您的 Webhook 端点发送 POST。这里触发邮件、更新库存并记录订单。

<?php
$event = \Stripe\Webhook::constructEvent(file_get_contents('php://input'), $_SERVER['HTTP_STRIPE_SIGNATURE'], getenv('STRIPE_WEBHOOK_SECRET'));
if ($event->type === 'checkout.session.completed') { fulfill_order($event->data->object); }
http_response_code(200);

在 Stripe 控制台注册 Webhook URL:开发者 → Webhook。

步骤 5 — 通过 PHPMailer 发送确认邮件

在 `fulfill_order()` 函数中从会话获取客户邮箱:

function fulfill_order($session) {
    $email = $session->customer_details->email;
    $mail = new PHPMailer\PHPMailer\PHPMailer(true);
    $mail->setFrom('[email protected]', '您的公司');
    $mail->addAddress($email);
    $mail->Subject = '收到付款 — 感谢您!';
    $mail->Body = '您的订单已确认。';
    $mail->send();
}

平台对比——定制 PHP、Shopify 与 WooCommerce

指标 定制 PHP + Stripe Shopify WooCommerce
结账 LCP 0.6秒 1.9秒 2.8秒
Lighthouse 评分 98 61 55
平台费/笔 0% 0.5–2% 0%*
月平台费用 $0 $39–$399 $0*
插件依赖 0 n/a 14+
代码所有权 100% 0% ~60%

实际商业影响

对于月销 $50,000 的商店,Stripe 的 2.9% + 30¢ 不可避免。但 Shopify 额外的平台费 0.5–2% 每月多花 $250–$1,000。

  • Shopify Advanced ($399/月) + $50k 的 0.5% = 每月 $649 平台成本
  • 定制 PHP + Stripe = 每月 $0 平台成本
  • $8,000 定制构建的盈亏平衡点:不到 9 个月
  • 结账页面加载速度快 3 倍 = 购物车放弃率明显降低

算法很简单:如果您每月处理超过 $15,000,定制 PHP 商店在不到一年内就能收回成本。

安全检查清单

  • 将密钥存储在环境变量中 – 永远不要硬编码到 PHP 文件
  • 始终使用 `constructEvent()` 验证 Stripe Webhook 签名
  • 在所有地方使用 HTTPS – Stripe 要求
  • 幂等性:处理前检查订单是否已存在
  • 对 `/create-checkout-session.php` 进行速率限制(每 IP 10 次/小时)

常见问题

使用 PHP 集成 Stripe 需要 Composer 吗?

推荐 Composer 但不是必须的。您可以下载 SDK 的 ZIP 文件并通过 require_once 手动引入。

没有 Shopify 这样的平台处理支付安全吗?

是的。Stripe 获得 PCI-DSS 一级认证。您的服务器永远不会处理原始卡号——Stripe 的 JS 在客户端进行令牌化。

如何在不扣费真实卡的情况下测试 Stripe?

使用前缀为 sk_test_ 的 Stripe 测试模式。使用测试卡 4242 4242 4242 4242,任意未来到期日和 CVC。

可以用这种方式添加订阅吗?

可以。将 Checkout Session 模式从"payment"改为"subscription",传入周期性价格 ID。Stripe 自动处理账单周期。

想要为您构建定制 Stripe 商店吗?

BuiltToWinWeb 构建带有原生 Stripe 集成、Lighthouse 98+ 评分和零月平台费的定制 PHP 电商商店。

商店通常在 3–4 周内交付。保证 24 小时内回复。

获取免费报价

基准数据来自相同 Hostinger VPS 托管上的受控测试。