跳转到主要内容

安全

  • 将 API 密钥存储在环境变量中
  • 永远不要将密钥提交到版本控制
  • 定期轮换密钥
  • 使用密钥管理服务
  • 在客户端验证用户输入
  • 在 API 调用前清理数据
  • 在提交前检查格式
  • 防止注入攻击
  • 始终验证签名
  • 仅使用 HTTPS
  • 实施速率限制
  • 记录可疑活动

性能

  • 缓存用户数据(1 小时 TTL)
  • 缓存银行列表(24 小时)
  • 缓存余额(5 分钟)
  • 在 webhooks 上使缓存失效
  • 使用 webhooks 而不是轮询
  • 批量相关操作
  • 实现请求去重
  • 对大型数据集使用分页
  • 实现重试逻辑
  • 使用指数退避
  • 记录错误以便调试
  • 显示用户友好的消息

用户体验

  • 显示确切的金额和费用
  • 显示处理时间
  • 提供状态更新
  • 清楚地解释要求
  • 从 L0/L1 开始
  • 在用户需要更高限额时升级
  • 解释验证的好处
  • 使 KYC 流程顺畅
  • 报价过期
  • 支付失败
  • 网络问题
  • 慢速交易

测试

  • 在沙盒中测试所有流程
  • 测试错误场景
  • 测试边缘情况
  • 验证 webhook 处理
  • 设置日志记录
  • 跟踪错误率
  • 监控性能
  • 对问题发出警报

幂等性

使用 externalId 实现幂等性:
// 防止重试时重复创建 ramp
const createRamp = async (quoteId, userId, accountId, orderId) => {
  return await fetch('/api/v2/ramps', {
    method: 'POST',
    headers: { /* headers */ },
    body: JSON.stringify({
      quotationId: quoteId,
      userId: userId,
      accountId: accountId,
      externalId: `order-${orderId}` // 幂等性密钥
    })
  });
};

生产清单

1

安全

  • API 密钥在环境变量中
  • Webhook 签名验证
  • 仅使用 HTTPS
  • 输入验证
2

错误处理

  • 已实现重试逻辑
  • 用户友好的错误消息
  • 错误日志记录
  • 监控警报
3

测试

  • 在沙盒中测试所有流程
  • 已处理边缘情况
  • Webhook 交付已验证
  • 负载测试已完成
4

监控

  • 已配置日志记录
  • 错误跟踪(Sentry 等)
  • 性能监控
  • 已设置警报

下一步

上线

从沙盒切换到生产