ECSHOP插件怎么在PHP中使用
创始人
2024-12-13 21:22:17
0次

代码如下:


if (!defined('IN_ECS'))
{
 die('Hacking attempt');
}

$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/bankcomm.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']    = 'bankcomm_desc';

 /* 是否支持货到付款 */
 $modules[$i]['is_cod']  = '0';

 /* 是否支持在线支付 */
 $modules[$i]['is_online']  = '1';

 /* 支付费用,由配送决定 */
 $modules[$i]['pay_fee'] = '0';

 /* 作者 */
 $modules[$i]['author']  = 'Reson';

 /* 网址 */
 $modules[$i]['website'] = 'https://www.jb51.net';

 /* 版本号 */
 $modules[$i]['version'] = '1.0.0.0';

 /* 配置信息 */
 $modules[$i]['config']  = array();

 return;
}

/**
 * 类
 */
class bankcomm
{
 /**
  * 构造函数
  *
  * @return void
  */
 function bankcomm()
 {
 }

 function __construct()
 {
  $this->bankcomm();
 }

 /**
  * 提交函数
  */
 function get_code($order)
 {
  //获得表单传过来的数据
  $param['interfaceVersion'] = '1.0.0.0'; //消息版本号*
  $param['merID'] = '301310063009501'; //商户号 (测试号,后期可自行更改)
  $param['orderid'] = $order['orderid']; //订单号*
  $param['orderDate'] = local_date("Ymd",gmtime()); //商户订单日期* yyyyMMdd
  $param['orderTime'] = local_date("His",gmtime()); //商户订单时间* HHmmss
  $param['tranType'] = 0; //交易类别* 0:B2C
  $param['amount'] = $order['amount']; //订单金额*
  $param['curType'] = 'CNY'; //交易币种* 默认CNY
  $param['orderContent'] = '';
  $param['orderMono'] = $order['orderMono']; //商家备注
  $param['phdFlag'] = ''; //物流配送标志
  $param['notifyType'] = 1; //通知方式* 1 通知
  $param['merURL'] = ''; 
  $param['goodsURL'] = $order['goodsURL']; //取货URL
  $param['jumpSeconds'] = '';
  $param['payBatchNo'] = '';
  $param['proxyMerName'] = '';
  $param['proxyMerType'] = '';
  $param['proxyMerCredentials'] = '';
  $param['netType'] = 0; //渠道编号* 0:html渠道
  $param['issBankNo'] = '';

  $tranCode = "cb2200_sign";

  htmlentities($param['orderMono'],"ENT_QUOTES","utf-8");
  //连接字符串
  $source = '';
  foreach($param as $key=>$val){
   if($key != 'issBankNo')
   $source .= $val.'|';
  }
  $source = substr($source,0,strlen($source)-1);

  //连接地址
  $socketUrl = "tcp://127.0.0.1:8080"; //这里的端口根据自己配置的情况
  $fp = stream_socket_client($socketUrl, $errno, $errstr, 30);
  $retMsg="";
  //
  if (!$fp) {
   echo "$errstr ($errno)
\n";
  } else
  {
   $in  = "";
   $in .= "";
   $in .= "".$tranCode."";
   $in .= "".$source."";
   $in .= "
";
   fwrite($fp, $in);
   while (!feof($fp)) {
    $retMsg =$retMsg.fgets($fp, 1024); 
   }
   fclose($fp);
  } 
  //解析返回xml
  $dom = new DOMDocument;
  $dom->loadXML($retMsg);

  $retCode = $dom->getElementsByTagName('retCode');
  $retCode_value = $retCode->item(0)->nodeValue;

  $errMsg = $dom->getElementsByTagName('errMsg');
  $errMsg_value = $errMsg->item(0)->nodeValue;

  $signMsg = $dom->getElementsByTagName('signMsg');
  $signMsg_value = $signMsg->item(0)->nodeValue;

  $orderUrl = $dom->getElementsByTagName('orderUrl');
  $orderUrl_value = $orderUrl->item(0)->nodeValue;

  $MerchID = $dom->getElementsByTagName('MerchID');
  $merID = $MerchID->item(0)->nodeValue;
  //echo "retMsg=".$retMsg;
  //echo $retCode_value." ".$errMsg_value." ".$signMsg_value." ".$orderUrl_value;
  if($retCode_value != "0"){
   //echo "交易返回码:".$retCode_value."
";
   //echo "交易错误信息:" .$errMsg_value."
";
   return "交易错误信息:" .$errMsg_value."
";
  }else{
   $param['signMsg_value'] = $signMsg_value;
   $param['orderUrl_value'] = $orderUrl_value;
   $form_code = $this->create_html($param); //创建提交表单
   return $form_code;
  }

 }

 /**
  * 创建提交表单
  */
 function create_html($param){
  $pay_html ='


  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  
  
';
  return $pay_html;
 }

 /**
  * 处理函数
  */
 function respond()
 {  
  $tranCode = "cb2200_verify";
  $notifyMsg = $_REQUEST["notifyMsg"];  
  $lastIndex = strripos($notifyMsg,"|");
  $signMsg = substr($notifyMsg,$lastIndex+1); //签名信息
  $srcMsg = substr($notifyMsg,0,$lastIndex+1);//原文

  //连接地址
  $socketUrl = "tcp://127.0.0.1:8080";
  $fp = stream_socket_client($socketUrl, $errno, $errstr, 30);
  $retMsg="";
  if (!$fp) {
   //echo "$errstr ($errno)
\n";
   return false;
  }else{
   $in  = "";
   $in .= "";
   $in .= "".$tranCode."";
   $in .= "".$notifyMsg."";
   $in .= "
";
   fwrite($fp, $in);
   while (!feof($fp)) {
    $retMsg =$retMsg.fgets($fp, 1024); 
   }
   fclose($fp);
  } 

  //解析返回xml
  $dom = new DOMDocument;
  $dom->loadXML($retMsg);

  $retCode = $dom->getElementsByTagName('retCode');
  $retCode_value = $retCode->item(0)->nodeValue;

  $errMsg = $dom->getElementsByTagName('errMsg');
  $errMsg_value = $errMsg->item(0)->nodeValue;

  $signMsg = $dom->getElementsByTagName('signMsg');
  $signMsg_value = $signMsg->item(0)->nodeValue;

  if($retCode_value != ''){
   //echo "交易返回码:".$retCode_value."
";
   //echo "交易错误信息:" .$errMsg_value."
";
   return false;
  }else{
   $arr = preg_split("/\|{1,}/",$srcMsg); 
   $pay_id = $arr[1];
   $action_note = base64_decode($arr[16]);
   // 完成订单。
   order_paid($pay_id, PS_PAYED, $action_note);
   //告诉用户交易完成
   return true; 
  }

  ///////////////// respond END ///////////////
 }

}

?>

语言包源码(languages/zh_cn/payment/bankcomm.php):

复制代码 代码如下:


/**
 * 交通银行语言文件
 * by: Reson
 * 2014/03/31
 */

global $_LANG;

$_LANG['bankcomm'] = '交通银行在线支付';
$_LANG['bankcomm_desc'] = '交通银行在线支付';
$_LANG['pay_button'] = '交通银行支付';

?>

以下是调用的范例:

复制代码 代码如下:


include_once(ROOT_PATH . 'includes/modules/payment/bankcomm.php');
$order_['orderid'] = $order['order_sn'];
$order_['amount'] = $order['yd_price'];
$order_['orderMono'] = '测试'; //商家备注
$order_['goodsURL'] = "http://".$_SERVER['HTTP_HOST'].'/respond.php?code=bankcomm'; //取货URL
$pay_code = new bankcomm;
$pay_button = $pay_code->get_code($order_);
$order['pay_button'] = $pay_button; //即此时已经生成了一个支付按钮

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...