ecos框架整合建行支付接口之php调用jar

入职新公司,这阵子做了两个支付,一个微信扫支付(微信扫码支付,若在微信环境中直接调用jsapi进行微信手机支付。有时间更新),另一个是建设银行网上支付。话絮休繁。

建设银行的支付接口需要对post回来的数据进行验签,自带的是使用建行的COM组件,先注册,然后new一个对象,调用方法,很常规,笔者是php5.3.8,此版本是自带php_com_dotnet.dll组件的(php5.4之前都自带),只需开启相应extension即可。但是线上是Linux的(不能使用COM组件),也违背了php跨平台的初衷,所以就没用COM这个方案。

网上也查过很多方法,比如 JavaBridge,也可以实现php调用jar,但是对于php来讲再开JVM开销有点大,所以自己写了2个方法来实现php调用jar,如下,(前提是安装Java运行环境,具体安装方法略)

1 /**
2      * @description : JAVA命令拼接
3      * @params : null
4      * @return : string
5   */
6     public function gen_command($param1=1,$param2='',$param3='',$param4='')
7     {
8         return "java -Djava.ext.dirs=".ROOT_DIR."\custom\ectools\lib\package\ CCBSign.SignTest"." ".$param1." ".$param2." ".$param3." ".$param4;
9     }

方法一是返回具体的jar路径

 1     /**
 2      * @description : 打开一进程执行JAVA命令,输出信息
 3      * @params : null
 4      * @return : string
 5      */
 6     public function exec_command($cmd)
 7     {
 8         $handle=popen($cmd,'r');
 9         $exce_java=fread($handle,5120);
10         pclose($handle);
11         return  $exce_java;
12     }

方法二是使用php打开CMD的Java进程,并返回结果

 1     /**
 2      * @description : 检测系统是否安装JAVA(在环境变量中是否可以找到java -version)
 3      * @params : null
 4      * @return : string
 5      */
 6     public function check_java($cmd="java")
 7     {
 8         $version = $this->exec_command($cmd);
 9         if($version || $this->exec_command('which java')){
10             return true;
11         }else{
12             return false;
13         }
14     }

方法三是检测是否安装了 Java环境,可略。

以上就可实现php内调用jar,是不是很简单!转载请注明出处。

posted @ 2015-10-27 10:48  ikratos  阅读(1035)  评论(0)    收藏  举报