我有一个自由客户,希望我将支付网关集成到他们的 Woocommerce 网站中,但我越来越担心他们选择的提供商和整个项目。
问题
根据我的建议,客户选择了网关提供商。该提供商是我以前从未听说过的远东地区,称为 Payforasia。第一个警告标志是他们网站的英文和中文(我认为是中文)版本似乎无法正确加载图像。
我获得了网关 API 的 PDF 文档和一个简单的 PHP 演示。他们还让我登录到商家前端,这样我就可以监控我的测试交易。都还算正常。
我在我的本地主机上运行了演示并设法连接到支付网关,但得到了一个失败的错误响应。该错误未在文档中列出,实际上可能的错误列表从 0001 到 0067。我收到错误 0068。第二个警告标志。当我通过我的客户联系供应商时,要求提供最新的文档和有关错误的建议。有人告诉我,文档是最新的,并且由于国定假日,办公室关闭了一个多星期(!?!?!)。他们今天终于回复了我,说这个错误“可能”是因为他们没有将服务器 IP 列入白名单,他们现在已经解决了这个问题。我仍然得到同样的错误。
当我等待他们回复我时,我开始深入研究演示代码并重新阅读他们的文档,看看我是否遗漏了一些明显的东西。我在他们的文档中注意到了这一行:
csid String 100 是 通过 http://cm.js.dl.saferconnectdirect.com/csid.js获取值
从最初的测试开始,在等待他们结束为期一周的国庆假期时,我已经在我客户的网站上应用了 SSL,显然浏览器不会加载到 javascript 的不安全连接。此 URL 在演示中,但在它和演示表单标记之间的大量返回之后位于底部。另一面旗帜向我挥动。
在尝试了与协议无关的 url 和 HTTPS 后,结果发现csid.js
无法通过安全连接使用。所以我将JS复制到服务器并修改了标记中的链接。这就是挥舞旗帜的真正开始精神的地方。
该脚本使用我的用户代理字符串、我的屏幕分辨率、原始服务器和散列数据填充 CSID 字段。更令人担忧的是,它还添加了一个看起来是跟踪图像或类似内容的 iframe。iframe 使用 wss:// 协议触发六个到 localhost 的奇怪连接。
我承认此时我惊慌失措,来到这里寻求建议。JS 被缩小了,看起来里面有一个 PHP eval()
,看起来像编码字符。我不知道如何解码,我不确定继续深入挖掘代码是否安全。
我的问题
我需要一些建议。
- 我是过度偏执还是我有真正的担忧?
- 网关提供商像这样混淆他们的代码是否正常?
- 我应该建议我的客户立即更换供应商吗?
- 我应该走开并记录下来体验吗?
对此的任何建议、建议或意见将不胜感激。抱歉,如果我的问题很冗长且有点冗长,我想获得尽可能多的背景知识。
更新
在所有优秀的建议之后,我只是想给大家一个快速的更新。
我向我的客户提出了很多我的担忧,但他并没有按照我预期的方式做出反应。我被指控故意拖后腿,发明问题,无能,并且收到的关于我的出身的专业性问题。我和我的客户之间的关系肯定已经结霜了。
他们坚持要我在站点上实现没有 SSL 的网关。当我拒绝并邀请他们寻找另一位开发人员时,他们几乎立即退缩并变得更加亲切,尽管我还没有收到道歉。
从那以后,他们透露网关提供商将错误的 IP 列入白名单,这就是为什么我仍然收到神秘的 0068 错误。网关提供商试图将那个固定在我身上,直到我提供相反的 Skype 日志。我的客户不允许我直接与网关提供商交谈,因此 IP 地址在他们之间的某个时候出现了乱码。
关于不安全的 JavaScript,昨天晚些时候,我的客户突然向我提供了这个 URL https://online-safest.com/pub/csid.js
。他们没有提供任何进一步的文档,也没有提供此脚本的来源。我还没有测试过这个脚本。
我不确定我想继续这样做,所以我一直在拖拖拉拉。我今天需要考虑一下。明天我会接受一个答案,不幸的是我不能接受多个答案,即使我已经使用了几个的内容。
更新 2
只是最后的更新。我为我的客户完成了这个项目,但我担心我与他们的关系现在受到不可挽回的损害。他们坚持让我在没有任何测试的情况下启用网关,除了一个测试事务通过的事实。我已经告诉他们,他们遇到的任何上线后问题都需要寻找另一个开发人员,因为他们在没有测试的情况下上线并且丧失了我的正常支持期。
你可能会争辩说,我将代码发布到野外是不道德的,这对最终用户来说可能是错误的和危险的,但是我没有其他方法可以轻松退出合同。我已授予他们对包含源代码的私有 GIT 存储库的完全访问权限,该源代码包含我与客户之间所有记录在案的交互。任何未来的开发人员都应该能够查看它并从那里做出决定。
我进一步发现他们实际上已经将工作分包给了我。总而言之,这是一个我很高兴摆脱的项目。