分享

《近匠》BeeCloud创始人黄君贤:三行代码集成支付的技术实现

 方珺逸 2015-11-04

成立于2014年的BeeCloud专注于支付云服务,以“让支付更简单”为理念,为开发者及企业提供一站式支付解决方案。其推出的“秒支付Button”无需SDK,三行代码即可一键接入支付功能。

开发者可以通过在JavaScript中调用秒支付Button的BC.click方法实现“发起支付”的功能,目前支持支付宝、银联、微信支付、百度钱包、京东支付、易宝和快钱。

其CEO黄君贤是典型的技术型创始人,在清华大学本科毕业后获得美国密歇根大学全额奖学金攻读并获得计算机博士学位,曾在微软亚洲研究院、微软硅谷研究院、AT&T研究院和Google硅谷总部从事计算机网络和移动互联网研发。


图:BeeCloud创始人兼CEO 黄君贤

在决定回国创业之前,他与Google很有名的工程师Matt Welsh通了一次电话,聊了创业想法。

黄君贤回忆道:

“他建议我在Google多学习一段时间,毕竟机会是很珍贵的。记得结束通话前,他对我说了一句影响深远的话——

‘The last person I spoke with who asked me whether to found a startup is Mark Zuckerberg, and I told him not to’(上一个问我是否应该选择创业的人是Mark Zuckerberg,我当时让他不要去)。

于是我也没有听从他的建议——或者也可以理解成我听从了他的建议——离开了Google,开始了我的创业之旅。”

CSDN:请介绍一下您个人的从业经历、日常工作,以及团队情况。

黄君贤:我在美国博士毕业后,加入美国Google总部,从事下一代大规模网络云平台的研发。当时加入的Team隶属于Google网络平台组,负责Google核心networking的研发,组名叫作PlanetLab(行星实验室),参与过Jupiter等项目。

2014年初选择回国创业,成立BeeCloud,为开发者提供在线支付接口集成API以及后端云服务。我们把支付宝、微信支付、银联支付,还有众多第三方支付渠道整合起来,让开发者非常简单地完成自己App支付功能的开发(调用)。

创业初期,创始人/CEO的角色可能会有点多,希望能够在一开始为产品打下一个高标准的基础。

  • 第一重角色便是程序猿,从底层分布式数据库的搭建,到REST API框架的实现,再到iOS SDK与Android SDK的开发都要做。这是我的老本行,其实在我现在看来,能够心无旁骛安安静静写代码是很幸福的事情。

  • 第二重角色便是产品汪,经常因为对如何提升开发者体验理解的不同,而与程序猿死磕。经常会被程序猿拍桌子,但是争吵过后,依然会立刻决断,投入开发。

  • 第三重角色就是技术客服,从手机到QQ到微信,亲自回答客户接入支付过程中的各种问题,能够第一手获取用户的需求以及对产品的各种反馈,对我们产品的打磨与改进帮助非常大。

  • 第四重角色才是创始人/CEO,与客户公司的老板谈,与各种CTO和技术总监谈,与投资人谈,与支付渠道谈,与媒体谈,这是对外;同等重要的是对内,我觉得创始人很重要的责任便是保证公司的每一个成员都在一个很舒服的环境中能够最大程度地发挥自己的创造力,员工的心情很重要,创始人应该是公司的保姆。


团队从一开始的3个人,到如今已有20余人。90%以上都是技术人员,产品本身的质量是我们工作的最优先级,我们在保证安全性与稳定性的基础之上,努力去提升易用性。

CSDN:从学生时代到Google系,从业至今,您有哪些深刻的感受?

黄君贤:曾看到一句话,大意是,在漫无天日的黑夜中行走的时候,脚边有很多不起眼的石子,随手捡起几颗,等到天亮了,才发现这些石子都是钻石。一步一步走来,会经历很多迷茫的时候,会怀疑自己做的选择,会怀疑自己的能力。相信自己,坚持做自己认为是对的事,坚持自己内心最想要的选择其实是不容易却又非常重要的。

CSDN:请具体谈谈BeeCloud在做的事情,为什么会推出BeeCloud?

黄君贤:简单来说,BeeCloud为需要接入支付功能的商家服务,帮他们提供从快速开发支付,到云服务的运维,再到数据分析管理服务的一站式服务。BeeCloud源自一个朴素的愿望,那就是让支付接入更简单。

CSDN:BeeCloud包含了移动支付、PC线上支付、线下扫码支付等多种场景的在线支付,对于这一领域您有着怎样的看法?

黄君贤:从创业之初,我们一直在做开发者服务的方向,一开始做的是通用的数据云服务。后来聚焦到在线支付的云服务其实也是机缘巧合。

最初,开发者要为自己的App开发一个收款功能,需要一个一个去接入微信、支付宝、银联等支付渠道。这个工程量非常巨大,接口文档都有几十页,而且由于文档并不是很健全,遇到了很多开发的坑。比如某支付渠道在订单号里出现了“-”字符的时候,还有支付金额写成了“90.0”而不是“90”的时候会报“一般错误”,而这个毫无信息量的错误信息害得我们苦苦debug了3个小时(后来我们有一个客户告诉我们,他们debug了10个小时)。类似的问题还有非常多!

另外,除了开发客户端的代码以外,开发者还需要开发服务器的代码去算签名,接收回调,处理支付结果,也较麻烦。一个很自然的想法就是,我们想把所有支付相关的事情统一封装在一个简单的API调用中,从前端到后端,App开发者只需几行代码接入就把支付功能搞定。

毋庸置疑,中国的在线支付行业正在处于一个高速增长与变革期,新兴的第三方支付公司,尤其是微信支付与支付宝,正在向传统的支付方式发起猛烈的冲击。银行也在拥抱新兴的科技,推出各种快捷支付产品。几年以前,没有人会想到会在一个聊天的软件里给朋友发真金白银的红包,也没有人想到过拿着手机扫一扫就能结账,也同样没有想过按一个指纹就可以对订单付款。对于这样高速的变革,国家也出台了很多政策来规范和引导市场的发展,引发了全社会对于支付行业的关注与讨论。正如现在看5年前,会被当下发生的巨大变化震惊一样,5年后再看今天,变化只会更大。然而变化并不是会自然而然发生的,无论是银行还是第三方支付公司,还是我们BeeCloud这样与支付相关的创业公司,都会是这场变革的创造者。

CSDN:BeeCloud与其他第三方支付类产品相比有哪些特点?开发者有着怎样的需求,为他们带来了哪些变化?

黄君贤:最重要的不同就是,BeeCloud允许开发者完全不用管后台服务器的开发,完全依赖BeeCloud即可完成手机应用支付功能的开发,同时也提供了好用的订单管理系统、退款管理系统、对账管理系统等云服务,提供一站式的支付服务。从此开发者可以更关注与自己的业务逻辑,而不用因为支付以及相关的开发而烦恼。

CSDN:开发者在选择第三方支付工具时,有着哪些普遍的疑问、顾虑或需求?

黄君贤:安全问题是开发者最关注的问题,保障支付过程的数据与资金安全是开发者的第一需求。其次,云服务的稳定性,以及某些高流量应用对于并发度的需求也是开发者非常关注的。渠道费率自然也是开发者非常关心的。这些地方我们都投入了大量研发精力,并且也得到了现有用户的认可。

CSDN:目前使用第三方支付集成存在着哪些风险?技术人员应如何规避或解决?

黄君贤:使用第三方支付集成是为了让客户端验证身份,一般会分配一个密钥(在BeeCloud里,叫App Secret)给开发者。开发者需要将这个密钥保存好,也要杜绝在JavaScript等前端代码里用明文存储这些密钥。对于Android系统而言,普通的apk很容易被反编译,所以推荐使用Android Studio里的proguard功能进行代码混淆,防止apk文件被反编译,防止密钥泄露。

CSDN:BeeCloud在产品研发过程中遇到哪些坎?难点有哪些?你们是如何解决的?

黄君贤:接通几个支付渠道不难,难的是将这些作为一个安全稳定流畅的云服务的方式对千千万万开发者提供。

拿稳定性来说,在产品上线之前,我们遇到了很多问题,比如数据库会因为内存占用过高不停GC停止响应,后端程序会因为一个bug而崩溃。为了解决稳定性的问题,我们规范了发布流程,部署了一个异常严格的监控系统,同时做了系统架构上的设计,在出错时有多重备份机制。

首先,在发布流程上,除了对于每一个接口的单元测试意外,我们还在一个测试环境中全套复制了线上环境,发布任何新版本都必须先部署到测试环境中,将所有渠道所有接口完全测试一遍,保证没有任何问题才会发布到线上环境中。

其次,我们对所有API接口都进行1分钟一次的扫描监控,一旦发现任何问题,我们会收到报警E-mail。最后,即使以上两种措施都没有成功,我们的线上服务都有分布在数个数据中心的热备份,一旦客户端发现出错,会自动重连另一个可用的服务器。这些措施让我们的SLA可以做到99.9%以上。

CSDN:BeeCloud推出的“秒支付Button”从技术层面上是如何做到“最任性的网页支付神器”?请详谈三行代码无需SDK的技术实现。

黄君贤:秒支付Button只需要3行代码就可直接接入微信、支付宝、银联等在线支付方式:

第一行代码,在BeeCloud配置好支付参数,配置好需要展示的支付方式以及顺序之后,由BeeCloud后台自动生成,一旦生成永远不会变化,不需要任何升级:

<script id=’spay-script’ src=’https://jspay.beecloud.cn/1/pay/jsbutton/returnscripts?appId=XXXXX’></script>


这一行代码的作用在于从BeeCloud云后端加载本网站的支付环境。


第二行代码,写在后端语言中,算出支付的数字签名,例如PHP中:

$sign = md5($appId.$title.$amount.$out_trade_no.$appSecret);  


第二行代码至关重要,首先$appSecret是用来加密的密钥,只能在后台语言例如PHP、Java中使用,而绝对不能在客户端的JavaScript语言中使用,否则黑客可以直接读取密钥。第二行代码的功能是保证客户端的黑客无法在JavaScript中随意修改订单金额,否则黑客就可以花1分钱购买到价值一万元的商品。每一笔订单信息通过MD5加密来保证信息的完备性,有任何篡改都可以识别出来。


第三行代码,在某个支付按钮的onClick事件处理函数里调用:

BC.click({ “title”:”奶茶”, “amount”:”10000″, “out_trade_no”:”奶茶编号101″, “trace_id”:”买奶茶的人”, “sign”:”xxxxx”, “return_url” : “http://同步跳转页面”, “optional” : {“附加信息”:”好喝”}});  

用户点击支付按钮后,将弹出一个支付方式选择框,里面有开发者在BeeCloud设置好的支付方式,例如支付宝、银联、微信等,用户再点击其中的一个支付按钮,即可开始支付。 随后,开发者可以通过异步的回调Webhook或实时的订单查询接口来获取支付结果,进行支付后逻辑的开发。

秒支付Button将“支付前”与“支付后”这两个开发的节点无缝地接合在了一起,极大地为开发者排忧解难。同时由于完全没有SDK的接入,一次开发,一劳永逸,开发者永远不需要去担心如何更新支付的代码,只需要去BeeCloud修改秒支付Button的配置,所有的修改即可实时生效。

CSDN:目前产品如何收费,盈利模式如何?

黄君贤:BeeCloud的SDK服务已经完全免费,开发者只需要去官网注册并下载,就可以使用我们的SDK。另外,我们也有企业级的定制化服务,针对企业特殊的需求,进行定制化开发。

CSDN:BeeCloud除了现有在研发、上线 、推广的产品之外,对于未来有着怎样的战略布局?

黄君贤:当前传统行业在不断寻求与互联网结合的“互联网+”机会,新兴企业也在不断追求更优质的用户体验。在这一大背景下,BeeCloud会不断推出创新的支付产品为细分行业与特定场景做一站式服务,最大程度解决客户有关支付的烦恼,例如线下收款场景、跨境支付场景等。同时,BeeCloud会不断深入挖掘支付相关数据的价值,帮助客户实现根据经验作决策到根据数据作决策的转型。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多