海外支付:抵御信用卡欺诈的CyberSource
海外支付:抵御信用卡欺诈的CyberSource
吴剑 2014-06-04
原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian
吴剑 http://www.cnblogs.com/wu-jian
前言
最近技术文章写的很少,不是因为不热爱技术了,而是因为随着年龄越来越大,各种压力也随之而来,无法做到像刚毕业那会儿,纯碎的学习和研究一个技术话题。
在深圳搬过很多次家,家具换了很多次,但一直没变的是大书架上的书越堆越多,有时在书架前徘徊一会儿,看着.Net Framework从1.1到了4.5、看着Web Service成了WCF、看着Javascript风起云涌......我在想,对于一个开发者来说,他不断追寻技术的最终目标到底是什么?为了一个程序诞生那一瞬间心理和身理的愉悦?为了工作为了生活为了养家糊口老婆孩子?
在中国12年算一轮回,如果前12年我在乐此不疲学习,那么后12年我希望在学习的同时能用所学干一些有意义的事情。最近在整理一些商业应用的文章,最近两年都在做海外支付,好吧,那么就从海外支付说起:
吴剑 http://www.cnblogs.com/wu-jian
概述
在欧美地区,Paypal与信用卡为两大主要在线支付方式。Paypal大家都很熟悉,而信用卡,相信做海外电商的企业在这上面都吃过苦头,因为信用卡会面临一个严峻问题:欺诈风险。
Visa 于2010年以20亿美金收购了 CyberSource 成为它的全资控股子公司。在中国大的在线支付平台背后,几乎都有CyberSource提供的反欺诈服务,如阿里的支付宝、腾讯的财富通......
<图1.CyberSource支付流程>
吴剑 http://www.cnblogs.com/wu-jian
Secure Acceptance
图1描述了CyberSource信用卡支付的完整流程(使用CyberSource支付网关,使用CyberSource Decision Manager),同时本文针对非PCI认证商家(即信用卡信息必须存在于第三方)。
OK,第一个步骤是采集用户的设备指纹,即通过一些CyberSource提供的API来唯一识别一个用户;然后通过Secure Acceptance接口向CyberSource发起信用卡的授权请求。在这个请求中包含了支付相关的所有信息,比如支付币种、金额、账单信息等等,以及如果使用CyberSource Decision Manager附带的风控所需数据。
此处,需要特别注意如下几点:
1、CyberSource会对Secure Acceptance的请求数据进行验证(如字段长度,字段特殊字符等,在API开发文档中有相关章节,但由于开发文档版本迭代频繁,此处需要测试用例的合理覆盖),如验证未通过,不会进行银行授权,直接Return一个“Request parameters are invalid or missing”至商家页面。因为未进行银行授权,所以Return回来时不会包含网关ID这个关键参数,后续也就无法进行Capture或Reversal动作。
2、如果用户的Secure Acceptance请求经过了Decision Manager,Return回来时会包含DM的决策结果,同时在DM API中会再次将决策结果通知到商家(见Decision Manager章节)。
3、Secure Acceptance的结果由CyberSource商户后台配置的URL进行回调,这里可能会存在一个中断,比如因为网络原因导致Return结果未到达商家服务器,因此后面需要一个单独的程序来定期进行查询和处理(见对中断的处理章节)。
吴剑 http://www.cnblogs.com/wu-jian
Decision Manager
CyberSource的强大之处在于它的反欺诈服务,这个服务称之为:Decision Manager。
CyberSource DM系统很容易让我联想到西蒙斯和他的文艺复兴公司(Renaissance Technologies Corp),通过大数据,通过算法,通过数学模型玩转对冲基金,收益甚至把巴菲特甩了几条街。CyberSource Decision Manager也干着类似的事情,首先它有足够大的用户交易行为数据,一旦你使用CyberSource,你也成为了它的数据源贡献者,然后它构建数学模型,对用户的行为进行分析,揪出欺诈用户,当然,最重要的是按次计费。但不可否认CyberSource在在线反欺诈领域还是赫赫有名的。
OK,看看CyberSource Decision Manager的大至工作流程:
<图2.CyberSource Decision Manager逻辑>
CyberSource Decision Manager提供一个庞大的后台,在这里面你可以配置非常多非常复杂的规则。为了清晰描述Decision Manager的工作流程,例举一个最简单自定义规则:当用户来自俄罗斯,自动拒绝交易;当用户来自美国,自动允许交易;当用户来自日本,需人工审核来决定是否允许交易。如上图所示,Decision Manager的工作流程就很清晰了。
当收到CyberSource Decision Manager结果时,代表了Authorization(银行授权)已通过,授权通过后用户信用卡里的金额会被临时冻结,此时用户如果查询会发现卡内余额减少, 因此当授权通过后应尽快进行后续动作,要么对这笔金额进行收款,即发起Capture;要么把这笔金额归还给用户,即发起Reversal。当然,如果你什么都不做,一段时间后银行会自动Reversal把冻结的款项归还给用户,只是这个时间段如果用户查询余额会觉得困惑,因为在商家网站付款未成功,而卡内余额却减少了。
需要注意的是CyberSource Decision Manager结果通知可能因为网络或其它原因中断,无法送达商家服务器,而CyberSource不会像Paypal一样会有重试机制,因此后面我们同样需要一个单独程序来定期询问CyberSource,有哪些支付在DM中已有结果而未送达商家的。
吴剑 http://www.cnblogs.com/wu-jian
对中断的处理
在图1的第6步和第7步,由CyberSource将结果发送至商家服务器,中间可能因为各种原因(如网络故障、接收程序异常)导致消息未送达。此时如果不及时处理会带来糟糕的用户体验,如果拖延时间太长,即使最后付款处理成功,也极容易导致用户的Chargeback,而Chargeback过高,收单行就会拒绝与商家的合作,所以不论何总支付方式,总会考虑处理意外中断,合作不易,与银行长期稳定的合作更不易,且行且珍惜。
<图3.授权中断处理>
Secure Acceptance可能存在结果未响应的情况(根据个人经验,实际每天都会有一定数量的交易出现该情况)。如上图所示,我们通过一个单独程序把每笔未收到结果的交易拿去CyberSource查询比对,然后按响应结果进行后续逻辑处理。需要注意的是CyberSource提供的查询API以银行授权结果为前提,当一笔交易未进行银行授权时,返回的结果类似于NULL;另外当一笔交易在DM结果为Review,并且已人工处理完成时,在此处拿到的结果仍为Review状态,如要正确处理,就需要另一个针对Decision Manager的中断处理程序。
<图4.DM中断处理>
当Decision Manager进入人工审核,同样通过商户后台配置的一个回调URL回传审核结果(见图1中的步骤7)。此处如果商户不能接收到结果,就会导致该收的款未收,该退的款未退。我们做电商,知道用户从选择商品、下单、再到支付,是一个逐渐流失的过程,每个用户到了支付环节都是来之不易的,如果在最后一步因为技术原因导致用户付款失败,实在是一件极不划算的事情。
需要注意的是CyberSource在此处提供的查询API,是针对Decision Manager中人工审核的结果,交易如果被DM中的规则自动拒绝或自动通过,是在Secure Acceptance中断程序中来处理的。如果很不幸,一笔交易在步骤6和步骤7处同时发生了中断,因为两处API分工不同,就必须保证Secure Acceptance中断处理程序先执行,DM中断处理程序后执行。
吴剑 http://www.cnblogs.com/wu-jian
后记
关于CyberSource的服务,他们的技术团队在美国,售前在香港,所以一些具体的技术问题沟通较消耗时间。接入上线后,技术沟通就只能与他们美国方面进行,很是不方便。他们中国地区的售前和风控团队还算有问必答,只是一些技术相关的细节问题,需要中转至美国,效率会偏低一点。
关于海外信用卡支付,国内也有不少公司在做,但曾经有过惨痛的教训,最终迫不得已选择了CyberSource。
关于支付的风险控制,相信每个商家都在做或计划在做,但因为没有大数据的支撑,比如一个用户第一次来你的网站支付,你无法知道他之前在别家网站是否有欺诈行为,而CyberSource有这方面数据,所以他提供收费服务。对商家来说能化繁为简,专业的事交给专业的人去做,也未偿不是件好事。
关于收单行,令人遗憾的是国内的各大银行,目前都很难在国际上得到认同,香港是一个不错的选择。
最后稍说明一下,因为涉及到交易与安全,本文并未涉及到具体技术细节,如有需要,欢迎与本人取得联系。
吴剑 http://www.cnblogs.com/wu-jian
如果您觉得本文对您有所帮助,可用微信扫描左侧二维码向作者捐赠。您的支持是原创的源动力!
作者:吴剑 |
海外支付:抵御信用卡欺诈的CyberSource的更多相关文章
- 海外支付:遍布全球的Paypal
海外支付:遍布全球的Paypal 吴剑 2015-11-26 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian 吴剑 http://www.cnblogs.co ...
- 【原创 Hadoop&Spark 动手实践 12】Spark MLLib 基础、应用与信用卡欺诈检测系统动手实践
[原创 Hadoop&Spark 动手实践 12]Spark MLLib 基础.应用与信用卡欺诈检测系统动手实践
- ML.NET 示例:二元分类之信用卡欺诈检测
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
- 从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主
总结:不平衡数据的分类,(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制.过采样后模型选择RF.xgboost.神经网络能够取得非常不错的效果.(2)模型层面:使用模型 ...
- 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...
- 100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)
本文是对100天搞定机器学习|Day33-34 随机森林的补充 前文对随机森林的概念.工作原理.使用方法做了简单介绍,并提供了分类和回归的实例. 本期我们重点讲一下: 1.集成学习.Bagging和随 ...
- 信用卡欺诈数据的分析-excel篇
本篇文章为大家提供了数据集分析的思路和步骤,同时也分享了自己的经验. 一.背景 反欺诈是一项识别服务,是对交易诈骗.网络诈骗.电话诈骗.盗卡盗号等行为的一项风险识别.其核心是通过大数据的收集.分析和处 ...
- 使用SAE(VAE)检测信用卡欺诈——感觉误报率还是比较高啊 70%+误报 蛋疼
from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScale ...
随机推荐
- window.open窗口关闭后刷新父窗口代码
window.open窗口关闭后刷新父窗口代码 window.opener.location.href=window.opener.location.href;window.close();
- Tomcat连接池
步骤1: 找到Tomcat安装目录下的context.xml文件,在config目录下.在<Context/>节点下加入: <Resource name="jdbc/myt ...
- IOS开发小项目—找色块游戏
1.项目代码: @interface NextViewController () { int r ;//色块层数的全局变量 int m;//后面用于tag值的变化 UIView *view;//色块 ...
- C++编程新思维中的技巧
1.编译器断言 技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界 2.偏特化 就是专门对一个类型去进行特殊 ...
- 黄聪:HtmlAgilityPack,C#实用的HTML解析类简介
HtmlAgilityPack是.net下的一个HTML解析类库.支持用XPath来解析HTML.这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动 ...
- Ubuntu 16.04 LTS (Xenial Xerus)
Canonical刚刚正式发布了Ubuntu 16.04 LTS (Xenial Xerus),这是一个长期支持版本,官方会提供长达5年的技术支持(包括常规更新/Bug修复/安全升级),一直到2021 ...
- 内网Linux对公网开启SSH
1.首先你得装个Linux,过程就不说了.Linux可以装在Vmware上,但是网络适配器选项选的是桥接模式 2.在linux上安装SSH服务,如果有就自动忽略 3.在路由器上开启端口映射. 这里我用 ...
- git fetch和git pull(转载)
From:http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到 ...
- Python进阶05 循环设计
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在"循环"一节,我们已经讨论了Python基本的循环语法.这一 ...
- Log4Net在Windows服务中不能记录日志 z
解决方案: 在Windows安装服务的“serviceProcessInstaller1”中修改Account属性为LocalSystem.见下图 后来查了一下这个Account属性 说白了还是权限的 ...