標簽歸檔:DedeEIMS

更dedeeims添加在線支付系統

因為數據庫部分我已經寫過一篇文章:給dedeims添加在線支付的功能之數據庫設置,本文以該文章的數據庫為準來寫,如果沒看過此文的網友,可以通過http://www.shiekolong1788.icu/p/dedeims-online-pay來查看。

首先在dedeeims的會員面板中添加在線支付的鏈接。很簡單,在menu中添加:
<li>
<h4 class=”sort”><a class=”icon par” href=”../member/pay.php”> < ?php echo GetLang('pay'); ?> </a></h4>
</li>

然后在語言文件/include/lang/下相應的語言文件中添加上對應的文字描述。

因為網銀有很多,支付接口也很多,我們用的時候可能要添加多個接口,所以我們要做一個網銀配置腳本:bank_config.php

< ?php
	$bank_List=Array(
		'網銀在線'=>'chinabank'
	);
?>

首先來說dedeeims在線支付的前臺,很簡單。pay.php,一個簡單的表單,這里不再詳述,代碼如下:

	&lt;form class="mTB10 mL10 mR10" name="form2" action="bank.php" method="post" target="_blank">
    &lt;table cellspacing="1" class="submit">
      &lt;tbody>
      	&lt;tr>
      	  &lt;td style="text-align:right;">支付接口:&lt;/td>
      	  &lt;td>
      	    &lt;select name="bank" id="sbank" style="width:160px">
			&lt;?php
				foreach($bank_List as $bankName=>$bankEn){
			?>
      	      &lt;option value="&lt;?php echo $bankEn?>">&lt;?php echo $bankName?>&lt;/option>
      	    &lt;?php
      	    	}
      	    ?>
      	  	&lt;/select>&lt;span style="color:red;">*&lt;/span>
      	  &lt;/td>
      	&lt;/tr>
      	&lt;tr>
      	  &lt;td style="text-align:right;">支付金額:&lt;/td>
      	  &lt;td>&lt;input name="money" type="text" id="smoney" size="15" class="text" style="width:150px;"  value="&lt;?php echo $pay ?>"/>&lt;span style="color:red;">*&lt;/span>&lt;/td>
      	&lt;/tr>
      	&lt;tr>
      	  &lt;td>&nbsp;&lt;/td>
      	  &lt;td>&lt;button class="button2" type="submit">充值&lt;/button>&lt;button class="button2 mL10" type="reset">重填&lt;/button>&lt;/td>
      	&lt;/tr>
      &lt;/tbody>
    &lt;/table>
	&lt;/form>

現在提交到bank.php。bank.php根據選擇的接口自動提交的接口文件,然后返回(這些支付接口有示例文件,直接修改下就可以)。
bank.php

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&lt;html>
&lt;head>
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8">
&lt;link href="css/index.css" rel="stylesheet" type="text/css">
&lt;/head>
< ?php
require_once(dirname(__FILE__)."/bank/config.php");
require_once(dirname(__FILE__)."/config.php");
CheckRank(0,0);

$bank=$_POST['bank'];
if(!in_Array($bank=$_POST['bank'],$bank_List)){ShowMsg('錯誤的銀行,請返回重新選擇', '-1',0,5000);die();}
if(!is_Numeric($money=$_POST['money'])){ShowMsg('充值金額必須是數字,請重新填寫', '-1',0,5000);die();}

$row=$dsql->GetOne("select  * from `#@__member` where mid='".$cfg_ml->M_ID."'");

$orderid=date('Ymd',time())."-".$cfg_ml->M_LoginID."-".date('His',time());

?>
&lt;body onLoad="javascript:document.Bank_FORM.submit()">
載入中...&lt;form name="Bank_FORM" id="Bank_FORM" action="./bank/&lt;?php echo $bank ?>/Pay.php" method="post">
&lt;input name="orderid" value="&lt;?php echo $orderid?>" type="hidden"/>
&lt;input name="money" value="&lt;?php echo $money?>" type="hidden"/>
&lt;input name="user" value="&lt;?php echo $cfg_ml->M_LoginID?>" type="hidden"/>
&lt;input name="uid" value="&lt;?php echo $cfg_ml->M_ID?>" type="hidden"/>
&lt;input name="moeny" value="&lt;?php echo $money?>" type="hidden"/>
&lt;input name="email" value="&lt;?php echo $row['email']; ?>" type="hidden"/>
&lt;input name="uname" value="&lt;?php echo $row['uname']; ?>" type="hidden"/>
&lt;input name="company" value="&lt;?php echo $row['company']; ?>" type="hidden"/>
&lt;input name="mobile" value="&lt;?php echo $row['mobile']; ?>" type="hidden"/>
&lt;input name="tel" value="&lt;?php echo $row['tel']; ?>" type="hidden"/>
&lt;input name="fax" value="&lt;?php echo $row['fax']; ?>" type="hidden"/>
&lt;input name="address" value="&lt;?php echo $row['address']; ?>" type="hidden"/>
&lt;/form>&lt;/body>&lt;/html>

返回的時候為了統一,我們寫一個通用的函數,用于為用戶充值,并記錄到日志:

< ?php
function payok($money,$logkey,$logdesc,$uid=1,$dsql){
	if(!$dsql->GetOne("select `id` from `#@__paylog` where `mid`='".$uid."' and `desc` like '%".$logkey."%'")){
		$res=$dsql->GetOne("select `money` from `#@__member` where `mid`='".$uid."'");
		$oldMoney=$res['money'];
		$query="insert into `#@__paylog`(`mid`,`paytype`,`money`,`money_s`,`money_e`,`desc`,`dateline`)values('$uid','0','$money','".$oldMoney."','".($oldMoney+$money)."','$logdesc','".time()."')";
		$dsql->ExecuteNoneQuery($query);
		$query="update `#@__member` set `money`=`money`+'".$money."' where `mid`='".$uid."'";
		$dsql->ExecuteNoneQuery($query);
		ShowMsg('充值成功!', './../../pay_log.php?type=pay',0,1500);
	}else{
		ShowMsg('&lt;span style=color:#F00>重復點擊,只充值一次!', './../../pay_log.php?type=pay',0,15000);
	};
	die();
}
?>

現在就支付完畢了,為了方便差財務,我們在寫一個充值記錄的頁面,這個就比較簡單了,在此就不再熬述了。

因網銀在線的為例,調用的時候,直接使用一下代碼:

if ($v_md5str==$md5string)
{
	if($v_pstatus=="20")
	{
		payok($v_amount,':'.$v_oid.';','網銀在線('.$v_pmode.'):'.$v_oid.';'.$v_moneytype.':'.$v_amount,$cfg_ml->M_ID,$dsql);
		//支付成功,可進行邏輯處理!
		//商戶系統的邏輯處理(例如判斷金額,判斷支付狀態,更新訂單狀態等等)......

	}
}

自定義dedeeims的路徑,不讓dedeeims產品頁生成靜態

在織夢的論壇上看到好幾篇關于自定義dedeeims的路徑,不讓dedeeims產品頁生成靜態之類的求助信息。確實,dedeeims的產品路徑還帶有日期,如果動態的路徑,整站到再/plus/下,感覺特別不爽,今天我就給修改一下。
首先讓我們感覺不爽的就是/plus/list.php?tid=這種路徑作為頻道(欄目,分類頁),感覺特別不爽,我們就先從它下手。打開include\channelunit.func.php,找到//$reurl = $GLOBALS[‘cfg_phpurl’].”/list.php?tid=”.$typeid;,直接修改成$reurl = “/class.php?id=”.$typeid;這樣,所有的分類頁就變成了/class.php?id=…的形式了。在根目錄建立一個class.php,內容如下:

< ?php
	$tid=$_GET['id'];
	require_once('plus/list.php');
?>

很簡單吧,下面修改產品展示頁路徑為product.php,閱讀新聞頁為news.php。

找到include\channelunit.func.php,function GetFileUrl($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,$namerule=”,$typedir=”, $filename=”),假設產品分類為4,10,新聞分類為3,9。直接添加上如下代碼:

< ?php
		if($typeid==4||$typeid==10)
			return '/product.php?product_id='.$aid;
		elseif($typeid==3||$typeid==9)
			return '/news.php?id='.$aid;
		else
			return '/plus/view.php?aid='.$aid;
?>

其他情況就是默認路徑了。當然也可以改成/view.php?aid=…

news.php

<?php
	$aid=$_GET['id'];
	require_once('plus/view.php');
?>

product.php

<?php
	$aid=$_GET['product_id'];
	require_once('plus/view.php');
?>

現在前臺基本就沒有問題了,后臺預覽文件的時候,可能會出現錯誤,修改admin\archives_do.php代碼如下:

	function viewArchives()
	-->>...
	if(strpos($arcurl,'?')==-1)
		echo "$lt;script language='javascript'>location.href='$arcurl"."?".time()."';$lt;/script>";
	else
		echo "$lt;script language='javascript'>location.href='$arcurl"."&tme=".time()."';$lt;/script>";
	exit();

給dedeims添加在線支付的功能之數據庫設置

剛改VPS出問題了,現在剛解決好,原來打算多寫幾篇關于dedeims的文件,無奈現在太晚了,先寫一篇 給dedeims添加在線支付的功能之數據庫設置 ,頁面代碼等改天整理好再發。

--為會員添加余額
ALTER TABLE `dede_member` ADD `money` DOUBLE(11,2) Default 0 NOT NULL AFTER `scores`
ALTER TABLE `dede_member` ADD `moneyto` DOUBLE(11,2) Default 0 NOT NULL AFTER `money`

--添加充值記錄
--paytype 0:在線充值;1:提現;2:積分兌換
DROP TABLE IF EXISTS `dede_paylog`;
CREATE TABLE IF NOT EXISTS `dede_paylog` (
  `id` mediumint(8) NOT NULL auto_increment,
  `mid` mediumint(8) NOT NULL,
  `paytype` smallint(5) NOT NULL,
  `money` DOUBLE(11,2) Default 0 NOT NULL,
  `money_s` DOUBLE(11,2) Default 0 NOT NULL,
  `money_e` DOUBLE(11,2) Default 0 NOT NULL,
  `dateline` int(10) NOT NULL,
  `desc` char(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET='utf8' AUTO_INCREMENT=1000000;

DedeEIMS確實很好用

下面我們來看下DedeEIMS的系統設置部分,我們登錄系統后臺查看[系統設置]-[系統基本參數],我們可以看到系統設置分為以下幾個部分:站點設置、核心設置、附件設置、會員設置、性能選項、其他選項、添加新變量幾個部分的內容。

?說明:
站點設置:站點的常規設置,例如站點名稱、站點的地址以及采用風格等選項;
核心設置:系統安裝目錄,加密設置以及時區和FTP配置等選項;
附件設置:涉及到系統管理員上傳附件的文件格式、文件尺寸等選項設置;
會員設置:關于前臺會員中心及會員注冊相關設置;
性能選項:根據您服務器的配置情況合理的對站點性能進行設置能夠保證網站能夠訪問更快、執行效率更高;
其他選項:過濾及IP限制等設置項目;
添加新變量:二次開發中涉及到的設置項;

織夢的系統參數設置分為2個部分的內容,一個是頁面顯示的部分,另外一個是用于功能設置的,我們在系統模板中可以通過系統全局變量調用的標簽來對一些顯示類型的設置進行調用,例如我們在系統模板中使用{dede:global.cfg_description/}來調用網站后臺設置中的網站描述部分的內容。功能設置部分的內容我們也會在系統設置中詳細說明參數的相關描述。

我們在二次開發中也可以使用這些設置,通過$GLOBALS[‘cfg_templets_dir’]全局變量來調用,非常方便。我們可以通過系統后臺的添加變量來自由擴展全局變量,以便于我們進行系統的二次開發。
?

?站點設置

站點根網址(cfg_basehost):網站根節點網址,例如設置http://www.abc.com,主要用于生成一些超鏈接中加入站點根網址,例如:百度新聞、站點RSS、系統上傳附件等
網頁主頁鏈接(cfg_indexurl):用于前臺模板調用網站主站連接
主頁鏈接名(cfg_indexname):網站主頁的連接名稱,默認為“主頁”
網站名稱(cfg_webname):全局站點的名稱,通常顯示在網頁頁面的標題欄部分,默認為“我的網站”
文檔HTML默認保存路徑(cfg_arcdir):網站生成靜態頁面HTML存放路徑,默認為“/html”,可以根據自己需要進行設置
圖片/上傳文件默認路徑(cfg_medias_dir):網站附件上傳默認保存路徑,默認為“/uploads”,可以根據自己需要進行修改
編輯器(是/否)使用XHTML(cfg_fck_xhtml):控制網站內容編輯器是否啟用XHTML類型的標記,默認是不起用的
模板默認風格(cfg_df_style):默認模板的風格,設置后模板的路徑變為“/tremplets/[設置模板風格]”,默認是default,即“/tremplets/default/”
網站版權、編譯JS等底部調用信息(cfg_powerby):網站底部版權及js調用信息,一般可以將流量統計代碼加入到這里,前臺進行調用
站點默認關鍵字(cfg_keywords):用于顯示站點默認關鍵字,便于SEO,通常顯示在首頁的<meta>中,可以根據自己需求進行修改
站點描述(cfg_description):用于顯示站點默認描述,便于SEO,通常顯示在首頁的<meta>中,可以根據自己需求進行修改
網站備案號(cfg_beian):用于顯示網站備案號的相關內容,可以根據自己需要進行設置

核心設置

DedeCms安裝目錄(cfg_cmspath):系統默認安裝目錄,默認如果安裝在網站根目錄即為空,如果安裝在子目錄需要對其進行設置,例如“cms”,一般移動網站目錄需要對其進行重新設置,并重新生成內容,否則會出現頁面無法顯示、PHP報錯等現象
?cookie加密碼(cfg_cookie_encode):用于對用戶登陸cookie加密設置,默認系統自動生成,通常使用在系統整合等方面
?數據備份目錄(在data目錄內)(cfg_backup_dir):數據庫備份文件夾,通常在系統根目錄的data文件夾下,默認為backupdata,即在系統“\data\backupdata”文件夾下
?網站發信EMAIL(cfg_adminemail):用于站點發信的E-mail地址,默認為“cfg_adminemail”,可以根據自己需要進行修改
?Html編輯器選項(目前僅支持fck)(cfg_adminemail):網站內容發布,字段類型為HTML時候使用的編輯器,例如普通文章發布時候內容部分的編輯器,默認為fck,在V5.3中取消了以前的HTML編輯器,并今后不再進行開發
?欄目位置的間隔符號(cfg_list_symbol):通常顯示在網站當前位置部分的內容,默認為“ > ”即當前位置部分顯示為“主頁 > 一級欄目 > 二級欄目”,可以根據自己需要進行修改
?關鍵字替換(是/否)使用本功能會影響HTML生成速度(cfg_keyword_replace):系統將會替換HTML編輯器中內容部分的關鍵詞為加亮顯示,通常這個選項開啟會影響系統生成HTML頁面的速度,系統默認是開啟的
?(是/否)支持多站點,開啟此項后附件、欄目連接、arclist內容啟用絕對網址(cfg_multi_site):系統附件生成采用地址類型,一般附件生成沒有開啟該選項附件將采用“/uploads/liming/test111.gif”的形式,如果開啟將在附件地址前面加上網站地址,會變為“http://www.adc.com/uploads/liming/test111.gif ”設置有效解決了二級域名附件無法顯示的問題,系統默認是關閉的
?(是/否)開啟管理日志(cfg_dede_log):用于記錄管理員登陸操作系統的日志,默認是關閉的
FTP主機(cfg_ftp_host):部分創建將通過ftp形式進行文件創建,系統默認沒有這個設置,您可以設置FTP的主機地址為ftp.abc.com,下面的FTP相關設置也是如此,如果是虛擬主機需要空間商提供FTP賬號密碼等
?FTP端口(cfg_ftp_port):同FTP主機部分
?FTP用戶名(cfg_ftp_user):同FTP主機部分
?FTP密碼(cfg_ftp_pwd):同FTP主機部分
?網站根在FTP中的目錄(cfg_ftp_root):同FTP主機部分,一般虛擬主機網站根目錄為wwwroot或者htdocs
?是否強制用FTP創建目錄(cfg_ftp_mkdir):如果系統不支持PHP創建目錄,啟用后將采用FTP形式強行創建目錄,系統默認是關閉這個選項的
?服務器時區設置(cfg_cli_time):用于設置系統程序執行的時區影響到全站時間相關功能,如文章添加時間、留言時間等,默認為8
?是否啟用smtp方式發送郵件(cfg_sendmail_bysmtp):采用SMTP發送電子郵件,系統默認是關閉的,改設置將影響到找回密碼、文檔內容推薦等功能,如果開啟需要設置以下SMTP信息,如果啟用還需要保證服務器擁有郵件發送的功能,如果是主機空間可以和空間商取得聯系并且確保SMTP設置正確性才能確保郵件發送
?smtp服務器(cfg_smtp_server):同是否啟用smtp方式發送郵件部分,默認為smtp.xinhuanet.com
?smtp服務器端口(cfg_smtp_port):同是否啟用smtp方式發送郵件部分,默認為25
?SMTP服務器的用戶郵箱(cfg_smtp_usermail):同是否啟用smtp方式發送郵件部分
?SMTP服務器的用戶帳號(cfg_smtp_user):同是否啟用smtp方式發送郵件部分
?SMTP服務器的用戶密碼(cfg_smtp_password):同是否啟用smtp方式發送郵件部分
?刪除文章文件同時刪除相關附件文件(cfg_upload_switch):刪除文檔內容時候如果開啟了這個選項將清除文檔相關附件
?網站全局搜索時間限制(cfg_allsearch_limit):如果在使用高級搜索,查詢時間大于設置時間數,系統將提示“服務器忙