支付学习实录

近来一个星期都在做电子支付相关的工作。

 

期间从前到后分别遇到 美团支付、银联支付、微信支付、支付宝,发现他们的支付方式都是极其地相似。

 

就安全性而言,支付宝是最安全的。支付宝提供开发者一个 "RSA签名验签工具" ,使用这个工具可以生成一对公私钥,实际上就是ssl; 然后把参数键值对通过ascll排序,要注意是的是,以上四种方式中,只有支付宝把参数分为公共参数和请求参数,请求参数以json格式放在名为 "biz_content" 的参数中,且不能有空格。排序成 字典序的参数键值对 通过私钥选择某一编码方式 "GBK/utf8" (如果是utf8的话,很可能有编码问题而导致签名失败), 签名得到公共参数 sign, 一起发送至服务器请求付款。

 

如果是通过key拼接的,有可能会按ascll序拼接进参数键值对中,也有可能直接结尾拼接。

 

微信支付的特点是 请求和反馈 都要是 xml,是为了凸显不同还是故意刁难就不知道了。发明或使用xml的人都是些奇葩吧?

 

银联支付,参数键值对ascll序拼接,MD5, toUpperCase, 跟美团差不多。

 

美团支付,特点是 post 发送和请求 走的是 application/json 路线。 sha256。

 

==========================================

 

由于后端失联,我又刚刚回点php,就开始自己写付款接口了,都是属于面对面(商户扫用户)支付,我们用到了扫码枪的两种模式(串口模式/usb测试模式),串口模式是配合c++程序一扫到二维码便发起http请求至apache本地付款服务中,然后c++程序会接收反馈。而测试模式是能把二维码扫进屏幕为字符串,方便测试。

 

测试期间,我一直用的是postman配合wamp完成支付,两者的稳定性是不容置疑的,用的都是http协议。然后在php程序与c++程序对接的时候,出了问题,前辈们不懂,嫩是要我确认php程序的问题情况。

 

遇到的问题是,给客户装机的时候,wamp由于缺少各种dll导致没法正常使用,负责装机的老板也没碰到过类似的问题。搞了半天,从安装wamp到自己安装php+apache到给客户机装wamp和c++程序测试->最后得知其实一开始wamp的提示就是最近路,已经花了3个人7小时,也就是21个工作时。

 

因为只要有过类似经验的人看起来十分简单的问题,花费了21个工作时去解决,是否值得?

 

如今程序员的时间这么值钱,我觉得不行。 21 * (30 - 50) = 620 - 1050 。

posted @ 2018-07-19 20:30  DoubleCG  阅读(84)  评论(0)    收藏  举报