Stripe 是全球知名的支付处理平台,支持多种支付方式和多国货币。通过集成 Stripe 订阅支付,外贸独立站可以轻松接收全球订单,并实现便捷的跨境支付。本文将详细介绍如何通过 PHP 集成 Stripe 订阅支付功能,帮助您快速实现会员订阅和定期计费功能。
Stripe 订阅支付的优势
Stripe 订阅 API 提供了一种简单的方式,帮助您在网站中集成定期付款功能。通过 Stripe 支付网关,您可以轻松实现会员订阅计划,支持全球多种信用卡支付,包括:
- Visa(维萨)
- Mastercard(万事达卡)
- American Express(美国运通卡)
- Discover(发现卡)
- JCB(日本商联卡)
- Diners Club(大来卡)
- UnionPay(银联卡)
Stripe 订阅支付允许用户根据特定时间间隔定期付费,而无需离开您的网站。接下来,我们将通过 PHP 实现以下功能:
- 创建 HTML 表单,用于选择订阅计划并提交信用卡信息。
- 使用 Stripe JS 库将 Stripe 卡元素附加到 HTML 表单。
- 通过 Stripe API 安全传输卡信息、验证并创建订阅。
- 使用 Stripe API 检索 PaymentIntent 和订阅信息。
- 通过 3D 安全身份验证(SCA)确认付款。
- 验证信用卡信息并创建订阅计划。
- 将交易数据和订阅信息存储到数据库,并显示付款状态。
文件结构
在开始之前,我们先看一下项目的文件结构:
stripe_subscription_payment_php/
├── config.php // 存放 Stripe API 和数据库配置
├── dbConnect.php // PHP 与 MySQL 数据库连接
├── index.php // Stripe 订阅表单
├── payment_init.php // 处理订阅付款
├── payment-status.php // 付款状态页面
├── stripe-php/ // Stripe PHP 库
├── js/
| └── checkout.js // 订阅结账处理脚本
└── css/
└── style.css // 页面样式
Stripe 测试 API 密钥
在正式上线之前,您需要测试订阅支付流程。以下是获取测试 API 密钥的步骤:
- 登录您的 Stripe 账户,并导航至 开发者 » API 密钥 页面。
- 在 测试数据 块中,找到 可发布密钥 和 秘密密钥。单击 展示测试密钥 按钮即可查看。
创建数据库表
在数据库中创建以下三个表,用于存储订阅信息:
- plans:保存订阅套餐信息。
- users:保存会员信息。
- user_subscriptions:保存订阅信息。
以下是 user_subscriptions
表的创建语句:
sql
CREATE TABLE user_subscriptions
(
id
int(11) NOT NULL AUTO_INCREMENT,
user_id
int(11) NOT NULL DEFAULT 0 COMMENT ‘users 表外键’,
plan_id
int(5) DEFAULT NULL COMMENT ‘plans 表外键’,
payment_method
enum(‘stripe’) COLLATE utf8_unicode_ci NOT NULL DEFAULT ‘stripe’,
stripe_subscription_id
varchar(50) COLLATE utf8_unicode_ci NOT NULL,
stripe_customer_id
varchar(50) COLLATE utf8_unicode_ci NOT NULL,
stripe_payment_intent_id
varchar(50) COLLATE utf8_unicode_ci NOT NULL,
paid_amount
float(10,2) NOT NULL,
paid_amount_currency
varchar(10) COLLATE utf8_unicode_ci NOT NULL,
plan_interval
varchar(10) COLLATE utf8_unicode_ci NOT NULL,
plan_interval_count
tinyint(2) NOT NULL DEFAULT 1,
customer_name
varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
customer_email
varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
created
datetime NOT NULL,
plan_period_start
datetime DEFAULT NULL,
plan_period_end
datetime DEFAULT NULL,
status
varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Stripe API 和数据库配置
在 config.php
文件中,设置 Stripe API 和数据库的常量变量:
php
启用 Stripe 支付网关
在完成 API 集成并测试成功后,您可以通过以下步骤启用 Stripe 支付网关:
- 登录您的 Stripe 账户,并导航至 开发者 » API 密钥 页面。
- 从 实时数据 部分获取 API 密钥(可发布密钥和秘密密钥)。
- 在
config.php
文件中,将测试 API 密钥替换为实时 API 密钥。
总结
Stripe 订阅支付 API 是实现定期计费功能的最佳选择。通过本文的示例脚本,您可以轻松集成 Stripe 订阅支付功能,并支持 3D 安全身份验证(SCA)。根据您的需求,您还可以进一步扩展此脚本的功能。