概述:
最近在做一个澳门的商城项目,其中需要跟当地的工商银行对接支付,其中的提交支付时,工商银行的加密有自己加密程序,然而他们只提供了JAVA和C 语言的DEMO,并没有PHP的DEMO,甚至连PHP的扩展也说没有,一时让我陷入了困境,不知道怎解决,于是我在百度 谷歌上寻找解决方法。
问题解决方案:
1、java版本的domo用PHP重写
其实这澳门提供的接口的加密方式跟国内大陆的一致,也是用infosec扩展的程序进行加密,大陆的一些开发人员对接接口是直接把JAVA转化成PHP,不过必须的当然是相关的PHP扩展。不过,让我失望的是,当我问工作人员有没有PHP扩展时,他却一问三不知,只有JAVA版本的。而网友分享的PHP拓展,一来不安全,二来只有PHP5.6的版本,而我们服务器已经升级到PHP7了,不知道能否兼容。因此,保守起见,最终放弃了该做法。
(该方法可参考链接:https://blog.csdn.net/weixin_41750160/article/details/83341199)
2、调用java接口进行加密
既然他们提供了java的demo,其实应用起来也不难。但是需要的是搭建javaWeb的环境,并且把demo部署好,我们让php程序加密时候调用一下自己的做的java 加密接口就好了。最终,我选择了该方法。
(该方法可参考链接:https://www.cnblogs.com/weishuan/p/8372063.html)
搭建java接口过程:
1、安装tomcat
该过程不熟悉的朋友,可以按照教程一步步来,值得注意的是,tomcat的端口是8080,其实根据我们的需求,我们只需要自己的PHP程序所在服务器能请求到就行,也就是说localhost能访问或者固定IP就好了,以防给黑客多一个攻击的入口,因此该端口可以不开放或者限制IP访问。
可以参考https://blog.csdn.net/lcyaiym/article/details/76696192
2、部署java项目
其实工商银行对接人一般会提供接口介绍的PPT给你,有加密方法的demo,但是也还没达到开箱即用的程度,因此我分享一下我自己的写的java demo给大家参考。请根据自己的文件路径进行修改,注释部分是调试的,如果返回不成功,可以去掉注释进行分步调试。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.infosec.icbc.ReturnValue;
/**
* Servlet implementation class getSign
*/
@WebServlet(&