ECSHOP中国工商银行(ICBC)支付插件

本文介绍如何在ECSHOP电子商务平台中安装并使用中国工商银行(ICBC)支付插件,包括配置环境、修改文件及重启服务器等步骤,并提供插件核心代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ECSHOP中国工商银行(ICBC)支付插件

安装说明:
一、按工行的开发文档配置好环境。
1、ICBCEBankUtil.dll和infosecapi.dll两个dll文件拷贝到系统system32目录下;
2、运行“regsvr32 ICBCEBankUtil.dll”命令注册控件;
3、在httpd.conf中添加

  1. LoadModule php5_module "c:/WINSOWS/system32/ICBCEBankUtil.dll"
  2. LoadModule php5_module "c:/WINSOWS/system32/infosecapi.dll"

二、将解压后的 includes\  languages\ 下的文件copy到商城安装目录。

三、修改flow.php文件,在代码:

  1. elseif ($_REQUEST['step'] == 'done')
  2. {
  3.  
  4. }

中加入以下内容:

  1. /* 读出购物车中的信息,给$order赋值,工行支付信息中需要 */
  2. $order['goodsNum']   = 0;  //购买货品的数量
  3. $order['goodsIDs']   = ''; //购买货品的货号
  4. $order['goodsNames'] = ''; //购买货品的名称
  5. $cs = "SELECT * FROM " . $ecs->table('cart') .
  6.        " WHERE session_id = '" . SESS_ID . "' " .
  7.        "AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'";
  8. $cq = $db->query($cs);
  9. while($rq = $db->fetchRow($cq)){
  10.        $order['goodsNum'] += 1;
  11.        $order['goodsIDs'] .= $rq['goods_sn'].'-';
  12.        $order['goodsNames'] .= $rq['goods_name'].'-';
  13. }

四、重启Apache

使用说明:
在后台支付方式中 将会多出一项“工行在线支付”,点击安装即可。

includes/modules/pament/icbc.php:

  1. <?php
  2.  
  3. /**
  4.  * ECSHOP 中国工商银行(ICBC)支付插件
  5.  * ============================================================================
  6.  * Jacklee的博客-专注于PHP技术
  7.  * 网站地址: http://www.phpally.com
  8.  * @author Jacklee<jack349392900@gmail.com>
  9.  * @date 2012-03-08
  10.  */
  11.  
  12. if (!defined('IN_ECS'))
  13. {
  14.     die('Hacking attempt');
  15. }
  16.  
  17. $payment_lang = ROOT_PATH . 'languages/' . $GLOBALS['_CFG']['lang'] . '/payment/icbc.php';
  18.  
  19. if (file_exists($payment_lang))
  20. {
  21.     global $_LANG;
  22.  
  23.     include_once($payment_lang);
  24. }
  25.  
  26. /**
  27.  * 模块信息
  28.  */
  29. if (isset($set_modules) >> $set_modules == true)
  30. {
  31.     $i = isset($modules) ? count($modules) : 0;
  32.     /* 代码 */
  33.     $modules[$i]['code'] = basename(__FILE__, '.php');
  34.    
  35.     /* 描述对应的语言项 */
  36.     $modules[$i]['desc'] = 'icbc_desc';
  37.    
  38.     /* 是否支持货到付款 */
  39.     $modules[$i]['is_cod'] = '0'; //否
  40.    
  41.     /* 是否支持在线支付 */
  42.     $modules[$i]['is_online'] = '1'; //是
  43.    
  44.     /* 作者 */
  45.     $modules[$i]['author']  = 'Jacklee';
  46.    
  47.     /* 网址 */
  48.     $modules[$i]['website'] = 'http://www.phpally.com';
  49.    
  50.     /* 版本号 */
  51.     $modules[$i]['version'] = '1.0';
  52.    
  53.     /* 配置信息 */
  54.     $modules[$i]['config'] = array(
  55.         array('name' => 'merID', 'type' => 'text', 'value' => ''),//商户代码
  56.         array('name' => 'merAcct', 'type' => 'text', 'value' => ''),//商户帐号
  57.         array('name' => 'curType', 'type' => 'text', 'value' => ''),//支付币种
  58.         
  59.     );
  60.     return;
  61. }
  62.  
  63. class icbc
  64. {
  65.     /**
  66.      * 构造函数
  67.      *
  68.      * @access  public
  69.      * @param
  70.      *
  71.      * @return void
  72.      */
  73.  
  74.     function icbc()
  75.     {
  76.     }
  77.  
  78.     function __construct()
  79.     {
  80.         $this->icbc();
  81.     }
  82.  
  83.    /**
  84.      * 生成支付代码
  85.      * @param   array   $order  订单信息
  86.      * @param   array   $payment    支付方式信息
  87.      */
  88.    function get_code($order, $payment)
  89.    {
  90.            $strReturnCode = '';
  91.         //————————————————-
  92.         //– 根据定单生成 交易数据
  93.         //————————————————-
  94.         $TDT = '<?xml version="1.0" encoding="GBK" standalone="no"?>';
  95.         $TDT .= '<B2CReq>';
  96.         $TDT .= '<interfaceName>ICBC_PERBANK_B2C</interfaceName>';
  97.         $TDT .= '<interfaceVersion>1.0.0.3</interfaceVersion>';
  98.         $TDT .= '<orderInfo>';
  99.         $TDT .= '<orderDate>'.local_date('YmdHis', $order['add_time']).'</orderDate>';
  100.         $TDT .= '<orderid>'.$order['order_sn'].'</orderid>';//订单号
  101.         $TDT .= '<amount>'.($order['order_amount'] * 100).'</amount>';//订单金额
  102.         $TDT .= '<curType>'.$payment['cutType'].'</curType>';//支付币种 
  103.         $TDT .= '<merID>'.$payment['merID'].'</merID>';//商户代码
  104.         $TDT .= '<merAcct>'.$payment['merAcct'].'</merAcct>';//商户帐号
  105.         $TDT .= '</orderInfo>';
  106.         
  107.         $TDT .= '<custom>';
  108.         $TDT .= '<verifyJoinFlag>0</verifyJoinFlag>';//是否检验联名标志 D
  109.         $TDT .= '<Language></Language>';//语种  默认为中文 D
  110.         $TDT .= '</custom>';
  111.         
  112.         $TDT .= '<message>';
  113.         $TDT .= '<goodsID>'.$order['goodsIDs'].'</goodsID>'; //商品编号
  114.         $TDT .= '<goodsName>'.$order['goodsNames'].'</goodsName>';//商品名称
  115.         $TDT .= '<goodsNum>'.$order['goodsNum'].'</goodsNum>';//商品数量
  116.         $TDT .= '<carriageAmt></carriageAmt>';//已含运费金额
  117.         $TDT .= '<merHint></merHint>';//商城提示
  118.         $TDT .= '<remark1></remark1>';//备注字段1
  119.         $TDT .= '<remark2></remark2>';//备注字段2
  120.         $TDT .= '<merURL>http://www.fanrui.cn</merURL>';//处理完成后 跳转到的地址 D
  121.         $TDT .= '<merVAR></merVAR>';//商户变量  会按原样返回
  122.         $TDT .= '</message>';
  123.         $TDT .= '</B2CReq>';
  124.         $tranData = base64_encode($TDT);
  125.            //————————————————-
  126.            //– 初始化工行支付对象
  127.            //————————————————-
  128.            $icbcPayObj= new com('ICBCEBANKUTIL.B2CUtil'); 
  129.         $rc=$icbcPayObj->init("c:\wamp\www\includes\icbc\ectest01.crt"
  130.                         ,"c:\wamp\www\includes\icbc\ectest01.crt"
  131.                         ,"c:\wamp\www\includes\icbc\ectest01.key"
  132.                         ,$TDT);
  133.         if($rc != 0){
  134.             $errorCode = "初始化失败 调试代码:".$icbcPayObj->getRC();
  135.             return $errorCode;
  136.         }
  137.         //———————————————————-
  138.         //– 签名
  139.         //———————————————————-
  140.         $merSignMsg = '';
  141.         $qianMing = $icbcPayObj->signC($TDT, strlen($TDT));
  142.         if($qianMing == ''){
  143.             $errorCode = "签名失败! 调试代码:".$icbcPayObj->getRC();
  144.             return $errorCode;
  145.         }else{
  146.             $merSignMsg = base64_encode($qianMing);
  147.         }
  148.         //———————————————————–
  149.         //– 验证签名
  150.         //————————————————————-
  151.         $qm_ok = $icbcPayObj->verifySignC($TDT, strlen($TDT), $qianMing, strlen($qianMing));
  152.         if($qm_ok != 0){
  153.             $errorCode = "签名验证失败! 调试代码:".$icbcPayObj->getRC();
  154.             return $errorCode;
  155.         }
  156.         //————————————————————-
  157.         //– 获取商户证书
  158.         //————————————————————-
  159.         $cert = $icbcPayObj->getCert(1);
  160.         if($cert == ''){
  161.             $errorCode = "获取商户证书失败! 调试代码:".$icbcPayObj->getRC();
  162.             return $errorCode;
  163.         }
  164.         //————————————————————–
  165.         //– 商城证书公钥
  166.         //————————————————————–
  167.         $file_handle = fopen("c:\wamp\www\includes\icbc\ectest01.crt", "r");
  168.         $line = '';
  169.         while (!feof($file_handle)) {
  170.            $line .= fgets($file_handle);
  171.         }
  172.         $merCert = base64_encode($line);
  173.         fclose($file_handle);
  174.         //————————————————————-
  175.         //– 生成支付form串
  176.         //————————————————————-
  177.         $strReturnCode = "<div style='text-align:center'>";
  178.         $strReturnCode .= "<form name='form1' method='post' action='https://210.82.37.103/servlet/ICBCINBSEBusinessServlet'>";
  179.         $strReturnCode .= "<INPUT NAME='interfaceName' TYPE='text' value='ICBC_PERBANK_B2C'>";
  180.         $strReturnCode .= "<INPUT NAME='interfaceVersion' TYPE='text' value='1.0.0.3'>";
  181.  
  182.         $strReturnCode .= "<INPUT NAME='tranData' TYPE='hidden' value='".$tranData."' >";
  183.         $strReturnCode .= "<INPUT NAME='merSignMsg' TYPE='hidden' value='".$merSignMsg."'>";
  184.         $strReturnCode .= "<INPUT NAME='merCert' TYPE='hidden' value='".$merCert."'>";
  185.         
  186.         $strReturnCode .= "<input type='submit' value='工行在线支付'>";
  187.         $strReturnCode .= "</form>";
  188.         $strReturnCode .= "</div></br>";
  189.         return $strReturnCode;
  190.         
  191.     }
  192.  
  193.     /**
  194.      * 响应操作
  195.      */
  196.     function respond()
  197.     {
  198.        
  199.     }
  200. }
  201.  
  202. ?>

languages/zh_cn/payment/icbc.php:

  1. <?php
  2.  
  3. /**
  4.  * ECSHOP 中国工商银行(ICBC)支付 语言文件
  5.  * ============================================================================
  6.  * Jacklee的博客-专注于PHP技术
  7.  * 网站地址: http://www.phpally.com
  8.  * @author Jacklee<jack349392900@gmail.com>
  9.  * @date 2012-03-08
  10.  */
  11.  
  12. global $_LANG;
  13.  
  14. $_LANG['merID']  = '商户代码';
  15. $_LANG['merAcct']= '商户帐号';
  16. $_LANG['curType']  = '支付币种';
  17.         
  18. ?>
  19. 转载地址:http://hi.baidu.com/xupengaixue/item/6bfce5d00a6401efb3f7772b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值