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,是不是很简单!转载请注明出处。
浙公网安备 33010602011771号