标签归档:dede

更dedeeims添加在线支付系统

因为数据库部分我已经写过一篇文章:给dedeims添加在线支付的功能之数据库设置,本文以该文章的数据库为准来写,如果没看过此文的网友,可以通过http://www.miaoqiyuan.cn/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;