安装说明:
一、按工行的开发文档配置好环境。
1、ICBCEBankUtil.dll和infosecapi.dll两个dll文件拷贝到系统system32目录下;
2、运行“regsvr32 ICBCEBankUtil.dll”命令注册控件;
3、在httpd.conf中添加
- LoadModule php5_module "c:/WINSOWS/system32/ICBCEBankUtil.dll"
- LoadModule php5_module "c:/WINSOWS/system32/infosecapi.dll"
二、将解压后的 includes\ languages\ 下的文件copy到商城安装目录。
三、修改flow.php文件,在代码:
- elseif ($_REQUEST['step'] == 'done')
- {
- }
中加入以下内容:
- /* 读出购物车中的信息,给$order赋值,工行支付信息中需要 */
- $order['goodsNum'] = 0; //购买货品的数量
- $order['goodsIDs'] = ''; //购买货品的货号
- $order['goodsNames'] = ''; //购买货品的名称
- $cs = "SELECT * FROM " . $ecs->table('cart') .
- " WHERE session_id = '" . SESS_ID . "' " .
- "AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'";
- $cq = $db->query($cs);
- while($rq = $db->fetchRow($cq)){
- $order['goodsNum'] += 1;
- $order['goodsIDs'] .= $rq['goods_sn'].'-';
- $order['goodsNames'] .= $rq['goods_name'].'-';
- }
四、重启Apache
使用说明:
在后台支付方式中 将会多出一项“工行在线支付”,点击安装即可。
includes/modules/pament/icbc.php:
- <?php
- /**
- * ECSHOP 中国工商银行(ICBC)支付插件
- * ============================================================================
- * Jacklee的博客-专注于PHP技术
- * 网站地址: http://www.phpally.com
- * @author Jacklee<jack349392900@gmail.com>
- * @date 2012-03-08
- */
- if (!defined('IN_ECS'))
- {
- die('Hacking attempt');
- }
- $payment_lang = ROOT_PATH . 'languages/' . $GLOBALS['_CFG']['lang'] . '/payment/icbc.php';
- if (file_exists($payment_lang))
- {
- global $_LANG;
- include_once($payment_lang);
- }
- /**
- * 模块信息
- */
- if (isset($set_modules) >> $set_modules == true)
- {
- $i = isset($modules) ? count($modules) : 0;
- /* 代码 */
- $modules[$i]['code'] = basename(__FILE__, '.php');
- /* 描述对应的语言项 */
- $modules[$i]['desc'] = 'icbc_desc';
- /* 是否支持货到付款 */
- $modules[$i]['is_cod'] = '0'; //否
- /* 是否支持在线支付 */
- $modules[$i]['is_online'] = '1'; //是
- /* 作者 */
- $modules[$i]['author'] = 'Jacklee';
- /* 网址 */
- $modules[$i]['website'] = 'http://www.phpally.com';
- /* 版本号 */
- $modules[$i]['version'] = '1.0';
- /* 配置信息 */
- $modules[$i]['config'] = array(
- array('name' => 'merID', 'type' => 'text', 'value' => ''),//商户代码
- array('name' => 'merAcct', 'type' => 'text', 'value' => ''),//商户帐号
- array('name' => 'curType', 'type' => 'text', 'value' => ''),//支付币种
- );
- return;
- }
- class icbc
- {
- /**
- * 构造函数
- *
- * @access public
- * @param
- *
- * @return void
- */
- function icbc()
- {
- }
- function __construct()
- {
- $this->icbc();
- }
- /**
- * 生成支付代码
- * @param array $order 订单信息
- * @param array $payment 支付方式信息
- */
- function get_code($order, $payment)
- {
- $strReturnCode = '';
- //————————————————-
- //– 根据定单生成 交易数据
- //————————————————-
- $TDT = '<?xml version="1.0" encoding="GBK" standalone="no"?>';
- $TDT .= '<B2CReq>';
- $TDT .= '<interfaceName>ICBC_PERBANK_B2C</interfaceName>';
- $TDT .= '<interfaceVersion>1.0.0.3</interfaceVersion>';
- $TDT .= '<orderInfo>';
- $TDT .= '<orderDate>'.local_date('YmdHis', $order['add_time']).'</orderDate>';
- $TDT .= '<orderid>'.$order['order_sn'].'</orderid>';//订单号
- $TDT .= '<amount>'.($order['order_amount'] * 100).'</amount>';//订单金额
- $TDT .= '<curType>'.$payment['cutType'].'</curType>';//支付币种
- $TDT .= '<merID>'.$payment['merID'].'</merID>';//商户代码
- $TDT .= '<merAcct>'.$payment['merAcct'].'</merAcct>';//商户帐号
- $TDT .= '</orderInfo>';
- $TDT .= '<custom>';
- $TDT .= '<verifyJoinFlag>0</verifyJoinFlag>';//是否检验联名标志 D
- $TDT .= '<Language></Language>';//语种 默认为中文 D
- $TDT .= '</custom>';
- $TDT .= '<message>';
- $TDT .= '<goodsID>'.$order['goodsIDs'].'</goodsID>'; //商品编号
- $TDT .= '<goodsName>'.$order['goodsNames'].'</goodsName>';//商品名称
- $TDT .= '<goodsNum>'.$order['goodsNum'].'</goodsNum>';//商品数量
- $TDT .= '<carriageAmt></carriageAmt>';//已含运费金额
- $TDT .= '<merHint></merHint>';//商城提示
- $TDT .= '<remark1></remark1>';//备注字段1
- $TDT .= '<remark2></remark2>';//备注字段2
- $TDT .= '<merURL>http://www.fanrui.cn</merURL>';//处理完成后 跳转到的地址 D
- $TDT .= '<merVAR></merVAR>';//商户变量 会按原样返回
- $TDT .= '</message>';
- $TDT .= '</B2CReq>';
- $tranData = base64_encode($TDT);
- //————————————————-
- //– 初始化工行支付对象
- //————————————————-
- $icbcPayObj= new com('ICBCEBANKUTIL.B2CUtil');
- $rc=$icbcPayObj->init("c:\wamp\www\includes\icbc\ectest01.crt"
- ,"c:\wamp\www\includes\icbc\ectest01.crt"
- ,"c:\wamp\www\includes\icbc\ectest01.key"
- ,$TDT);
- if($rc != 0){
- $errorCode = "初始化失败 调试代码:".$icbcPayObj->getRC();
- return $errorCode;
- }
- //———————————————————-
- //– 签名
- //———————————————————-
- $merSignMsg = '';
- $qianMing = $icbcPayObj->signC($TDT, strlen($TDT));
- if($qianMing == ''){
- $errorCode = "签名失败! 调试代码:".$icbcPayObj->getRC();
- return $errorCode;
- }else{
- $merSignMsg = base64_encode($qianMing);
- }
- //———————————————————–
- //– 验证签名
- //————————————————————-
- $qm_ok = $icbcPayObj->verifySignC($TDT, strlen($TDT), $qianMing, strlen($qianMing));
- if($qm_ok != 0){
- $errorCode = "签名验证失败! 调试代码:".$icbcPayObj->getRC();
- return $errorCode;
- }
- //————————————————————-
- //– 获取商户证书
- //————————————————————-
- $cert = $icbcPayObj->getCert(1);
- if($cert == ''){
- $errorCode = "获取商户证书失败! 调试代码:".$icbcPayObj->getRC();
- return $errorCode;
- }
- //————————————————————–
- //– 商城证书公钥
- //————————————————————–
- $file_handle = fopen("c:\wamp\www\includes\icbc\ectest01.crt", "r");
- $line = '';
- while (!feof($file_handle)) {
- $line .= fgets($file_handle);
- }
- $merCert = base64_encode($line);
- fclose($file_handle);
- //————————————————————-
- //– 生成支付form串
- //————————————————————-
- $strReturnCode = "<div style='text-align:center'>";
- $strReturnCode .= "<form name='form1' method='post' action='https://210.82.37.103/servlet/ICBCINBSEBusinessServlet'>";
- $strReturnCode .= "<INPUT NAME='interfaceName' TYPE='text' value='ICBC_PERBANK_B2C'>";
- $strReturnCode .= "<INPUT NAME='interfaceVersion' TYPE='text' value='1.0.0.3'>";
- $strReturnCode .= "<INPUT NAME='tranData' TYPE='hidden' value='".$tranData."' >";
- $strReturnCode .= "<INPUT NAME='merSignMsg' TYPE='hidden' value='".$merSignMsg."'>";
- $strReturnCode .= "<INPUT NAME='merCert' TYPE='hidden' value='".$merCert."'>";
- $strReturnCode .= "<input type='submit' value='工行在线支付'>";
- $strReturnCode .= "</form>";
- $strReturnCode .= "</div></br>";
- return $strReturnCode;
- }
- /**
- * 响应操作
- */
- function respond()
- {
- }
- }
- ?>
languages/zh_cn/payment/icbc.php:
- <?php
- /**
- * ECSHOP 中国工商银行(ICBC)支付 语言文件
- * ============================================================================
- * Jacklee的博客-专注于PHP技术
- * 网站地址: http://www.phpally.com
- * @author Jacklee<jack349392900@gmail.com>
- * @date 2012-03-08
- */
- global $_LANG;
- $_LANG['merID'] = '商户代码';
- $_LANG['merAcct']= '商户帐号';
- $_LANG['curType'] = '支付币种';
- ?>
- 转载地址:http://hi.baidu.com/xupengaixue/item/6bfce5d00a6401efb3f7772b