昨晚刚回到家,就收到商务团队电话:我们是否有上线新功能,某付宝技术人员在联络群里说,我们支付系统发送过去的请求大量地出错了,赶紧看看! 又是某付宝,虽然在渠道流量占比中不算大,可是挖的坑确是最多的。今天聊聊这些不靠谱的渠道,以及如何规避。

HTTPS的坑

还是这个宝,年初的时候,有一天,系统毫无征兆的大量出错,日志中全是这个错误:

javax.net.ssl.SSLHandshakeException: server certificate change is restrictedduring renegotiation

不用说,这又是那边那个运维同学又手痒了,把HTTPS证书给升级了。找到原因后,就静静的看友商打闹:

半小时后,看到该宝发通知了:由于网络问题,导致支付失败……这也拿来哄人。

碰到这样友商也是醉了,开发人员还头疼这些出问题的数据怎么处理呢。该宝的HTTPS证书问题,半年就得发作一次。接入方基本无解,就是先关闭这个通道,静静地看他们撕,等待他们回滚。恢复够再打开。虽然各种不靠谱,可是还得接入。支付宝微信支付用的人是多,问题是,交易过于集中到某通道,商务上就失去议价能力。而且如果该大户某天不高兴把通道给掐了老板还不哭晕在厕所。

关于同步和异步接口

那大厂家的东西就靠谱吗?确实是,支付宝接入很少出问题,微信却不太争气,今年出了个问题,是异步回调接口出问题了,有两个小时无法工作。用户的所有支付无法确认。老板和业务方每几分钟就过来问候下,开发人员承受巨大的压力,心里面百万只神兽在奔腾。这里需要先解释下同步和异步接口的事。

所以,对接支付接口的可靠方案是:

1.直连接口调用成功后,将该订单标记为需要跟踪。 2.接收到异步调用后,将该订单标记为成功完成。 3.直连成功后几秒(5秒)后,定时任务调用查单接口,根据查单结果,更新订单状态。

关于安全和加密

一般来说,第三方支付接口直接通过互联网来访问就行,加个HTTPS,基本能保证通道的安全。但是银行的对接就麻烦多了。大部分要求走专线,从银行的机房拉到商户到机房,这样就不用走HTTPS了,这样就不用走HTTPS了, 这样就不用走HTTPS了 !拉专线快的1个月慢的2个月,一般拉两条线,一主一备。租用电信或者联通的线路。对接银行的好处是用户可以直接绑卡支付,银行提供网银和快捷两种方式。网银是支付时跳转到银行页面去输入账户信息,快捷是用户提供卡号,身份证,手机号,真实姓名给商户,商户在支付时把这些信息发给银行完成支付。后者不会打断用户体验,省掉每次输入卡号的麻烦,所以大家都愿意对接快捷。可是和银行的对接,却不是那么美好。各种问题,只有想不到的,没有碰不到的。

先说参数签名。为了防篡改,参数先加密,后Hash成可显示字符。 Hash都好办,一般就是MD5了。问题就出在加密上。每个银行加密方式不尽相同。最奇葩的是和宇宙第X大行的对接。提供的文档中写着:用专用的加密客户端来加密;该客户端只能在windows环境跑。好吧,那我们就准备公司唯一一个在windows上跑的服务器。等客户端软件打过来了,开发同学半天都装不上。电话过去问为啥装不上,排除了人品,天气等各种因素后,开始奇葩对话:

可是,今天是2016年啊,这都多少年前的系统了。找运维同学给准备机器。果不其然,同样的问答重复一遍后,运维说,你们自己上大街去找抱小孩卖盗版的阿姨碰运气去, 我只能弄个2008看看,这是能找到的最古老的系统了。不得已,只好在windows 2008尝试,居然安装成功了。后面肯定还有坑,开发小哥嘟喃了半天,很快就得到验证了。加密方法老调用失败,再电话过去,结果又来了一句:你们插U盾了吗? 这下运维伙伴们都炸了,哪有服务器上插u盾的搞法。好说歹说,银行同学则屈服了,好吧,有个不需要U盾的版本。我去,不早说。

总之,和银行对接,务必详细阅读文档,同时沟通的时候一定要问清楚这几个事情:

关于专线

首先是专线问题。 大部分银行对接是需要专线的。 与银行沟通的时候,注意收集如下信息:

这些专业名词,可以自己检索,太专业了,其实我也不懂。从可靠性角度考虑,一般建议从联通、电信各拉一条线路出来。一旦有一个线路出问题了,也不会导致所有交易被终止了。不需要专线的银行接口有:浦发、工行、交行信用卡等。 需要专线的有中行、农行、建行等。一般专线需要1个月左右的时间,包括银行侧的申请、施工时间。

加密问题

其次是加密问题。部分银行,如中行,前置要求使用加密机。此处加密机的常用功能有三方面:

对开发来说,加密机的主要作用,是让黑客都无法从内存中看到密码。 不是做广告,国内对接银行一般就用江南天安的加密机了

对接银联

对接银联比对接银行简单, 不需要专线,不需要加密机。 不过需要获取ADSS认证。 银联最近在推Token接口,有两套接口,一套是银联侧开通,一套是商户侧开通。前者类似网银支付,后者类似快捷支付。 务必要求接入后者接口啊。基本上读完接口文档就知道怎么写代码了。

最后,回到开始这个事情。在我码完这些文字后,接到友商的电话了:“ 额,不好意思啊,我们不小心升级了下HTTPS证书,现在好了,你们要不看看?


感谢您对本文的关注,如需要及时收到凤凰牌老熊的最新作品,或者有相关问题探讨,请扫码关注“凤凰牌老熊”的微信公众号,在公众号里留言或者回复,可以尽快处理,谢谢。

本文欢迎转载,转载时请注明本文来自 微信公众号“凤凰牌老熊”。