Android集成Payfort SDK报failed to check fraud screen如何解决
Android接入PayFort(亚马逊支付网关)报错
failed to check fraud screen(响应码10078)排查方案 问题表现
Android端集成PayFort SDK发起AUTHORIZATION类型支付请求时,触发onFailure回调,返回核心错误信息:
response_code=10078, response_message=failed to check fraud screen, status=10
错误原因
该错误本质是PayFort反欺诈校验流程未通过,结合给出的请求代码,高频触发原因如下:
- 手动硬编码传入固定
customer_ip值,和用户实际发起请求的真实出口IP不一致,被反欺诈系统判定为IP伪造直接拦截,这是该错误最常见的诱因 - 测试环境使用的测试卡、模拟用户信息不符合PayFort测试环境反欺诈规则,比如测试卡段未加入测试商户白名单、用户信息和IP归属地偏差过大
- SDK权限不足,无法正常采集上报设备指纹信息,反欺诈校验缺少必要数据源直接报错
- 传入的
sdk_token和当前调用环境不匹配,比如拿生产环境token在TEST环境调用
修复方案
- 优先处理硬编码IP问题:直接删除请求参数里的
hashMap.put("customer_ip", "112.196.1.218");代码,PayFort SDK会自动采集用户真实出口IP,不需要业务方手动传该字段,手动传值极易触发反欺诈拦截。 - 核对环境配置:
- 确认当前传入的
sdk_token是TEST环境生成的有效token,和SDK初始化时指定的FortSdk.ENVIRONMENT.TEST环境匹配 - 测试阶段使用PayFort官方提供的合规测试卡,不要随意自定义卡号;同时登录PayFort商户后台,确认测试环境反欺诈规则没有拦截你当前测试所用的IP段、卡段
- 给SDK开通必要的网络、设备信息读取权限,保证SDK能正常上报设备指纹数据
- 确认当前传入的
- 修正无效代码:你当前代码里的
request.isShowResponsePage();是getter方法,没有任何设置效果,如果需要展示SDK自带的支付结果页,替换为request.setShowResponsePage(true); - 联调阶段可以临时在商户后台关闭测试环境的强反欺诈校验,等全支付流程跑通后,再逐步开启规则调试。
修正后的请求构造参考代码
private FortRequest getFortRequest(String token) { Log.e(TAG, "getFortRequest token: " + token); FortRequest fortRequest = new FortRequest(); Map<String, Object> hashMap = new HashMap<>(); hashMap.put("command", "AUTHORIZATION"); hashMap.put("customer_email", "testuser@gmail.com"); hashMap.put("currency", "SAR"); // 注意:PayFort金额传最小货币单位,SAR 1里亚尔=100哈拉拉,当前传100对应1里亚尔是正确的 hashMap.put("amount", "100"); hashMap.put("language", "en"); hashMap.put("merchant_reference", "XYZ9236-ynm898"); hashMap.put("customer_name", "Ramesh kumar"); hashMap.put("payment_option", "MASTERCARD"); hashMap.put("eci", "ECOMMERCE"); hashMap.put("order_description", "DESCRIPTION"); hashMap.put("sdk_token", token); fortRequest.setRequestMap(hashMap); return fortRequest; }
内容的提问来源于stack exchange,提问作者Ramesh Kumar
相关产品推荐
相关产品推荐

