如何将 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
实际商业影响
对于月销 $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 托管上的受控测试。