【PHP】工银e缴费PHP版本对接?

文档参考

https://open.icbc.com.cn/icbc/apip/docs_index.html

工银e缴费PHP版本对接?

背景介绍

因为工行e缴费集成了许多缴费项目,包括水电煤气的缴费,还包括党费的缴纳等。这里就是一个党建项目涉及到党费缴纳的问题,所以才接入工银e缴费。

应用场景

这里接入的是工银e缴费的页面,根据规则来生成页面链接即可。

签名规则

工银e缴费采用的是RSA验签的形式来进行签名生成的。由于中心接口是Java语言开发,所以涉及到一些加密跟PHP还是有所区别的。

签名的生成

Windows环境
以生成RSA算法为例:
解压SDK包后,进入到bin目录,双击******_rsa.bat文件,生成一对RSA公钥和**。
Linux环境
以生成RSA算法为例:
解压SDK包后,进入到bin目录,运行 ./******_rsa.sh命令,生成一对RSA公钥和**。

    $ cd bin
    $ ./******_rsa.sh

生成了xxxx.pri(私钥)+xxxx.pub(公钥)

工银e缴费文档

【PHP】工银e缴费PHP版本对接?【PHP】工银e缴费PHP版本对接?

直接生成

function gotoSign($data,$privateKey){
	$p = openssl_pkey_get_private( $privateKey );
	openssl_sign ( $data, $signature, $p, OPENSSL_ALGO_MD5);
     openssl_free_key ( $p );
     return base64_encode($signature);
}

$a = '';//APP ID第三方应用的ID,由接入方提供
$computeId = 22;//
$areaCode = "0020";
$userId = "第三方应用中的用户ID";
$returnUrl = "URL";//第三方应用回调接口
$pageId = 1;//1是首页 2内页详情
$payitemCode = "";//当pageId为2的情况
$customInfo = "";//
//
$b = "{$computeId},{$areaCode},{$userId},{$returnUrl},{$pageId},{$payitemCode},null";
$t = time() . mt_rand(100,999);
$s = gotoSign($b,file_get_contents(__DIR__ . "/cert/rsa_private_key.pem"));
$b = urlencode($b);
$prefix = "https://gw.open.icbc.com.cn/ui/wapb/payment/V1/entry?";
$url = "A={$a}&B={$b}&T={$t}&S={$s}";
$link = $prefix . $url;

直接访问这个就能进入e缴费页面了。