Skip to content

支付通道总览 ​

加第一个通道之前,先绑手机验证器

不绑就加不了通道,这是故意的。往下看「为什么」。

它在哪 ​

后台 → 站点管理 → 支付通道

先理解这几件事 ​

一个通道 = 一个收款账号 ​

同一家(比如 Stripe)可以建多个通道:一个沙箱测试用、一个正式收款用。 买家在结算页看到的是已启用的那些。

沙箱 / 正式 ​

每个通道有一个「环境」开关:

环境用什么密钥会真的扣钱吗
沙箱pk_test_ / sk_test_不会,用测试卡号
正式pk_live_ / sk_live_会

沙箱订单照常计入报表

这是刻意的:上线前会清测试数据、停用沙箱通道, 在那之前把沙箱单藏起来只会让整个仪表盘一片 0,让人以为报表坏了。

上线前一定要:停用沙箱通道 + 清掉测试订单。

通道只能停用,不能删 ​

为什么不给删

老订单里记着「这笔钱是从哪个通道收的」。删掉通道之后, 那些老订单就退不了款了 —— 系统不知道该用哪套密钥去调退款接口。

要换收款账号:新建一个通道,把旧的停用。旧订单仍然能正常退款。

第 1 步:绑定手机验证器(TOTP) ​

第一次进这个页面时,会要求你先绑定。

  1. 手机上装一个验证器 App:Google Authenticator、Microsoft Authenticator、 1Password、Authy 都行
  2. 后台会显示一个二维码,用 App 扫
  3. 把 App 上显示的 6 位数字填回后台,点确认

绑定之后不能改绑

后台没有改绑入口,这是刻意的 —— 能改绑就意味着攻击者也能改绑, 那这道锁等于没有。

所以扫码那一步一定要做对:

  • 用一个你不会弄丢的手机
  • 验证器 App 支持云备份的话(1Password / Authy),打开它
  • 或者把二维码下面那串密钥文本抄下来,锁进密码管理器

手机丢了的话,只能让能 SSH 上服务器的人手工清掉数据库里的那条记录。

为什么支付通道要单独加一道锁 ​

后台账号一旦被盗,攻击者最先做的就是把收款账号改成自己的 —— 而这件事在报表上几天都看不出来(订单照常、金额照常,只是钱进了别人口袋)。

系统在改支付通道时会发紧急推送告警,但通知是事后的, 挡不住"进后台先把通知关掉再改收款账号"。所以要在动作发生的那一刻验一次。

每次改支付通道都要输一次 6 位码

不只是第一次绑定。新增、修改、启用/停用通道都要。

验证码一码一用(用过的 90 秒内不能再用),防止被截获后重放。

第 2 步:新建通道 ​

点对应支付方式的「新增」按钮,填的字段由那家决定:

通用字段:

字段说明
环境沙箱 / 正式
前台展示名买家在结算页看到的名字,留空用默认
限定收货国家留空 = 所有国家都能用这个通道。填了就只对这些国家显示
排序结算页上的先后顺序,小的在前
启用关掉的话买家看不到它

密钥保存后会变成圆点

那是掩码。改别的字段时不用重新填一遍密钥,系统认得出掩码。 要换密钥就直接贴新的进去。

第 3 步:配回调(webhook) ​

这一步不做的话,买家付了钱订单还是「待付款」

必须做。 详见 回调(webhook)是什么。

顺序很重要:先在后台把通道建出来并保存 → 在列表里点「复制」拿到回调地址 → 再去支付平台粘上。因为地址里带着通道 ID,而 ID 是保存之后才有的。

地址不用自己拼

通道列表里有一列**「回调地址(webhook)」,后面就是复制**按钮,点一下就好。 配置密钥的弹窗里也有同一个地址 —— 你正好要在那儿填 Webhook 密钥。

第 4 步:用沙箱走一遍完整流程 ​

不要跳过这一步。要走完整条:

加购 → 结算 → 选这个支付方式 → 付款 → 跳回来 → 订单变成「已付款」→ 收到订单确认邮件

任何一环卡住都在这一步解决,不要拿真实买家去试。

第 5 步:换正式密钥 ​

沙箱和生产是同一条通道上的一个开关

不是两条通道。一个支付方式只能建一条(再建会报「已配置过 xxx」), 所以你切换「环境」时看到的密钥框内容是一样的 —— 这是正常的, 不是页面出错。

回调地址也从头到尾不变(地址里的数字是通道 ID)。

沙箱跑通之后:

  1. 去支付平台的正式环境建应用/拿 live 密钥
  2. 在正式环境里再配一次 webhook,地址填同一个(沙箱阶段用的那个)
  3. 回后台打开那条通道 → 环境切到「生产」 → 密钥框会自动清空并弹红色提示 → 填 live 的值 → 保存(要过 TOTP)
  4. 点「测试连接」,确认它回的是「(生产)」
  5. 清掉测试订单

最容易漏的:正式环境的 webhook 没配

沙箱配过了就以为完事了 —— 但沙箱和正式是两套独立的 webhook 配置, 地址虽然一样,签名密钥/Webhook ID 是各自生成的,必须各配一次。

漏了的话:上线后买家付了钱,订单全是「待付款」,半小时后被自动关单。

为什么切环境会把密钥清空

不清的话,框里显示的掩码 ••••••1234 看着是填好的, 而系统对密钥的规则是「空或掩码 = 不修改」—— 结果是通道标着生产、握着沙箱密钥,每一笔真实付款的回调都验签失败, 订单永远停在待付款,而后台一切正常。前后端都做了强制。

常见问题 ​

结算页没有任何支付方式

  1. 通道启用了吗
  2. 「限定收货国家」是不是填了,而买家的国家不在里面
  3. 密钥填对了吗(沙箱环境填了 live 密钥这类)

买家付完钱跳回来显示「支付处理中」

这是正常的。 支付结果页会轮询几秒 —— 从 Stripe/PayPal 跳回来时,webhook 常常还没到。

如果一直转圈超过一分钟,那就是 webhook 没配好,去 webhook 那篇查。

这份文档只讲后台怎么用,不含任何真实密钥