华夏银行 大宗三方 B2B接口 JAVA 转 PHP接口

来源:互联网 发布:4g网络优化 前景 编辑:程序博客网 时间:2024/04/28 17:01

最近在忙着折腾华夏银行大宗三方B2B开发,拿到接口的时间直接懵逼,给了我一个JAVA的jar,天空中一万只草泥马飞过。

系统是PHP的程序,结果给我一个java的,而且只有java的,还是gb2312。

苦逼的程序猿,开始尝试使用php-java-bridge,PHP调用jar包的方法。实践检验可行,能够调用方法,但是返回数据的强制转型,怎么也搞不出来。

奋起暴躁的猿怎么可能忍得了,去他妹妹的jar,直接用PHP暴力发送数据。

1、安装JD-GUI

安装JD-GUI之前先安装jdk,直接在网上能搜到很多教程。

我下载的版本是https://github.com/java-decompiler/jd-gui/releases/download/v1.4.0/jd-gui-1.4.0-0.noarch.rpm。

直接暴力读java源码,用PHP实现他的逻辑。

2、不抱怨了,直接上PHP的代码吧。

注:这里只提供一种思路哈,其实很简单,就是往银行的服务器上发送xml数据包就可以。 

签名实现方法:

 private function sign($data)    {        $certs = array();        openssl_pkcs12_read(file_get_contents("123456.pfx"), $certs, "123456");         if (!$certs) return;        $signature = '';        openssl_sign($data, $signature, $certs['pkey']);        return base64_encode($signature);    }

拼接发送数据:

private function get_post_data($original_len, $xml_data)    {        $headers = array(            'POST /dzserver/test HTTP/1.1',            "\r\n",            'User-Agent: Java/1.3.1',            "\r\n",            'Host: ×××.××.×××.×××:9080',            "\r\n",            'Cookie: JSESSIONID=aIG-RvFXRUUe',            "\r\n",            'Accept: text/html, image/gif, image/jpeg, *; q=.2, * /*; q=.2',            "\r\n",            'Connection: keep-alive',            "\r\n",            'Content-Type: application/x-www-form-urlencoded',            "\r\n",            'Content-Length:'        );        $headers_str = implode('', $headers);        $post_data = $headers_str . $original_len . "\r\n" . "\r\n" . $xml_data;        return $post_data;    }

发送数据:

private function post_url($url, $post_data)    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_HTTP_VERSION, '1.0');        curl_setopt($ch, CURLOPT_TIMEOUT, 30);        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);        curl_setopt($ch, CURLOPT_HEADER, false);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);        $res = curl_exec($ch);        curl_close($ch);        return $res;    }

返回的数据直接用simpleXMLElement处理返回对象,可以调用里面的数据。 

注:这里只提供一个思路,请求银行服务器的类代码有500多行,就不往上贴了,有需要加扣扣(七九二二四零五八六)哈



0 0
原创粉丝点击