今日总收款
$0
真实回调统计
0个活跃通道 · 0个B站
B站当日订单量
0
成功订单
总0笔 · 0笔失败
成功率
—
等待真实付款
0笔成功 · 0笔失败
B站当日访问量
0
今日跳转
A站跳到B站的订单访问
活跃B站
0
未配置
绑定通道共0个
活跃A站
0
未配对
0个A站已与B站配对
通道健康
| 通道 | 状态 | 今日收款 | 日限使用 |
|---|
最近真实支付
| 状态 | 订单号 | 金额 | B站 | 时间 |
|---|
轮询分配比例
ℹ Shopify B站可作为独立收款通道绑定到网关。WooCommerce B站则先在自己的 WP 后台绑定 Stripe/PayPal/信用卡等收款方式,网关只负责建单、跳转和回调。
ℹ B站是实际收款的站点。WooCommerce B站需要先启用自己的收款插件,再安装 AB Gateway B-Site 桥接插件;Shopify B站则绑定 Admin Token 后作为独立收款站参与轮询。
A站以“商户应用”接入:应用持有应用ID、密钥和网关地址,并绑定一个轮询组。轮询组再决定哪些B站承接支付。
每个轮询组对应一个A站。Shopify / Shopyy A站使用直连跳转到B站支付;WooCommerce / 自建站可选择嵌入A站支付页或直连跳转。
这里是内置做账表。先在系统子账户里完成新增和授权,再进入子账户创建月份表;项目则直接创建在第一层。
全局通道分配(所有B站汇总)
加权轮询:weight 越大被分配概率越高。超限或停用通道自动跳过。连续失败5次自动禁用。
今日路由统计
| 通道 | 类型 | 权重 | 今日分配 | 成功 | 失败 | 成功率 | 今日收款 |
|---|
⚠ 连续失败 5 次自动禁用。日限额凌晨 00:00、月限额每月1日自动重置。
| 通道 | 单笔范围 | 日金额限额 | 日笔数限额 | 月金额上限 | 连续失败 | 状态 | 操作 |
|---|
真实运行时,这里直接读取后端订单会话。A站 Draft、B站 Draft/Order、付款状态和物流同步状态会集中在这里对账。
默认只看当日订单,历史订单请按日期从数据库查询或导出,避免订单越来越多后页面变慢。
筛选订单
0
当前结果笔数
筛选金额
$0
当前结果总金额
手续费
$0
按已支付订单核算
应收手续费
$0
应收手续费
待处理
0
PENDING / PROCESSING
已支付
0
SUCCESS
| 状态 | Session ID | 子账号 | A站订单/Draft | B站订单/Draft | 金额 | 通道 | B站 | A站 | 物流 | 时间 |
|---|
可结算金额
$0
扣除退款、争议与手续费
手续费合计
$0
按B站设置核算
应收手续费
$0
应收手续费
处理中
$0
等待通道清算
预留保证金
$0
争议/退款风险预留
结算批次
每个批次保留 A站/B站/通道维度,方便财务对账
| 批次号 | A站 | B站 | 通道 | 交易金额 | 手续费 | 退款/争议 | 应结算 | 状态 | 时间 |
|---|
结算规则
建议上线前按通道设置 T+N、手续费和预留比例
| 通道 | 结算周期 | 手续费 | 预留比例 | 最小结算 | 操作 |
|---|
争议单不应自动完成 A站订单。需要核对 A站订单、B站实收、通道流水、物流证明和 Webhook 验签记录后再处理。
争议列表
支持人工审核、上传证据和冻结结算
| 状态 | 争议单 | Session | 类型 | A站/B站 | 金额 | 原因 | 截止时间 | 操作 |
|---|
密钥只在创建或轮换时显示一次。正式环境必须按 A站/B站分开授权,避免一个密钥同时拥有过多权限。
接入密钥
用于 HMAC 签名、幂等请求和订单创建
| 名称 | 归属 | Key ID | 权限 | 状态 | 最后使用 | 操作 |
|---|
今日请求
18,492
A站/B站/后台 API
成功率
99.24%
失败 141 次
P95 延迟
286ms
Webhook 不计入
限流命中
32
保护通道和站点
接口用量
按 endpoint 统计,方便定位慢接口和异常调用
| Endpoint | 请求数 | 成功率 | P95 | 错误 | 限流 | 最近错误 |
|---|
最佳做法:Google / Meta / TikTok 广告代码继续放在 A站。SafeS Pay 只采集 A站带来的 gclid/fbclid/ttclid 等广告点击参数与订单 Session,等 B站付款 Webhook 验证成功后,再按 A站自己的广告凭证和出口环境回传。
待回传
0
已有点击ID,等待发送
已回传
0
广告平台已接收
缺少点击ID
0
自然流量或未采集到广告参数
异常/待配置
0
配置后可重试,不丢单
Google 回传诊断
按 A站核对今日成功订单、点击ID采集、转化名称和广告账户时区
等待加载...
| A站 | 广告账户 / 时区 | 转化名称 | 今日成功 | 可回传 | 疑似缺ID | 诊断 | 操作 |
|---|
A站回传配置
按实际投放平台新建配置,不投放的平台不显示,避免列表混乱
| A站 | 平台 | 广告账户 / Pixel | 转化事件 | 凭证环境 | 回传出口 | 增强转化 | 状态 | 最后更新 | 操作 |
|---|
回传事件
只有真实付款成功的 Session 才进入这里;Draft / 跳转不算成交
| 状态 | 平台 | Session | 子账号 | A站 | B站/通道 | 金额 | 点击ID | 回传出口 | 时间 | 错误/备注 | 操作 |
|---|
支付账户是“收款能力”,支付通道是“网关路由单元”。一个 B站可绑定多个支付账户,网关按健康、限额和权重选择。
账户列表
显示掩码凭证、所属 B站、健康状态和清算状态
| 账户 | 平台 | 所属B站 | 币种 | 健康 | 今日收款 | 清算状态 | 操作 |
|---|
Webhook Endpoint
所有回调必须验签、记录幂等、支持失败重试
| 名称 | 方向 | URL | 订阅事件 | 验签 | 状态 | 操作 |
|---|
推荐回调地址
复制到 Shopify / WooCommerce 后台;Stripe / PayPal 由 B站自身收款插件处理
Shopify B站 orders/paid: https://safespay.app/api/webhooks/shopify/orders-paid
WooCommerce B站支付成功: https://safespay.app/api/webhooks/wp/orders-paid
A站公开下单入口: https://safespay.app/shopify/cart-intake
备用公开入口: https://safespay.app/api/public/shopify/cart-intake
WooCommerce B站支付成功: https://safespay.app/api/webhooks/wp/orders-paid
A站公开下单入口: https://safespay.app/shopify/cart-intake
备用公开入口: https://safespay.app/api/public/shopify/cart-intake
A站创建结账 Session
POST https://safespay.app/shopify/cart-intake
X-Gateway-App-Id: as_xxxxx
X-Gateway-Timestamp: 1710000000
X-Gateway-Signature: sha256=...
X-Gateway-Idempotency-Key: cart-token-total
{ "amount": 129.99, "currency": "USD", "items": [], "shippingAddress": {}, "cartToken": "..." }
X-Gateway-App-Id: as_xxxxx
X-Gateway-Timestamp: 1710000000
X-Gateway-Signature: sha256=...
X-Gateway-Idempotency-Key: cart-token-total
{ "amount": 129.99, "currency": "USD", "items": [], "shippingAddress": {}, "cartToken": "..." }
B站插件回调
POST https://safespay.app/api/webhooks/wp/orders-paid
X-BSite-Id: bs_xxxxx
X-Signature: hmac-sha256...
{ "gatewaySessionId": "ss_xxx", "providerOrderId": "1234" }
X-BSite-Id: bs_xxxxx
X-Signature: hmac-sha256...
{ "gatewaySessionId": "ss_xxx", "providerOrderId": "1234" }
接入步骤
按顺序完成即可进入真实联调
1
创建 A站 / B站
分别生成 App ID、密钥、Webhook Secret,并绑定轮询组。
2
配置通道与回调
Shopify B站配置 orders/paid,WP B站安装插件,支付账户完成自己的收款绑定。
3
跑真实联调
用真实联调页创建测试订单,检查 A站订单、B站付款、Webhook、物流同步。
常见问题
异常处理 SOP
1
支付成功但 A站未完成
检查 Webhook 日志、幂等状态、金额币种是否一致,再手动重试回写。
2
B站被摘除轮询
检查 Shopify Token、Checkout 可访问性、代理出口、Webhook 连续失败原因。
3
物流未同步
确认 A站 tracking number 已填写,B站订单映射存在,并使用 notifyCustomer=false。
品牌信息
总账户设置后,所有账号、手机和电脑都按这个时区统计“今天/本周/本月”。
预览
SafeSPay
safespay.app
浅色后台、清晰菜单、保留 A/B站支付路由特色。
⚠ 当前方案不进入 Shopify 原生支付网关。A站 Shopify 负责商品展示和购物车,客户点击自定义支付按钮进入网关;网关创建 A站 Draft Order 锁单,再跳转到 B站 Shopify Checkout 付款;B站付款成功后才 complete A站 Draft Order。A站发货后,网关可把物流单号同步给 B站平台,但 B站不向客户发送发货通知。
入口方式
Cart Button
替换/隐藏原生 checkout 按钮
订单策略
A Draft → B Draft
A站锁单,B站生成收款链接
支付承接
B Shopify
进入B站 Shopify Checkout
回写状态
A Order Paid
B站付款成功后回写A站
创建支付链接
选择 A站、金额和客户信息,网关实时路由到可用 B站通道并返回付款链接
尚未创建
链路顺畅性检查
A站 Shopify 下单 → B站 Shopify 付款的关键卡点
| 检查点 | 当前设计 | 是否顺畅 | 注意事项 |
|---|
Shopify B站轮询池
每个 Shopify A站 可配多个 Shopify B站,按权重选择承接付款站
| A站 Shopify | 可用 Shopify B站池 | 权重比例 | 可用通道 |
|---|
客户侧流畅链路
A站 Shopify 不需要 Payments Partner
A站主题按钮示例
放在 cart 页或 App Embed 中
接口闭环
后端真正需要实现的核心接口
| 步骤 | 接口 | 作用 | 状态 |
|---|
外部结账流水
A站发货后,可将物流单号同步到对应 B站订单;B站同步不通知客户
| 状态 | Session | A站Draft | B站Draft/Order | A站 | B站 | 金额 | A站物流 | B站同步 | 操作 |
|---|
| 状态 | 类型 | 来源/目标 | Session | 事件 | HTTP | 耗时 | 时间 |
|---|
邮件只作为通知层,不改变订单支付状态。A站客户通知、B站平台同步通知和物流邮件建议分模板配置,避免误发。
B站接入流程(收款方)
1
在网关后台注册 B站账号
管理员在「B站管理」页面点击「注册B站」,填写站点信息。系统生成 B站账号ID 和 B站密钥。
2
B站先绑定自己的收款
如果 B站是 WooCommerce,需要先在该 WP 后台启用 Stripe / PayPal / 信用卡等 WooCommerce 支付方式;如果 B站是 Shopify,则配置该 Shopify 店铺自己的收款能力。
3
B站安装桥接插件
WooCommerce B站安装 AB Gateway B-Site 插件,填入网关地址、B站账号ID和共享密钥。插件不代收款,只负责接收网关建单、返回 WooCommerce 付款链接、付款成功后回调网关。
// WooCommerce B站插件配置示例
GATEWAY_URL = "https://your-gateway.com"
BSITE_ACCOUNT_ID = "bs_xxxxxxxx"
BSITE_SECRET_KEY = "bsk_xxxxxxxxxxxxxxxx"
GATEWAY_URL = "https://your-gateway.com"
BSITE_ACCOUNT_ID = "bs_xxxxxxxx"
BSITE_SECRET_KEY = "bsk_xxxxxxxxxxxxxxxx"
4
加入A站轮询组
网关按轮询组选择可用 B站。选中 WP B站后,网关创建 WooCommerce 待支付订单并把客户跳转到该 B站自己的付款页。
POST https://your-bsite.com/wp-json/ab-gateway/v1/create-order
POST https://your-gateway.com/api/webhooks/wp/orders-paid
POST https://your-gateway.com/api/webhooks/wp/orders-paid
A站接入流程(导流方)
1
在网关后台注册 A站账号
管理员在「A站管理」页面注册A站,系统生成 A站账号ID 和 A站密钥。
2
在网关后台配置轮询组
在「轮询组」页面,将该A站与一个或多个B站绑定,并配置权重和支付呈现方式。Shopify / Shopyy A站走直连跳转,WooCommerce / 自建站可嵌入A站支付页。
3
A站接入外部结账按钮
没有 Shopify Payments Partner 权限时,A站不接入 Shopify 原生支付网关,而是在购物车页/App Embed 添加按钮,把 cart token 和商品行发送到网关。
// A站外部结账配置
GATEWAY_URL = "https://your-gateway.com"
ASITE_ACCOUNT_ID = "as_xxxxxxxx"
ASITE_SECRET_KEY = "ask_xxxxxxxxxxxxxxxx"
GATEWAY_URL = "https://your-gateway.com"
ASITE_ACCOUNT_ID = "as_xxxxxxxx"
ASITE_SECRET_KEY = "ask_xxxxxxxxxxxxxxxx"
4
支付完成后回写 Shopify
网关收到B站支付成功回调后,通过 Shopify Admin API complete Draft Order,并在会话流水里记录 B站订单映射。
POST /api/webhooks/shopify/orders-paid
X-Shopify-Hmac-SHA256: ...
{ "note_attributes": [{ "name": "gateway_session_id", "value": "ss_xxx" }] }
X-Shopify-Hmac-SHA256: ...
{ "note_attributes": [{ "name": "gateway_session_id", "value": "ss_xxx" }] }
完整支付链路
🛍 A站(Shopify)
客户加购物车
客户加购物车
→
🌐 网关
按权重选择B站
按权重选择B站
→
💳 B站收银页
WP/Shopify自有收款
WP/Shopify自有收款
→
✅ Stripe/PayPal
实际扣款
实际扣款
→
🌐 网关回调
分发通知
分发通知
→
📦 A站完成订单
+B站记录收款
+B站记录收款
只有 Shopify B站收款通道需要固定出口环境。Stripe / PayPal / Braintree 等收款方式直接在 B站自身后台绑定,不需要在这里配置代理。
Shopify 通道环境
把原来的“代理配置”收敛为 Shopify 支付通道配置
| 通道/站点 | 角色 | 收款平台 / API模式 | 固定出口 | 出口IP/地区 | 状态 | 上次检测 | 操作 |
|---|
SOCKS5 出口账户
host / port / username / password
| 名称 | SOCKS5 | 账号 | 地区 | 出口IP | 状态 | 操作 |
|---|
最近跳转效率摘要
真实线上订单 · 自动拆分路由 / A站 Draft / B站付款链接
等待加载...
最近 7 天慢 B站
| B站 | 平均总耗时 | B站建单 | 样本 |
|---|
最近 7 天最慢订单
| 时间 | A→B | 总耗时 | 拆分 |
|---|
生产就绪检查
服务器上线前必须逐项确认
等待检查...
服务状态
Backend API
等待检测...
生产安全状态
数据库同步 · 自动备份 · 服务器资源
等待检测...
备份快照
上线前、修改 Token 前、恢复前都建议生成快照
| 文件 | 大小 | 更新时间 | 用途 | 操作 |
|---|
A站接入密钥
A站前台 cart-intake 签名用,密钥轮换后只显示一次
| A站 | 类型 | App ID | 签名密钥 | 状态 | 更新时间 | 操作 |
|---|
测试结账
创建真实路由 Session;Shopify Token 未绑定会阻止创建,避免假链接
尚未创建
路由预检
下单前检查 A站当前可用 B站池和排除原因
尚未检查
Shopify A/B站绑定
保存 Admin Token、Webhook Secret,并调用 Shopify shop 查询测试
| 站点 | 类型 | 健康 | Shopify域名 | API版本 | Token | Webhook Secret | 上次测试 | 操作 |
|---|
真实会话流水
创建结账后,只有 B站真实付款回调才会更新为成功
| 状态 | Session | A站/B站 | 金额 | Checkout | 过期时间 | 支付时间 | 物流 | 操作 |
|---|
支付异常审核
金额/币种不匹配的 B站 Webhook 会进入这里
| 状态 | Session | 期望 | 实际 | 错误原因 | 事件 | 时间 | 操作 |
|---|
Webhook 日志
幂等状态、失败原因、重试次数
| 状态 | 事件ID | 店铺 | Topic | 次数 | 失败原因 | 时间 | 操作 |
|---|
审计日志
后台敏感操作记录
| 操作人 | 动作 | 内容 | 时间 |
|---|
安全配置
通知配置
风控默认值
定时任务
后台账号
超级管理员可创建子账号,并划分她名下可查看统计的 A站、B站、通道和轮询组
| 账号 | 角色 | 状态 | 权限 | 数据范围 | 最后登录 | 操作 |
|---|