什么是支付网关?在线支付如何运作,通俗讲解
支付网关是在结账时安全地获取顾客支付信息,把它们传递给银行和卡组织进行审批,然后返回“已批准”或“已拒绝”结果的服务,通常在几秒钟之内完成。它是你的应用与金融体系之间的桥梁。Stripe、PayPal、Adyen、Square 和 Braintree 都是广为人知的例子。
如今,这些公司大多会把支付网关与你收款所需的其他一切打包在一起,因此“支付网关”“支付处理商”和“支付服务商”经常被用来指代同一件事。
用 AI 构建应用时,为什么支付网关很重要
“添加支付功能”是人们向 AI 生成工具提出的最常见的请求之一,也是最容易在细节上出错的一项。代码本身通常很短。真正重要的,是围绕它的各种决定:
- 选哪家服务商,这取决于你的业务、所在国家以及你销售的产品。
- 代码在哪里运行。 支付密钥必须留在服务器上,绝不能出现在浏览器中。
- 你的应用如何得知支付已成功。 可靠的方式是通过服务商发来的 Webhook,而不是依赖顾客跳转到“感谢购买”页面。
- 你的法律与税务责任,这取决于谁是销售记录方。
了解支付网关的作用,能帮你提出清晰的指令,并检查最终结果是否安全。
日常类比
想象一下在商店里用银行卡付款。
柜台上的银行卡终端就是网关:它安全地读取你的卡,然后把请求发送出去。它本身不做任何决定,只是把“这位顾客能否支付 40 欧元?”这个问题沿着链条传递给你的银行,并把答案带回来。商家的银行(收单行)和你的银行(发卡行)负责做决定,而连接它们的是 卡组织(Visa、Mastercard)。
线上支付网关就是为网络重新打造的那台终端,外加处理网络上传来的银行卡信息所需的安全保障。
线上银行卡支付如何运作
顾客点击“支付”之后的几秒钟内,会发生以下事情:
| 步骤 | 发生了什么 | 由谁完成 |
|---|---|---|
| 1. 结账 | 顾客在安全的支付表单中输入银行卡信息 | 支付服务商的表单或页面 |
| 2. 加密 | 信息被加密,并发送给网关 | 网关 |
| 3. 授权请求 | 请求被发送到卡组织和顾客的银行 | 处理商、卡组织 |
| 4. 检查 | 银行检查资金和欺诈信号,并可能要求额外验证,例如 3D Secure | 发卡行 |
| 5. 返回结果 | 批准或拒绝的结果返回给你的应用 | 网关 |
| 6. 扣款与结算 | 资金被收取,并在服务商的打款周期之后,扣除费用转入你的银行账户 | 处理商、收单行 |
有两点值得了解:
- 授权并不等于已经收到钱。 资金会先被预留,然后被扣款,再结算到你的账户,这通常要过几天。
- 你的应用根本不应该看到银行卡号。 现代服务商会为你提供由它们控制的托管式结账页面或嵌入式字段,你的应用只会得到一个支付的引用。
主要组成部分,以及由谁负责
| 组成部分 | 含义 |
|---|---|
| 支付网关 | 安全地获取支付信息并将其传递出去。 |
| 支付处理商 | 在各银行之间传输交易数据。 |
| 商户账户 | 代你接收银行卡付款的账户。Stripe 等服务商会将其打包在一起。 |
| 收单行(Acquirer) | 商家一方的银行。 |
| 发卡行(Issuer) | 顾客的银行,负责批准或拒绝。 |
| 卡组织(Card network) | Visa、Mastercard 等,连接收单行与发卡行。 |
| 销售记录方(Merchant of record) | 在法律上向顾客销售商品,并对税务、退款和争议负责的企业。 |
一些服务商(Paddle、Lemon Squeezy)自己充当销售记录方,为你处理销售税和增值税,作为交换收取更高的费用。另一些(Stripe、PayPal)则让你自己成为销售记录方,并提供可选的税务工具。若想客观地了解各种选择,请参阅 Stripe 与 Paddle 及 Lemon Squeezy 对比和 Stripe 与 PayPal 对比。
实际例子:销售一门课程
你以 99 欧元的价格销售一门在线课程,并请你的 AI 生成工具添加一个“购买”按钮。
- 顾客点击购买。你的服务器使用其私密密钥,请求服务商为这笔 99 欧元的交易创建一个结账会话,并拿到一个链接。
- 顾客被引导至服务商的托管式结账页面,输入银行卡信息,并在需要时通过银行完成 3D Secure 验证。
- 付款获得批准,顾客被重定向到你的“成功”页面。
- 另外,服务商会向你的服务器发送一个 Webhook:“会话 X 的付款已成功。”你的服务器会验证 Webhook 的签名,找到对应订单,将其标记为已付款,并解锁课程。
- 几天后,扣除手续费后的款项会进入你的银行账户。
第 4 步最为关键。如果你改为在成功页面上解锁课程,那么任何找到该 URL 的人都可以免费获得课程;而那些在浏览器提前关闭时已经付款的顾客,则会付了钱却什么也得不到。
关键术语
| 术语 | 含义 |
|---|---|
| 结账会话(Checkout session) | 由你的服务器为某一笔特定购买创建的一次性支付页面或流程。 |
| 测试模式(Test mode) | 使用测试密钥和测试卡号的沙盒环境,不会有真实资金流动。 |
| 可公开密钥 / 私密密钥(Publishable / secret key) | 可公开密钥可以出现在浏览器代码中;私密密钥必须留在服务器上。 |
| 3D Secure | 一个额外步骤,由顾客与其银行确认付款。在欧洲,根据强客户认证(SCA)规则很常见。 |
| PCI DSS | 卡行业针对任何处理银行卡数据的人所制定的安全标准。 |
| 拒付(Chargeback) | 顾客向其银行对某笔付款提出争议,款项被追回。 |
| 退款(Refund) | 由你主动退还的款项。 |
| 打款(Payout) | 服务商将你已收取的款项转入你银行账户的操作。 |
常见误解
- “我必须存储银行卡号才能再次向顾客收费。” 不必。服务商会存储银行卡,并为你提供一个引用令牌,用于重复扣款和订阅。你永远不应该自己存储银行卡号。
- “成功页面就代表付款成功了。” 请通过服务器上的 Webhook 确认付款。重定向可能被跳过、被伪造,或者根本不会发生。
- “各家支付服务商的费用差不多。” 费用会因服务商、国家、卡的类型以及是否包含税务处理而有所不同。请查看每家服务商在你所在国家的最新定价页面。
- “使用 Stripe 就等于符合 PCI 认证。” 它让合规变得容易得多,因为银行卡数据由服务商保管,但你仍然需要完成一份(通常较简短的)自评估。
- “测试模式和正式模式的行为完全一样。” 两者非常接近,但正式模式需要完成全部验证的账户、为正式环境配置好的 Webhook 端点,以及真实的银行信息。
- “支付网关会替我处理税务。” 只有当它充当销售记录方,或者你开启并配置了它的税务功能时才会如此。请查阅当地法规,或咨询专业顾问。
向 AI 生成工具提出的要求
- “为[产品]添加[Stripe] Checkout。在服务器上使用来自环境变量的私密密钥创建会话。”
- “只有在经过验证的 Webhook 到达后,才把订单标记为已付款,并检查 Webhook 的签名。”
- “处理 Webhook 被重复发送的情况,不要产生重复订单。”
- “使用测试模式密钥,并带我使用服务商的测试卡号进行测试,包括一张被拒绝的卡。”
- “如果顾客付款后关闭了标签页,会发生什么?”
- “列出所有使用支付密钥的地方,并确认私密密钥永远不会到达浏览器。”
Mythex 中的支付网关
Mythex 不为你构建的应用提供内置支付功能,也没有一键“连接 Stripe”的选项。你需要先在你选择的服务商处创建账户,将其测试密钥添加为项目密钥,然后要求智能体在服务器端构建结账流程。在预览中使用服务商的测试卡进行测试,然后再发布。文档中的使用 Stripe 收款一文有详细的步骤说明,而Webhook则涵盖了确认付款的环节。
如需分步构建,请参阅如何为应用添加支付功能,如果是定期计费,则参阅如何使用 Stripe 添加订阅。
常见问题
简单来说,什么是支付网关?
支付网关是一种服务,它安全地从你的结账页面获取顾客的支付信息,把它们发送给银行和卡组织进行审批,并把批准或拒绝的结果返回给你的应用,通常只需几秒钟。
支付网关和支付处理商有什么区别?
严格来说,网关是负责捕获和传递支付信息的安全入口,而处理商负责在银行之间转移交易。实际上,Stripe、PayPal 和 Adyen 等现代服务商会把两者以及商户账户一起打包成一项服务,因此这些术语经常被混用。
接受银行卡付款需要符合 PCI 认证吗?
凡是接受银行卡的企业,都必须以某种形式符合 PCI DSS 安全标准。使用托管式结账页面或服务商提供的嵌入式支付字段,意味着银行卡号永远不会经过你的服务器,这大大减少了你需要承担的责任。你的服务商会告诉你适用哪种自评估。
什么是销售记录方(merchant of record)?
销售记录方是在法律上向顾客销售商品的企业,负责征收和缴纳销售税或增值税,并处理退款和拒付争议。Paddle 和 Lemon Squeezy 等服务会替你充当销售记录方;而使用 Stripe 或 PayPal 时,通常由你自己承担这一角色。
我能为 AI 生成的应用添加支付功能吗?
可以。AI 生成工具可以编写代码,把你的应用连接到 Stripe 等服务商:在服务器上创建结账会话,处理 Webhook,并更新订单。你仍然需要在该服务商拥有自己的账户,并在正式上线之前,在其测试模式中充分测试。