Stripe 是一家提供支付处理服务的公司,它允许商家轻松地接受在线支付。以下是关于 Stripe 的一些详细信息,涵盖了其功能、使用场景和优势:### Stripe 简介- **成立时间**:2010年- **总部**:美国旧金山- **服务范围**:全
摘要:在线支付系列(三):Stripe & 信用卡——一件跨境商品的卡支付之旅 $149.99 的限量球鞋,3 秒钟经历了什么? 纽约的 John 深夜刷手机,在一个中国独立站上发现了一双限量球鞋,标价 $149.99。他
在线支付系列(三):Stripe & 信用卡——一件跨境商品的卡支付之旅
$149.99 的限量球鞋,3 秒钟经历了什么?
纽约的 John 深夜刷手机,在一个中国独立站上发现了一双限量球鞋,标价 $149.99。他决定入手。
页面弹出支付框,他选择了信用卡支付,输入了 Visa 卡号、有效期、CVC。
突然,屏幕中间弹出一个窗口——他的银行要求输入手机验证码。他打开短信,输入 6 位数字,点击确认。
"Payment Successful."
这整个过程大约 10 秒。但在这 10 秒钟里,John 的 $149.99 经历了一段横跨太平洋的旅程:从他的 Chase 银行账户出发,穿过 Visa 网络,经过 Stripe 的收单系统,最终到达中国独立站商户的 Stripe 余额里。
中间那个弹窗是什么?为什么 John 的卡号没有直接传到商户的服务器?如果 John 过了三天说"我没买过这双鞋"怎么办?
这篇文章,就从这笔 $149.99 说起。
一、信用卡支付的特殊之处
在上一篇中,我们对接了支付宝和微信——它们的流程相对直接:创建订单、生成二维码、收到回调、更新状态。
信用卡支付的复杂度要高出一个量级,因为它多了几层东西:
授权与捕获可以分离——钱可以先"冻住",过几天再真正扣
3D Secure 身份验证——银行可能要求用户额外验证身份(就是 John 收到的那个短信验证码弹窗)
PCI DSS 合规——你碰了信用卡号,就要遵守一套严格的安全标准
争议/拒付机制——持卡人可以在交易完成后反悔,向银行申请退款
好消息是:Stripe 帮你处理了绝大部分复杂度。但你仍然需要理解这些概念,才能做出正确的技术决策。
二、授权与捕获:先冻住,再扣款
让我们先理解信用卡支付中最核心的概念——授权(Authorization)和捕获(Capture)的分离。
2.1 两步走的逻辑
当 John 输入卡号点击支付时,实际上发生了两件不同的事:
第一步:授权(Authorization) 第二步:捕获(Capture)
┌──────────────────────┐ ┌──────────────────────┐
│ Chase 银行冻结 $149.99 │ │ 实际从 John 卡里扣款 │
│ 返回授权码 │ ── 最多7天 → │ 资金进入清结算流程 │
│ 钱还没有真正转走 │ │ 商户开始等待到账 │
└──────────────────────┘ └──────────────────────┘
为什么要分两步?因为很多场景需要"先确认用户有钱,但暂时不扣":
酒店:入住时授权 ¥2000,退房时按实际消费 ¥1200 捕获
电商预售:下单时授权,发货时才捕获
订阅试用:授权 $0.00 验证卡片有效,试用期结束后捕获第一笔月费
2.2 在 Stripe 中怎么用?
Stripe 的 Payment Intents 默认是授权后自动捕获——也就是说用户支付成功后立刻扣款。对于大多数场景,这就够了。
如果你需要手动控制捕获时机(比如电商需要发货后再扣款),只需要一个参数:
# 创建时设置手动捕获
intent = stripe.PaymentIntent.create(
amount=14999,
currency="usd",
capture_method="manual", # 改成手动捕获
)
# 发货后,手动捕获
stripe.PaymentIntent.capture("pi_xxx")
注意:授权有有效期(通常 7 天)。超过有效期没有捕获,授权会自动释放——钱回到用户卡里。
三、3D Secure:那个弹窗是怎么回事?
回到 John 的故事。他输入卡号后弹出了一个验证窗口,要求输入短信验证码。这就是 3D Secure(3DS)。
3.1 3DS 是什么?
3DS 是 Visa、Mastercard 等卡组织推出的额外身份验证层。它在标准支付流程中插入了一步:把用户重定向到发卡行的验证页面,确认"正在用卡的人真的是卡的主人"。
