关于 fraud-detection
面向电商商家的欺诈防护指南,涵盖 Shopify、WooCommerce、BigCommerce 和自定义商店的配置。内容包括分层风险评分、身份验证、频率规则及人工审核。
主要功能
- 01按平台选择欺诈工具
- 02风险评分与审核流程
- 033D Secure 配置指引
- 04频率检查与拦截规则
- 05监控拒付和误报
适用场景
- 01审核可疑的高价值订单
- 02减少盗刷测试和自动化购买
- 03检查无卡支付结账流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill fraud-detection安装后在 Claude Code 中输入/fraud-detection确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/composite-fraud-scoring-and-3ds-enforcem/criteria.jsontask.mdevals/manual-review-queue-with-authorize-only-/criteria.jsontask.mdevals/redis-velocity-check-thresholds-and-ttl/criteria.jsontask.md详细介绍
欺诈检测
概述
支付欺诈会通过拒付、货物损失和争议处理费,让电商商家损失 2–3% 的收入。有效的欺诈检测需要结合平台原生风险评分、3D Secure 身份验证、交易频率检查,以及用于处理可疑订单的人工审核队列。合适的方案取决于所用平台:Shopify 内置欺诈分析工具,而 WooCommerce 和 BigCommerce 则需要专用的欺诈防范服务或支付处理商提供的欺诈工具。
何时使用此技能
- 当拒付率超过交易量的 0.5% 时(Visa 将 0.9% 设为“过高”争议率的门槛)
- 在具有陌生欺诈模式的新市场开展业务时
- 销售高价值且易于转售的商品时(电子产品、礼品卡、奢侈品)
- 发现账户接管、信用卡测试或机器人批量购买等模式时
- 构建或审核处理无卡交易的结账流程时
核心说明
第 1 步:确定商家的平台并选择合适的欺诈工具
| 平台 | 内置欺诈分析 | 推荐的欺诈服务 |
|---|---|---|
| Shopify | Shopify 欺诈分析(免费提供);对订单进行基本风险评分 | 启用 Stripe Radar 或 Signifyd(Shopify App Store),以进行高级机器学习评分 |
| WooCommerce | 无内置功能 | 使用 Stripe(搭配 Radar)或 Braintree 作为支付处理商;或安装 Kount 或 NoFraud 插件 |
| BigCommerce | 支付处理商的欺诈工具(因处理商而异) | Signifyd 可与 BigCommerce 原生集成;NoFraud 也支持 BigCommerce |
| 所有平台 | — | Stripe Radar(使用 Stripe 时)可为每笔扣款提供基于机器学习的欺诈评分,无需额外付费 |
第 2 步:启用并配置平台原生欺诈工具
Shopify
Shopify 会根据 IP 地址与账单地址不匹配、银行卡验证失败以及已知欺诈模式等信号,为每笔订单显示欺诈分析指标。
查看欺诈指标:
- 在 Shopify 管理后台打开任意订单
- 在订单详情面板中点击欺诈分析
- Shopify 会显示风险等级(高 / 中 / 低)及具体原因(例如,“银行卡验证值验证失败”“IP 地址所在国家/地区与账单地址所在国家/地区不同”)
配置欺诈响应规则:
- 前往设置 → 付款 → 欺诈防范(使用 Shopify Payments 时)
- 为被标记为高风险的订单启用自动审核——Shopify 会暂缓处理这些订单并向你发送电子邮件
- 对 Shopify 判定为最高风险的订单设置自动取消
Signifyd(Shopify App Store — 欺诈保障): Signifyd 提供拒付担保——如果他们批准的订单最终发生拒付,就会向你赔付。这是 Shopify 上最全面的解决方案。
- 从 Shopify App Store 安装 Signifyd
- Signifyd 使用机器学习评分自动审核每笔订单
- Signifyd 标记的订单会进入 Signifyd 控制台中的审核队列
- 设置 Signifyd Shopify 集成,以自动暂缓处理或取消高风险订单
WooCommerce
WooCommerce 不包含欺诈检测功能。你需要使用内置欺诈工具的支付处理商,或专用插件。
选项 A:Stripe Radar(推荐用于通过 Stripe 处理 WooCommerce 付款的情况)
如果使用 WooCommerce Stripe Payment Gateway:
- Stripe Radar 会自动启用——为 Stripe 账户中的每笔扣款评分
- 在 Stripe Dashboard 中,前往 Radar → Rules 添加自定义拦截/审核规则:
# Block orders over $500 from high-fraud-rate IP countries Block if :order_amount: > 50000 and :ip_country: in ('NG', 'RO') # Review first-time customers placing large orders Review if :order_amount: > 20000 and :customer_account_age: < 7 # Block cards used more than 3 times in the last hour Block if :card_velocity_hour: > 3 - 被标记为需要审核的订单会显示在 Stripe Dashboard → Radar → Reviews 中
选项 B:WooCommerce Anti-Fraud 插件(免费)
- 从插件目录安装 WooCommerce Anti-Fraud
- 根据以下条件配置风险评分规则:
- 订单金额阈值
- 新客户与高金额订单的组合
- 代理/VPN IP 检测
- 账单/配送国家不匹配
- 高风险订单会被设为“On Hold”状态,以便人工审核
选项 C:Kount 或 NoFraud(企业级) 对于订单量较大的 WooCommerce 商店,企业级欺诈防范平台可提供:
- Kount:完整的欺诈管理平台,提供 ML 评分、人工审核工具和拒付管理
- NoFraud:提供类似 Signifyd 的欺诈保障;通过 WooCommerce 插件集成
BigCommerce
Signifyd for BigCommerce:
- 从 BigCommerce App Marketplace 安装 Signifyd 应用
- 配置自动暂挂或取消高风险订单
- Signifyd 的保障涵盖已批准订单的拒付
支付处理商的欺诈工具:
- Stripe(通过 BigCommerce Stripe 集成):包含 Radar;可在 Stripe Dashboard 中配置规则
- PayPal:可在 PayPal 商业账户设置中使用 PayPal 的欺诈管理筛选器
- Braintree:可通过 Kount 附加组件使用高级欺诈防护
自定义/无头
对于使用 Stripe 的自定义店面,可利用 Stripe Radar 进行 ML 评分,并在应用层添加针对业务特定模式的频率检查。
支付尝试后获取 Stripe 的欺诈评分:
const paymentIntent = await stripe.paymentIntents.retrieve(paymentIntentId, {
expand: ['latest_charge'],
});
const riskScore = paymentIntent.latest_charge.outcome?.risk_score; // 0–100
const riskLevel = paymentIntent.latest_charge.outcome?.risk_level; // 'normal', 'elevated', 'highest'
针对高风险交易请求 3D Secure(将拒付责任转移给发卡机构):
const paymentIntent = await stripe.paymentIntents.create({
amount: order.totalCents,
currency: 'usd',
payment_method_options: {
card: {
// 'automatic' = Stripe decides; 'challenge' = always require 3DS for high-risk
request_three_d_secure: riskScore > 70 ? 'challenge' : 'automatic',
},
},
});
应用层频率检查:
import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL!);
async function checkVelocity(params: { email: string; ip: string; cardFingerprint: string; amountCents: number }) {
const { email, ip, cardFingerprint, amountCents } = params;
// IP: max 10 orders per hour
const ipCount = await redis.incr(`vel:ip:${ip}`);
if (ipCount === 1) await redis.expire(`vel:ip:${ip}`, 3600);
if (ipCount > 10) return { allowed: false, reason: 'ip_velocity' };
// Email: max 5 orders per 24 hours
const emailCount = await redis.incr(`vel:email:${email.toLowerCase()}`);
if (emailCount === 1) await redis.expire(`vel:email:${email.toLowerCase()}`, 86400);
if (emailCount > 5) return { allowed: false, reason: 'email_velocity' };
// Card: max $500 per day
const spendKey = `vel:spend:${cardFingerprint}`;
const currentSpend = parseInt(await redis.get(spendKey) ?? '0');
if (currentSpend + amountCents > 50000) return { allowed: false, reason: 'daily_spend_limit' };
return { allowed: true };
}
人工审核队列:
async function flagForManualReview(orderId: string, riskScore: number, signals: Record<string, unknown>) {
// Hold the order — do NOT fulfill; do NOT capture payment (authorize only)
await db.orders.update(orderId, {
status: 'pending_fraud_review',
fraud_risk_score: riskScore,
fraud_signals: signals,
review_requested_at: new Date(),
});
// Notify fraud review team
await sendSlackAlert('#fraud-review', {
text: `Order ${orderId} flagged for review. Risk score: ${riskScore}/100`,
actions: [
{ text: 'Approve', url: `${ADMIN_URL}/fraud-review/${orderId}/approve` },
{ text: Reject', url: `${ADMIN_URL}/fraud-review/${orderId}/reject` },
],
});
}
// Auto-cancel unreviewed orders after 48 hours
async function expireUnreviewedOrders() {
const expired = await db.orders.findExpiredReviews(48);
for (const order of expired) {
await stripe.paymentIntents.cancel(order.payment_intent_id);
await db.orders.update(order.id, { status: 'fraud_review_expired' });
await sendOrderCancellationEmail(order);
}
}
最佳实践
- 分层防御——没有任何单一信号能可靠地阻止所有欺诈;应结合 Stripe Radar、频率检查、IP 信誉和设备指纹识别
- 对高风险订单使用先授权后扣款——在结账时授权以冻结资金,然后仅在欺诈审核通过后扣款;撤销授权的成本低于退款
- 将误报率作为 KPI 追踪——如果超过 1% 的合法订单被拦截或暂挂,说明规则过于严格;同时衡量欺诈损失和误报造成的收入损失
- 定期轮换并隐藏欺诈规则——老练的欺诈者会探测结账流程以找出规则阈值;切勿在 API 错误消息中暴露拦截原因
- 维护欺诈邮箱、卡片和设备的拒绝名单——确认发生拒付欺诈后,将相关标识符加入拦截名单,防止后续订单再次使用
- 每月检查拒付率——如果 Visa/Mastercard 的拒付率升至 0.5% 以上,应检查欺诈规则;超过 0.9% 会触发 Visa 的争议监控计划
常见陷阱
| 问题 | 解决方案 |
|---|---|
| 3DS 导致结账放弃 | 使用 automatic 3DS 模式 — 由 Stripe 判断何时需要验证挑战;低风险交易可无缝完成身份验证 |
| 速度规则拦截了合法的大宗买家 | 将 B2B 客户或高 LTV 客户群列入速度规则白名单;根据账户历史记录设置分级限额 |
| 人工审核队列不断积压 | 设定 SLA 目标(4 小时审核时限);对 48 小时内未审核的订单实施自动取消 |
| 已通过 3DS 身份验证,却仍遭遇拒付 | 确认你的支付处理商正确提交 3DS 身份验证数据(eci、cavv、xid);缺少这些字段时,责任转移不适用 |
| Redis 速度键永不过期 | 设置新键时务必调用 EXPIRE;使用 SET key value EX seconds NX,以原子方式设置键(仅当键不存在时)并配置过期时间 |
相关技能
- @secure-checkout
- @account-security
- @stripe-integration
- @bot-protection
- @gdpr-ecommerce