徐州网络公司 徐州网站建设,徐州网络公司,徐州做网站,徐州集团网站建设,徐州品牌网站建设,微信公众号制作,徐州网络公司哪家好,徐州服务最好的网络公司 【徐州网络公司哪家好?】

新闻资讯

当前位置: 首页 » 技术百科

添加在线支付系统 dedeeims

标示: 时间:04-29 作者:普晟智联 来源:本站 点击: 字号:

第一步:给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的会员面板中添加在线支付的链接。很简单,在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,一个简单的表单,这里不再详述,代码如下:
<form class="mTB10 mL10 mR10" name="form2" action="bank.php" method="post" target="_blank"> <table cellspacing="1" class="submit"> <tbody> <tr> <td style="text-align:right;">支付接口:</td> <td> <select name="bank" id="sbank" style="width:160px"> <?php foreach($bank_List as $bankName=>$bankEn){ ?> <option value="<?php echo $bankEn?>"><?php echo $bankName?></option> <?php } ?> </select><span style="color:red;">*</span> </td> </tr> <tr> <td style="text-align:right;">支付金额:</td> <td><input name="money" type="text" id="smoney" size="15" class="text" style="width:150px;" value="<?php echo $pay ?>"/><span style="color:red;">*</span></td> </tr> <tr> <td> </td> <td><button class="button2" type="submit">充值</button><button class="button2 mL10" type="reset">重填</button></td> </tr> </tbody> </table> </form>
现在提交到bank.php。bank.php根据选择的接口自动提交的接口文件,然后返回(这些支付接口有示例文件,直接修改下就可以)。
bank.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="css/index.css" rel="stylesheet" type="text/css"></head>< ?phprequire_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 `hs_member` where mid='".$cfg_ml->M_ID."'");$orderid=date('Ymd',time())."-".$cfg_ml->M_LoginID."-".date('His',time());?><body onLoad="javascript:document.Bank_FORM.submit()">载入中...<form name="Bank_FORM" id="Bank_FORM" action="./bank/<?php echo $bank ?>/Pay.php" method="post"><input name="orderid" value="<?php echo $orderid?>" type="hidden"/><input name="money" value="<?php echo $money?>" type="hidden"/><input name="user" value="<?php echo $cfg_ml->M_LoginID?>" type="hidden"/><input name="uid" value="<?php echo $cfg_ml->M_ID?>" type="hidden"/><input name="moeny" value="<?php echo $money?>" type="hidden"/><input name="email" value="<?php echo $row['email']; ?>" type="hidden"/><input name="uname" value="<?php echo $row['uname']; ?>" type="hidden"/><input name="company" value="<?php echo $row['company']; ?>" type="hidden"/><input name="mobile" value="<?php echo $row['mobile']; ?>" type="hidden"/><input name="tel" value="<?php echo $row['tel']; ?>" type="hidden"/><input name="fax" value="<?php echo $row['fax']; ?>" type="hidden"/><input name="address" value="<?php echo $row['address']; ?>" type="hidden"/></form></body></html>
返回的时候为了统一,我们写一个通用的函数,用于为用户充值,并记录到日志:
< ?phpfunction payok($money,$logkey,$logdesc,$uid=1,$dsql){ if(!$dsql->GetOne("select `id` from `hs_paylog` where `mid`='".$uid."' and `desc` like '%".$logkey."%'")){ $res=$dsql->GetOne("select `money` from `hs_member` where `mid`='".$uid."'"); $oldMoney=$res['money']; $query="insert into `hs_paylog`(`mid`,`paytype`,`money`,`money_s`,`money_e`,`desc`,`dateline`)values('$uid','0','$money','".$oldMoney."','".($oldMoney+$money)."','$logdesc','".time()."')"; $dsql->ExecuteNoneQuery($query); $query="update `hs_member` set `money`=`money`+'".$money."' where `mid`='".$uid."'"; $dsql->ExecuteNoneQuery($query); ShowMsg('充值成功!', './../../pay_log.php?type=pay',0,1500); }else{ ShowMsg('<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); //支付成功,可进行逻辑处理! //商户系统的逻辑处理(例如判断金额,判断支付状态,更新订单状态等等)...... }}
文章来自与徐州网络公司官网,徐州网站建设公司,徐州网络公司哪家好,徐州网站无障碍建设,徐州集团网站建设公司 TAG: