public function save() {
if ( !is_login() ) {
$this->error( "您还没有登陆",U("User/login") );
}
$order=D("order");
//获取支付订单号
$tag=I('post.tag');
$tag=safe_replace($tag);//过滤
$data['tag']=$tag;//支付订单号
//防止重复提交
if(M("order")->where("tag='$tag'")->find()){
M("order")->where("tag='$tag'")->delete();
}
//获取发货仓
$place=I('post.place');
$data['place']=safe_replace($place);//过滤
//获取会员uid
$uid=is_login();
$data['uid']=$uid;
//验证价格并清空购物车
$list=M("shoplist")->where("tag='$tag'")->select();
//遍历
foreach($list as $k=>$val){
//获取购物清单数据表产品id,字段goodid
$id=$val["goodid"];
//提交的价格
$goodprice=$val["price"];
$Document = D('Document');
$info= $Document->detail($id);
//系统价格
if($info['groupprice']){
$string=$info['groupprice'].'、'.$info['price'];
$array= explode('、',$string);
//验证,多个价格
if (!in_array($goodprice,$array)) {
$this->error('商品价格与系统不符,商品id'.$val["goodid"].'商品价格'.$safeprice.'系统价格'.$string);
}
}
//验证,普通价格
else if($goodprice!==$info['price']){
$this->error('商品价格与系统不符,商品id'.$val["goodid"].'商品价格'.$safeprice.'系统价格'.$safe['price']);
}
else{
#your code
addUserLog('价格正确', $uid) ;//日志
}
//删除购物车中产品id
M("shopcart")->where("goodid='$id'and uid='$uid'")->delete();
}
//订单号
$data['orderid']=date('Ym',time()).time().$uid;//订单号
//计算商品总额
$total=$this->getPricetotal($tag);
$data['total']=$total;
//计算运费
if ($total<C('LOWWEST')){
$trans=C('SHIPMONEY');
}else{
$trans=0;
}
$data['ship_price']=$trans;//运费
//计算积分
if(I('post.score')){
$uid=is_login();
$score=get_score($uid); // 用intval过滤$_POST["score"];
//读取配置,1000积分兑换1元
$ratio= $score/C('RATIO');
M("member")->where("uid='$uid'")->setField('score',0);
}else{
$ratio=0;
}
/*积分明细记录*/
$content='购物-'.$data['orderid'];
$result=addScoreLog($uid,$content,$score,2);
$data['score']=$score;
$data['score_money']=$ratio;
$title='消耗积分'.$score.'抵消金额'.$ratio;
addUserLog($title, $uid) ;//日志
//计算优惠券
$ucpid=I('post.ucpid',0,'intval');
if($ucpid){
$info=M("UserCoupon")->where("id='$ucpid' and status='1' and uid='$uid'")->find();
}
//判断优惠券是否可用
$xfee=$total+$trans-$ratio;
//计算优惠券可使用的金额,home/common/function
if($ucpid&&$info['lowpayment']<$xfee){
if(!is_numeric($ucpid)){
$this->error('ID错误!');
}
$decfee=$info['price'];
$data['coupon']=$info['code'];//优惠券代码
$data['coupon_money']=$decfee;//优惠券金额
M("UserCoupon")->where("id='$ucpid' and uid='$uid'")->setField('status',2);//设置优惠券已用
}
//计算使用地址id
$addressid=I('post.addressid');
$addressid=safe_replace($addressid);//过滤
$data['addressid']=$addressid;
//计算应付金额
$all=$total+$trans-$ratio-$decfee;
// //满3999减100,满4999减200
// if($all>3998&&$all<4999){
// $total_money=$all-100;
// addUserLog('满3999减100', $uid) ;//日志
// }
// else if($all>4998){
// $total_money=$all-200;
// addUserLog('满4999减200', $uid) ;//日志
// }
// else{
// $total_money=$all;
// }
$data['total_money']=$all;//应付金额
//创建时间
$data['create_time']=NOW_TIME;
//支付类型PayType,1-货到付款
if($_POST["PayType"]=="1"){
//创建订单
$data['status']=1;
$data['ispay']=-1;//货到付款
$orderid=$order->add($data);
M("shoplist")->where("tag='$tag'")->setField('orderid',$orderid);
//保存货到付款支付数据
$pay=M("pay");
$pay->create();
$pay->money=$all;
$pay->ratio=$ratio;
$pay->total=$total;
$pay->out_trade_no=$tag;
$pay->yunfee=$trans;
$pay->coupon=$decfee;
$pay->uid=$uid;
$pay->addressid=$senderid;
$pay->create_time=NOW_TIME;
$pay->type=2;//货到付款
$pay->status=2;
$pay->add();
//发送邮件
$mail=get_email($uid);//获取会员邮箱
$title="交易提醒";
$content="您在<a href=\"".C('DAMAIN')."\" target='_blank'>".C('SITENAME').'</a>提交了订单,订单号'.$tag;
if ( C('MAIL_PASSWORD')){
SendMail($mail,$title,$content);
}
//输出支付订单号和支付金额
$info['total_money']=$all;
$info['orderid']=$data['orderid'];
$this->assign('info',$info);
//保存日志
addUserLog('货到付款订单已提交', $uid) ;
$this->meta_title = '提交成功';
$this->display('Pay/success');
}
//支付类型PayType,2-在线支付
if($_POST["PayType"]=="2") {
//创建订单
$data['ispay']="1";
$data['status']="-1";//待支付
//根据订单id保存对应的费用数据
$orderid=$order->add($data);
M("shoplist")->where("tag='$tag'")->setField('orderid',$orderid);
//发起支付时thinkpay会自动创建
// $pay=M("pay");
// $pay->create();
// $pay->money=$all;
// $pay->ratio=$ratio;
// $pay->total=$total;
// $pay->out_trade_no=$tag;
// $pay->yunfee=$trans;
// $pay->coupon=$deccode;
// $pay->uid=$uid;
// $pay->addressid=$senderid;
// $pay->create_time=NOW_TIME;
// $pay->type=1;//在线支付
// $pay->status=-1;//待支付
// $pay->add();
//记录日志
addUserLog('在线支付订单已提交', $uid) ;
/* 创建财付通支付链接*/
$reqUrl=create_tencent_url($tag,$all);
$this->assign('reqUrl',$reqUrl);
$this->meta_title = '订单支付';
$info['total_money']=$all;
$info['orderid']= $data['orderid'];
//输出支付订单号和支付金额
$this->assign('info',$info);
$this->assign('goodprice',$all);
//支付页
$this->display('Pay/index');
}
} 最佳答案