Stripe 支付平台使用指南
Stripe 是全球领先的在线支付解决方案,为开发者和企业提供强大、灵活的支付基础设施。
Stripe 基础
什么是 Stripe?
Stripe 是一个全面的支付平台,提供:
- 在线支付处理
- 订阅管理
- 发票系统
- 支付 API
const stripeFeatures = {
globalSupport: '200+ 国家和地区',
currencies: '135+ 种货币',
paymentMethods: [
'信用卡',
'借记卡',
'Apple Pay',
'Google Pay',
'银行转账'
]
};
账户设置
注册流程
- 创建 Stripe 账户
- 完成身份验证
- 配置支付设置
- 获取 API 密钥
API 密钥管理
# 设置 Stripe API 密钥
export STRIPE_SECRET_KEY='sk_test_your_secret_key'
export STRIPE_PUBLISHABLE_KEY='pk_test_your_publishable_key'
支付集成
前端集成(React)
import { loadStripe } from '@stripe/stripe-js';
import { Elements, CardElement, useStripe, useElements } from '@stripe/react-stripe-js';
const stripePromise = loadStripe('your_stripe_public_key');
function PaymentForm() {
const stripe = useStripe();
const elements = useElements();
const handleSubmit = async (event) => {
event.preventDefault();
const { error, paymentMethod } = await stripe.createPaymentMethod({
type: 'card',
card: elements.getElement(CardElement)
});
if (!error) {
// 发送支付请求到后端
const response = await fetch('/api/charge', {
method: 'POST',
body: JSON.stringify({
payment_method_id: paymentMethod.id
})
});
}
};
return (
<form onSubmit={handleSubmit}>
<CardElement />
<button type="submit">支付</button>
</form>
);
}
后端集成(Node.js)
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
async function createPaymentIntent(amount) {
const paymentIntent = await stripe.paymentIntents.create({
amount: amount * 100, // 以分为单位
currency: 'usd',
payment_method_types: ['card']
});
return paymentIntent.client_secret;
}
高级功能
订阅管理
// 创建订阅
const subscription = await stripe.subscriptions.create({
customer: 'customer_id',
items: [{ price: 'price_monthly_plan' }]
});
发票系统
// 创建发票
const invoice = await stripe.invoices.create({
customer: 'customer_id',
collection_method: 'send_invoice',
days_until_due: 30
});
安全与合规
PCI DSS 合规
Stripe 提供端到端的 PCI DSS 合规解决方案,无需开发者直接处理敏感支付数据。
欺诈防护
const fraudPreventionSettings = {
riskLevel: 'advanced',
checks: [
'地理位置验证',
'异常交易检测',
'多重身份验证'
]
};
Webhook 处理
const express = require('express');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
app.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => {
const sig = request.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(
request.body,
sig,
process.env.STRIPE_WEBHOOK_SECRET
);
} catch (err) {
return response.status(400).send(`Webhook Error: ${err.message}`);
}
// 处理不同类型的 Stripe 事件
switch (event.type) {
case 'payment_intent.succeeded':
// 处理支付成功
break;
case 'payment_method.attached':
// 处理支付方式绑定
break;
// 其他事件处理
}
response.json({received: true});
});
国际化支持
多币种处理
const supportedCurrencies = [
'USD', 'EUR', 'GBP', 'CNY',
'JPY', 'AUD', 'CAD', 'CHF'
];
const currencyConversion = await stripe.exchangeRates.list({
from: 'USD',
to: 'CNY'
});
开发工具
- Stripe CLI
- Stripe Dashboard
- 测试卡号
- Stripe 文档
定价模型
const stripePricing = {
onlinePayments: {
domesticCards: '2.9% + $0.30',
internationalCards: '3.9% + $0.30'
},
recurring: {
subscriptions: '0.5% 额外费用'
},
additionalServices: {
invoicing: '免费',
disputeHandling: '每笔 $15'
}
};
最佳实践
- 使用最新 SDK
- 实施安全最佳实践
- 处理所有 Webhook 事件
- 使用测试模式
- 持续监控交易
结论
Stripe 提供了强大、灵活且易于使用的支付解决方案。通过其全面的 API 和工具,开发者可以快速构建安全、高效的支付系统。