標簽歸檔:dede

更dedeeims添加在線支付系統

因為數據庫部分我已經寫過一篇文章:給dedeims添加在線支付的功能之數據庫設置,本文以該文章的數據庫為準來寫,如果沒看過此文的網友,可以通過http://www.shiekolong331.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;