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

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

";
  •         return $strReturnCode;
  •         
  •     }
  •  
  •     /**
  •      * 响应操作
  •      */
  •     function respond()
  •     {
  •        
  •     }
  • }
  •  
  • ?>
  • languages/zh_cn/payment/icbc.php:

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

    你可能感兴趣的:(其他)