1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144 |
- <?php
- /**
- * 小梦科技资源nanodreamtech.com
- *
- * ==========================================================================
- * @link https://www.nanodreamtech.com/
- * @copyright Copyright (c) 2015 liofis.com.
- * @license https://www.nanodreamtech.com/license.html License
- * ==========================================================================
- *
- * @author fish
- *
- */
- namespace Home\Controller;
- class PaymentController extends CommonController {
-
- protected function _initialize()
- {
- parent::_initialize();
- }
-
- //会员中心页面,去付款
- function confirm_pay(){
- if(I('token')!=md5(session('pay_token'))){
- $url=U('/checkout');
- @header("Location: ".$url);
- die();
- }
- $order=M('order')->where(array('order_id'=>get_url_id('id')))->find();
-
- $data['notify_url']=C('SITE_URL').U('Payment/alipay_notify');
- $data['return_url']=C('SITE_URL').U('Payment/alipay_return');
- $data['order_type']='goods_buy';
- $data['subject']='购买商品';
- $data['name']=$order['shipping_name'];
- $data['pay_order_no']=$order['order_num_alias'];
- $data['pay_total']=(float)$order['total'];
-
- storage_user_action(session('user_auth.uid'),session('user_auth.username'),C('FRONTEND_USER'),'点击了去支付订单 '.$order['order_num_alias']);
-
- $url=$this->pay_api($order['payment_code'], $data);
-
- @header("Location: ".$url);
-
- die();
- }
-
- /**
- 接受快递鸟通知
- **/
- function kuaidiniao()
- {
-
- echo json_encode(array('Success'=>true));
-
- $request_data = I('post.RequestData');
-
- $request_data = htmlspecialchars_decode($request_data);
- $request_data_arr = json_decode($request_data,true);
-
- foreach($request_data_arr['Data'] as $data)
- {
- $LogisticCode = $data['LogisticCode'];
- $trace = serialize($data['Traces']);
- M('order')->where( array('shipping_no' => $LogisticCode) )->save( array('shipping_traces' => $trace) );
- }
-
-
- }
-
- /**
- * 提交订单支付
- * @param unknown $order_id
- */
-
- function order_pay()
- {
- $order_id = I('get.order_id',0);
- if($order_id > 0)
- {
- $order = M('order')->where( array('order_id' => $order_id) )->find();
-
-
- if($order['order_status_id'] == 3)
- {
- if($order['total'] <= 0)
- {
- $this->yuer_payreturn($order['order_num_alias']);
- } else {
- $order['payment_code'] = empty($order['payment_code']) ? 'wxpay': $order['payment_code'];
-
- //单独支付一个店铺的订单
- M('order_relate')->where( array('order_id' => $order_id) )->delete();
-
- $order_all_data = array();
- $order_all_data['member_id'] = session('user_auth.uid');
- $order_all_data['order_num_alias'] = build_order_no(session('user_auth.uid'));;
- $order_all_data['transaction_id'] = '';
- $order_all_data['order_status_id'] = 3;
- $order_all_data['is_pin'] = $order['is_pin'];
- $order_all_data['paytime'] = 0;
- $order_all_data['total_money'] = $order['total'];
- $order_all_data['addtime'] = time();
-
- $order_all_id = M('order_all')->add($order_all_data);
-
- $order_relate_data = array();
- $order_relate_data['order_all_id'] = $order_all_id;
- $order_relate_data['order_id'] = $order_id;
- $order_relate_data['addtime'] = time();
- M('order_relate')->add($order_relate_data);
-
-
- $wxpay_url = C('SITE_URL')."index.php?s=/Payment/wxpay_order/pay_order_no/{$order_all_data[order_num_alias]}";
- header('Location: '.$wxpay_url);
- die();
- }
-
- }
- }
- }
-
-
- /**
- * $pay_type 购买商品,还是预存款
- * $order 订单信息
- */
- function pay_api($payment_method,$order_all_id){
-
- $order_all = M('order_all')->where( array('id' => $order_all_id) )->find();
-
- if($payment_method=='alipay'){
-
- $alipay= new \Lib\Payment\Alipay(get_payment_config('alipay'),$order_all);
- return $alipay->get_payurl();
- }
- //wxpay
- if($payment_method == 'wxpay')
- {
- $wxpay_url = C('SITE_URL')."index.php?s=/Payment/wxpay_order/pay_order_no/{$order_all[order_num_alias]}";
- echo json_encode( array('code' =>1 ,'url' => $wxpay_url) );
- die();
- //header('Location: '.$wxpay_url);
- //$this->redirect( 'Payment/wxpay_order',array('pay_order_no' => $order['order_num_alias']) );
- }
- }
-
- //微信支付通知
- function weixin_notify()
- {
- $lib_path = dirname(dirname( dirname(__FILE__) )).'/Lib/';
- $data_path = dirname( dirname(dirname( dirname(__FILE__) )) ).'/Data/wxpaylogs/'.date('Y-m-d')."/";
-
- require_once $lib_path."/Weixin/PayNotifyCallBack.class.php";
-
- $notify = new \PayNotifyCallBack();
- $notify->Handle(false);
-
- }
-
- //开始微信支付订单
- function wxpay_order()
- {
- $lib_path = dirname(dirname( dirname(__FILE__) )).'/Lib/';
- $data_path = dirname( dirname(dirname( dirname(__FILE__) )) ).'/Data/wxpaylogs/'.date('Y-m-d')."/";
-
- RecursiveMkdir($data_path);
-
- require_once $lib_path."/Weixin/JsApiPay.class.php";
-
-
- $pay_order_no = I('get.pay_order_no',0);
-
- $order = M('order_all')->where(array('order_num_alias'=>$pay_order_no, 'member_id' => is_login() ))->find();
-
- if(empty($order)) {
- $this->redirect( U('Index/index') );
- }
-
- //初始化日志
- $logHandler= new \CLogFileHandler( $data_path .date('Y-m-d').'.log');
-
- $log = \Log::Init($logHandler, 15);
-
- $member_info = M('member')->where( array('member_id' => $order['member_id']) )->find();
-
- //①、获取用户openid
- $tools = new \JsApiPay();
- //$order['total'] = 0.01;
- //②、统一下单
- $input = new \WxPayUnifiedOrder();
- $input->SetBody(mb_substr('商品购买', 0, 30, 'utf-8'));
- $input->SetAttach(mb_substr('商品购买', 0, 30, 'utf-8'));
- $input->SetOut_trade_no($order['id'].'-'.time());
- $input->SetTotal_fee( ( $order['total_money'] *100) );
- $input->SetTime_start(date("YmdHis"));
- $input->SetTime_expire(date("YmdHis", time() + 600));
- $input->SetGoods_tag("");
-
- $notify_url = C('SITE_URL').'notify.php';
-
- $input->SetNotify_url($notify_url);
-
- $input->SetTrade_type("JSAPI");
- $input->SetOpenid($member_info['openid']);
-
-
- $order_str = \WxPayApi::unifiedOrder($input);
-
- $jsApiParameters = $tools->GetJsApiParameters($order_str);
- //var_dump($jsApiParameters);die();
- //获取共享收货地址js函数参数
- $editAddress = $tools->GetEditAddressParameters();
-
- $hashids = new \Lib\Hashids(C('PWD_KEY'), C('URL_ID'));
- //$order_id = $hashids->encode($order['id']);
-
- if($order['is_pin'] == 1)
- {
- $order_relate = M('order_relate')->where( array('order_all_id' => $order['id']) )->find();
- $order_id = $hashids->encode($order_relate['order_id']);
-
- $refurl = C('SITE_URL')."index.php?s=/Group/info/group_order_id/{$order_id}/is_show/1";
- } else {
- $refurl = C('SITE_URL')."index.php?s=/order/order_all_info/id/{$order[id]}";
- }
- $backurl = C('SITE_URL')."index.php?s=/order/order_all_info/id/{$order[id]}";
-
- $this->order_id = $order['id'];
-
-
- $this->refurl = $refurl;
- $this->backurl = $backurl;
- $this->jsApiParameters = $jsApiParameters;
- $this->editAddress = $editAddress;
-
- $this->display();
-
- }
-
- //写入订单
- function pay(){
- $json=array();
-
- //pickup express
- $pay_method = I('post.pay_method');//支付类型
- $order_msg_str = I('post.order_msg_str');//商品订单留言
- $quan_arr = I('post.quan_arr');//使用优惠券
-
- //express_method:express_method,pick_mobile:pick_mobile,pick_id:pick_id,pick_name:pick_name
- $pick_up_id = I('post.pick_id');//$data_s['pick_up_id'];
- $dispatching = I('post.dispatching');//$data_s['dispatching'];
- $ziti_name = I('post.pick_name');//$data_s['ziti_name'];
- $ziti_mobile = I('post.pick_mobile');//$data_s['ziti_mobile'];
-
- $order_msg_arr = explode('@,@', $order_msg_str);
-
- $msg_arr = array();
- foreach($order_msg_arr as $val)
- {
- $tmp_val = explode('@_@', $val);
- $msg_arr[ $tmp_val[0] ] = $tmp_val[1];
- }
-
- $member_id = session('user_auth.uid');
- $order_quan_arr = array();
-
- if( !empty($quan_arr) )
- {
- foreach($quan_arr as $q_val)
- {
- $tmp_q = array();
- $tmp_q = explode('_',$q_val);
-
- $voucher_info = M('voucher_list')->where( array('id' =>$tmp_q[1],
- 'store_id' =>$tmp_q[0], 'user_id' => session('user_auth.uid'),'consume' =>'N','end_time' => array('gt',time() ) ) )->find();
-
- if( !empty($voucher_info) )
- {
- $order_quan_arr[$tmp_q[0]] = $tmp_q[1];
- }
- }
-
- }
-
-
-
- $cart=new \Lib\Cart();
-
- // 验证商品数量
-
- $buy_type = I('post.buy_type');
-
- $is_pin = 0;
- if($buy_type == 'pin')
- {
- $is_pin = 1;
- }
- $goodss = $cart->get_all_goods($buy_type,1);
-
- $seller_goodss = array();
- $del_integral = 0;
-
- foreach($goodss as $key => $val)
- {
- if($buy_type == 'dan')
- {
- $new_key = 'cart.'.$key;
- $s = session($new_key);
-
-
- if( isset($s['can_del']) && $s['can_del'] == 1)
- {
- $cart->remove($key);
- }else if(isset($s['old_quantity'])){
-
- $s['quantity'] = $s['old_quantity'];
-
- session($new_key,$s);
- }
- }
- $goods_store_field = M('goods')->field('store_id')->where( array('goods_id' => $val['goods_id']) )->find();
- $seller_goodss[ $goods_store_field['store_id'] ][$key] = $val;
- }
-
-
- //付款人
- $payment=M('Member')->find(session('user_auth.uid'));
-
- //收货人
- $add_where = array('member_id'=>session('user_auth.uid'));
- $address = M('address')->where( $add_where )->order('is_default desc,address_id desc')->find();
-
- $pay_total = 0;
- //M('order_all')
- $order_all_data = array();
- $order_all_data['member_id'] = session('user_auth.uid');
- $order_all_data['order_num_alias'] = build_order_no(session('user_auth.uid'));;
- $order_all_data['transaction_id'] = '';
- $order_all_data['order_status_id'] = 3;
- $order_all_data['is_pin'] = $is_pin;
- $order_all_data['paytime'] = 0;
-
- $order_all_data['addtime'] = time();
-
- $order_all_id = M('order_all')->add($order_all_data);
-
-
- $integral_model = D('Seller/Integral');
-
- foreach($seller_goodss as $kk => $vv)
- {
- $data = array();
-
- $data['member_id']=session('user_auth.uid');
- $data['name']=session('user_auth.username');
-
- $data['telephone']=$address['telephone'];
-
- $data['shipping_name']=$address['name'];
- $data['shipping_address']=$address['address'];
- $data['shipping_tel']=$address['telephone'];
-
- $data['shipping_province_id']=$address['province_id'];
- $data['shipping_city_id']=$address['city_id'];
- $data['shipping_country_id']=$address['country_id'];
-
- $data['shipping_method'] = 0;
-
- $data['delivery']=$dispatching;
- $data['pick_up_id']=$pick_up_id;
- $data['ziti_name']=$ziti_name;
- $data['ziti_mobile']=$ziti_mobile;
-
-
- $data['payment_method']=$pay_method;
-
- $data['address_id']= $address['address_id'];
- //quan_arr
- $data['voucher_id'] = isset($order_quan_arr[$kk]) ? $order_quan_arr[$kk]:0;
-
- $data['user_agent']=$_SERVER['HTTP_USER_AGENT'];
- $data['date_added']=time();
-
- $hashids = new \Lib\Hashids(C('PWD_KEY'), C('URL_ID'));
- $subject='';
- $fare = 0;
-
- $goodss = $vv;
- $trans_free_toal = 0;//运费
- $goods_data = array();
- $order_total = 0;
- $is_lottery = 0;
- $is_integral = 0;
-
- foreach($goodss as $key => $good)
- {
- if($good['shipping']==1)
- {
- //统一运费
- $trans_free_toal += $good['goods_freight'];
- $trans_free = $good['goods_freight'];
- }else {
- //运费模板
- $trans_free = D('Home/Transport')->calc_transport($good['transport_id'], $good['quantity']*$good['weight'], $address['city_id'] );
- $trans_free_toal +=$trans_free;
- }
- $goods_info = explode(':', $key);
- $goods_id = $goods_info[0];
-
-
- if (!empty($goods_info[1])) {
- $options = base64_decode($goods_info[1]);
- } else {
- $options = '';
- }
- $order_total += $good['total'];
- $tp_goods_info = M('goods')->field('store_id,type')->where( array('goods_id' =>$good['goods_id'] ) )->find();
-
- if($tp_goods_info['type'] == 'lottery')
- {
- $is_lottery = 1;
- }
-
- if($tp_goods_info['type'] == 'integral')
- {
- $is_integral = 1;
- $is_pin = 0;
- $check_result = $integral_model->check_user_score_can_pay($member_id, $good['sku_str'], $good['goods_id'] );
- if($check_result['code'] == 1)
- {
- die();
- }
- }
-
- $goods_data[] = array(
- 'goods_id' => $good['goods_id'],
- 'store_id' => $tp_goods_info['store_id'],
- 'name' => $good['name'],
- 'model' => $good['model'],
- 'is_pin' => $is_pin,
- 'pin_id' => $good['pin_id'],
- 'header_disc' => $good['header_disc'],
- 'option' => $options,
- 'quantity' => $good['quantity'],
- 'shipping_fare' => $trans_free,
- 'price' => $good['price'],
- 'total' => $good['total'],
- 'comment' => htmlspecialchars($msg_arr[$key])
- );
- }
- $data['type'] = 'normal';
- if($is_pin == 1)
- {
- $data['type'] = 'pintuan';
- if($is_lottery == 1)
- {
- $data['type'] = 'lottery';
- }
- }
- if($is_integral == 1)
- {
- $data['type'] = 'integral';
- $is_pin = 0;
- }
-
- $data['shipping_fare'] = floatval($trans_free_toal);
-
- $data['store_id']= $kk;
-
- // $tp_goods_info['store_id'],
-
-
-
-
- $data['goodss'] = $goods_data;
- $data['order_num_alias']=build_order_no($kk);
-
- $data['totals'][0]=array(
- 'code'=>'sub_total',
- 'title'=>'商品价格',
- 'text'=>'¥'.$order_total,
- 'value'=>$order_total
- );
- $data['totals'][1]=array(
- 'code'=>'shipping',
- 'title'=>'运费',
- 'text'=>'¥'.$trans_free_toal,
- 'value'=>$trans_free_toal
- );
-
- $data['totals'][2]=array(
- 'code'=>'total',
- 'title'=>'总价',
- 'text'=>'¥'.($order_total+$trans_free_toal),
- 'value'=>($order_total+$trans_free_toal)
- );
-
-
- if($data['voucher_id'] > 0) {
- $voucher_info = M('voucher_list')->where( array('id' => $data['voucher_id']) )->find();
- $data['voucher_credit'] = $voucher_info['credit'];
- M('voucher_list')->where( array('id' => $data['voucher_id']) )->save( array('consume' => 'Y') );
- } else {
- $data['voucher_credit'] = 0;
- }
-
- $data['total']=($order_total+$trans_free_toal- $data['voucher_credit'] );
- //积分商城
- if($data['type'] == 'integral')
- {
- $del_integral += $order_total;//扣除积分
- $data['total'] = 0;
- $order_total = 0;
- }
- $oid=D('Order')->addOrder($data);
-
- if($data['delivery'] == 'pickup')
- {
- $verify_bool = true;
- $verifycode = 0;
- while($verify_bool)
- {
- $code = (ceil(time()/100)+rand(10000000,40000000)).rand(1000,9999);
- $verifycode = $code ? $code : rand(100000,999999);
- $verifycode = str_replace('1989','9819',$verifycode);
- $verifycode = str_replace('1259','9521',$verifycode);
- $verifycode = str_replace('12590','95210',$verifycode);
- $verifycode = str_replace('10086','68001',$verifycode);
-
- $pick_order = M('pick_order')->where( array('pick_sn' => $verifycode) )->find();
- if(empty($pick_order))
- {
- $verify_bool = false;
- }
- }
- $pick_data = array();
- $pick_data['pick_sn'] = $verifycode;
- $pick_data['pick_id'] = $pick_up_id;
- $pick_data['order_id'] = $oid;
- $pick_data['state'] = 0;
-
- $pick_data['ziti_name'] = $ziti_name;
- $pick_data['ziti_mobile'] = $ziti_mobile;
-
-
- $pick_data['addtime'] = time();
- M('pick_order')->add($pick_data);
- }
- $pay_total = $pay_total + $order_total+$trans_free_toal- $data['voucher_credit'];
-
-
- $order_relate_data = array();
- $order_relate_data['order_all_id'] = $order_all_id;
- $order_relate_data['order_id'] = $oid;
- $order_relate_data['addtime'] = time();
-
- M('order_relate')->add($order_relate_data);
- }
- M('order_all')->where( array('id' => $order_all_id) )->save( array('total_money' => $pay_total) );
-
-
-
- if($order_all_id){
- //session('cart_total',null);
- $order['notify_url']=C('SITE_URL').U('Payment/alipay_notify');
- $order['return_url']=C('SITE_URL').U('Payment/alipay_return');
- $order['order_type']='goods_buy';
- $order['subject']=$subject;
- $order['name']=session('shipping_name');
- $order['order_num_alias']=$data['order_num_alias'];
- $order['pay_total']=($order_total+$trans_free_toal);
- //free_tuan
-
- //session('back_cart_address_id',null);
- //session('cart',null);
- //session('total',null);
- //session('shipping_address_id',null);
- //session('back_order_id',$oid);
-
- if($data['total']<=0 )
- {
- //检测是否需要扣除积分
- //var_dump($del_integral,$is_integral );die();
- if($del_integral> 0 && $is_integral == 1)
- {
- //
- $integral_model->charge_member_score( $member_id, $del_integral,'out', 'orderbuy', $oid);
- }
- $this->yuer_payreturn($oid); //测试使用
- }else {
- $url=$this->pay_api('wxpay', $order_all_id);
- }
-
- die();
- }else{
-
- echo 9999;die();
- $url=U('/checkout');
- @header("Location: ".$url);
-
- die();
- }
-
-
-
- }
- //写入订单
- function pay2(){
- $json=array();
- if(I('token')!=md5(session('token'))){
- $url=U('/checkout');
- @header("Location: ".$url);
- die();
- }
- $cart=new \Lib\Cart();
-
- // 验证商品数量
- $goodss = $cart->get_all_goods();
-
- //付款人
- $payment=M('Member')->find(session('user_auth.uid'));
-
- //收货人
- $shipping=M('Address')->find(session('shipping_address_id'));
-
- $data['member_id']=session('user_auth.uid');
- $data['name']=session('user_auth.username');
-
- $data['telephone']=$payment['telephone'];
-
- $data['shipping_name']=$shipping['name'];
- $data['shipping_address']=$shipping['address'];
- $data['shipping_tel']=$shipping['telephone'];
-
- $data['shipping_province_id']=$shipping['province_id'];
- $data['shipping_city_id']=$shipping['city_id'];
- $data['shipping_country_id']=$shipping['country_id'];
-
- $data['shipping_method'] = session('express_id');
- $data['delivery']=session('shipping_method');
-
-
- $data['payment_method']=session('payment_method');
-
- $data['address_id']=session('shipping_address_id');
-
- $data['voucher_id']=session('payment_voucher_id');
- //payment_voucher_id
- $data['user_agent']=$_SERVER['HTTP_USER_AGENT'];
- $data['date_added']=time();
- $data['comment']=session('remark');
- $hashids = new \Lib\Hashids(C('PWD_KEY'), C('URL_ID'));
- $subject='';
- $fare = 0;
- if($goodss){
-
- /**
- $sm=D('Transport')->calc_transport(session('shipping_method'),
- session('quantity'),
- $shipping['city_id']
- );
- **/
-
- $sm = D('Transport')->calc_transport(null,
- session('quantity'),
- $shipping['city_id']
- );
-
- $t=0;
- foreach ($goodss as $goods) {
-
- $option_data = array();
-
- foreach ($goods['option'] as $option) {
-
- $value = $option['value'];
-
- $option_data[] = array(
- 'goods_option_id' => $option['goods_option_id'],
- 'goods_option_value_id' => $option['goods_option_value_id'],
- 'option_id' => $option['option_id'],
- 'option_value_id' => $option['option_value_id'],
- 'name' => $option['name'],
- 'value' => $value,
- 'type' => $option['type']
- );
- }
-
- $tp_goods_info = M('goods')->field('store_id,express_list')->where( array('goods_id' =>$hashids->decode($goods['goods_id'])) )->find();
-
- $express_list_arr = unserialize($tp_goods_info['express_list']);
-
- if($data['delivery'] == 'express')
- {
- $fare = isset($express_list_arr[$data['shipping_method']]) ? $express_list_arr[$data['shipping_method']]['price'] : 0;
- }
-
- $t+=$goods['total'];
-
- $goods['total'] = $goods['total'];
-
- $goods_data[] = array(
- 'goods_id' => $goods['goods_id'],
- 'name' => $goods['name'],
- 'is_header_disc' => $goods['is_header_disc'],
- 'store_id' => $tp_goods_info['store_id'],
- 'model' => $goods['model'],
- 'option' => $option_data,
- 'quantity' => $goods['quantity'],
- 'pin_type' => $goods['pin_type'],
- 'pin_id' => $goods['pin_id'],
- 'price' => $goods['price'],
- 'total' => $goods['total']
- );
-
- $subject.=$goods['name'].' ';
-
- }
-
- if($data['voucher_id'] > 0) {
- $voucher_info = M('voucher_list')->where( array('id' => $data['voucher_id']) )->find();
- $data['voucher_credit'] = $voucher_info['credit'];
- M('voucher_list')->where( array('id' => $data['voucher_id']) )->save( array('consume' => 'Y') );
- } else {
- $data['voucher_credit'] = 0;
- }
-
- $data['shipping_fare'] = floatval($fare);
-
- $data['total']=($t+$fare - $data['voucher_credit']);
- $data['goodss'] = $goods_data;
- $data['order_num_alias']=build_order_no($data['member_id']);
-
- $data['totals'][0]=array(
- 'code'=>'sub_total',
- 'title'=>'商品价格',
- 'text'=>'¥'.$t,
- 'value'=>$t
- );
- $data['totals'][1]=array(
- 'code'=>'shipping',
- 'title'=>'运费',
- 'text'=>'¥'.$fare,
- 'value'=>$fare
- );
- $data['totals'][2]=array(
- 'code'=>'voucher',
- 'title'=>'优惠券',
- 'text'=>'¥'.$data['voucher_credit'],
- 'value'=>$data['voucher_credit']
- );
- $data['totals'][3]=array(
- 'code'=>'total',
- 'title'=>'总价',
- 'text'=>'¥'.($t+$fare- $data['voucher_credit']),
- 'value'=>($t+$fare- $data['voucher_credit'])
- );
-
-
- $oid=D('Order')->addOrder($data);
-
- //delivery pickup pick_up_id
- if($data['delivery'] == 'pickup')
- {
- $verify_bool = true;
- $verifycode = 0;
- while($verify_bool)
- {
- $code = (ceil(time()/100)+rand(10000000,40000000)).rand(1000,9999);
- $verifycode = $code ? $code : rand(100000,999999);
- $verifycode = str_replace('1989','9819',$verifycode);
- $verifycode = str_replace('1259','9521',$verifycode);
- $verifycode = str_replace('12590','95210',$verifycode);
- $verifycode = str_replace('10086','68001',$verifycode);
-
- $pick_order = M('pick_order')->where( array('pick_sn' => $verifycode) )->find();
- if(empty($pick_order))
- {
- $verify_bool = false;
- }
- }
- $pick_data = array();
- $pick_data['pick_sn'] = $verifycode;
- $pick_data['pick_id'] = session('pick_up_id');
- $pick_data['order_id'] = $oid;
- $pick_data['state'] = 0;
- $pick_data['addtime'] = time();
- M('pick_order')->add($pick_data);
- }
- if($oid){
- session('cart_total',null);
- $order['notify_url']=C('SITE_URL').U('Payment/alipay_notify');
- $order['return_url']=C('SITE_URL').U('Payment/alipay_return');
- $order['order_type']='goods_buy';
- $order['subject']=$subject;
- $order['name']=session('shipping_name');
- $order['order_num_alias']=$data['order_num_alias'];
- $order['pay_total']=($t+$sm['price']);
- //free_tuan
- $order_goods_info = M('order_goods')->where( array('order_id' => $oid) )->find();
-
- session('back_cart_address_id',null);
- session('cart',null);
- session('total',null);
- session('shipping_address_id',null);
- session('back_order_id',$oid);
-
- if($data['total']<=0 || $order_goods_info['free_tuan'] ==1)
- {
- $this->yuer_payreturn($data['order_num_alias']); //测试使用
- }else {
- $url=$this->pay_api('wxpay', $order);
- }
-
- die();
- }else{
-
- echo 9999;die();
- $url=U('/checkout');
- @header("Location: ".$url);
-
- die();
- }
-
- }
-
- }
- public function success()
- {
- $order_id = I('get.order_id');
- //removeAll
- $cart=new \Lib\Cart();
- $cart->removeAll();
- session('total',null);
-
- $pin_order = M('pin_order')->field('pin_id')->where( array('order_id' =>$order_id) )->find();
-
- //Order/info/id/14
-
- $redir_url = U('Order/info', array('id' => $order_id));
- if(!empty($pin_order))
- {
- $hashids = new \Lib\Hashids(C('PWD_KEY'), C('URL_ID'));
- $group_order_id = $hashids->encode($order_id);
-
- $redir_url = U('Group/info', array('group_order_id' => $group_order_id,'is_show' =>1));
- redirect($redir_url,0);
- }
- $this->redir_url = $redir_url;
-
- $this->order_id = $order_id;
- $this->display();
- }
-
- function de_bug($content){
- $file = ROOT_PATH."/Tmp/wxpay_debug.php";
- file_put_contents($file,$content);
- }
- //数据以post方式返回
- function alipay_notify(){
-
- $alipay= new \Lib\Payment\Alipay(get_payment_config('alipay'));
-
- $verify_result = $alipay->verifyNotify();
-
- if($verify_result) {
-
- //$this->de_bug('success');
-
- //商户订单号
- //$out_trade_no = $_POST['out_trade_no'];
- //支付宝交易号
- //$trade_no = $_POST['trade_no'];
- //交易状态
- //$trade_status = $_POST['trade_status'];
-
- if($_POST['trade_status'] == 'TRADE_FINISHED') {
- //$this->de_bug('TRADE_FINISHED');
-
- }
- else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
- //$this->de_bug('TRADE_SUCCESS');
-
- $order=M('Order')->getByOrderNumAlias($_POST['out_trade_no']);
-
- if($order&&($order['order_status_id']!=C('paid_order_status_id'))){
- //支付完成
- $o['order_id']=$order['order_id'];
- $o['order_status_id']=C('paid_order_status_id');
- $o['date_modified']=time();
- $o['pay_time']=time();
- M('Order')->save($o);
-
- $oh['order_id']=$order['order_id'];
- $oh['order_status_id']=C('paid_order_status_id');
-
- $oh['comment']='买家已付款';
- $oh['date_added']=time();
- $oh['notify']=1;
- M('OrderHistory')->add($oh);
-
- $model=new \Admin\Model\OrderModel();
- $this->order=$model->order_info($order['order_id']);
- $html=$this->fetch('Mail:order');
- think_send_mail($order['email'],$order['name'],'下单成功-'.C('SITE_NAME'),$html);
-
- storage_user_action(session('user_auth.uid'),session('user_auth.username'),C('FRONTEND_USER'),'支付了订单 '.$order['order_num_alias']);
-
- //@header("Location: ".U('/pay_success'));
-
- }
-
-
- echo "success";
- }
-
-
-
- }else{
- //$this->de_bug('fail');
- echo "fail";
- }
-
- }
-
- private function yuer_payreturn($order_id){
- // $order=M('Order')->getByOrderNumAlias($out_trade_no);
- $order=M('Order')->where( array('order_id' => $order_id) )->find();
- $out_trade_no = $order['order_num_alias'];
-
- if($order['order_status_id']==C('paid_order_status_id')){
- @header("Location: ".U('/pay_success'));
- die;
- }
-
- if($order&&($order['order_status_id']!=C('paid_order_status_id'))){
- //支付完成
- if(true){
-
-
-
- $goods_model = D('Home/Goods');
-
- $kucun_method = C('kucun_method');
- $kucun_method = empty($kucun_method) ? 0 : intval($kucun_method);
- if($kucun_method == 1)
- {//支付完减库存,增加销量
- $order_goods_list = M('order_goods')->where( array('order_id' => $order['order_id']) )->select();
- foreach($order_goods_list as $order_goods)
- {
- //销量增加 del_goods_mult_option_quantity($order_id,$option,$goods_id,$quantity,$type='1')
- $goods_model->del_goods_mult_option_quantity($order['order_id'],$order_goods['rela_goodsoption_valueid'],$order_goods['goods_id'],$order_goods['quantity'],1);
- //扣除库存
- }
- }
-
- $oh['order_id']=$order['order_id'];
- $oh['order_status_id'] = 1;
- $oh['comment']='买家已付款';
- $oh['date_added']=time();
- $oh['notify']=0;
- M('OrderHistory')->add($oh);
-
- $pin_order = M('pin_order')->where( array('order_id' =>$order['order_id'] ) )->find();
-
- if(!empty($pin_order))
- {
- $o = array();
- $o['order_id']=$order['order_id'];
- $o['order_status_id']= 2;
- $o['date_modified']=time();
- $o['pay_time']=time();
- M('Order')->save($o);
- //group_order_id
- $pin_model = D('Home/Pin');
- $is_pin_success = $pin_model->checkPinSuccess($pin_order['pin_id']);
-
- if($is_pin_success) {
- //todo send pintuan success notify
- $pin_model->updatePintuanSuccess($pin_order['pin_id']);
-
- }else{
-
- }
- }else{
- $o = array();
- $o['order_id']=$order['order_id'];
- $o['order_status_id']= 1;
- $o['date_modified']=time();
- $o['pay_time']=time();
- M('Order')->save($o);
- $share_model = D('Seller/Fissionsharing');
- $share_model->send_order_commiss_money( $order['order_id'] );
- }
-
- $result = array('code' => 1, 'url' => U('Payment/success',array('order_id' => $order['order_id'])));
-
- echo json_encode($result);
- die();
-
- }
- }
- }
-
-
- private function yuer_payreturn2($out_trade_no){
- $order=M('Order')->getByOrderNumAlias($out_trade_no);
-
- if($order['order_status_id']==C('paid_order_status_id')){
- @header("Location: ".U('/pay_success'));
- die;
- }
-
- if($order&&($order['order_status_id']!=C('paid_order_status_id'))){
- //支付完成
- if(true){
-
-
- $o['order_id']=$order['order_id'];
- $o['order_status_id']= $order['is_pin'] == 1 ? 2:1;
- $o['date_modified']=time();
- $o['pay_time']=time();
- M('Order')->save($o);
-
- $goods_model = D('Home/Goods');
-
- $kucun_method = C('kucun_method');
- $kucun_method = empty($kucun_method) ? 0 : intval($kucun_method);
- if($kucun_method == 1)
- {//支付完减库存,增加销量
- $order_goods_list = M('order_goods')->where( array('order_id' => $order['order_id']) )->select();
- foreach($order_goods_list as $order_goods)
- {
- //销量增加 rela_goodsoption_valueid
- $goods_model->del_goods_mult_option_quantity($order['order_id'],$order_goods['quantity'],1);
- //扣除库存
- }
- }
-
- $oh['order_id']=$order['order_id'];
- $oh['order_status_id']= $order['is_pin'] == 1 ? 2:1;
- $oh['comment']='买家已付款';
- $oh['date_added']=time();
- $oh['notify']=1;
- M('OrderHistory')->add($oh);
-
- //发送购买通知
- $weixin_nofity = D('Home/Weixinnotify');
- $weixin_nofity->orderBuy($order);
-
- $model=new \Admin\Model\OrderModel();
- $this->order=$model->order_info($order['order_id']);
-
- $hashids = new \Lib\Hashids(C('PWD_KEY'), C('URL_ID'));
- $order_id = $hashids->encode($order['order_id']);
-
- if($order['is_pin'] == 1)
- {
- $pin_model = D('Home/Pin');
- $is_pin_success = $pin_model->checkPinSuccess($order['pin_id']);
-
- if($is_pin_success) {
- //todo send pintuan success notify
- $pin_model->updatePintuanSuccess($order['pin_id']);
- }
- $refurl = C('SITE_URL')."index.php?s=/Group/info/group_order_id/{$order_id}/is_show/1";
- @header("Location: ".$refurl);
- die();
- } else {
- @header("Location: ".U('Order/info',array('id' =>$order['order_id'] )));
- die();
- }
-
- }
- }
- }
- function alipay_return(){
-
- $alipay= new \Lib\Payment\Alipay(get_payment_config('alipay'));
-
- //对进入的参数进行远程数据判断
- $verify = $alipay->return_verify();
-
- if($verify){
- $order=M('Order')->getByOrderNumAlias($_GET['out_trade_no']);
-
- if($order['order_status_id']==C('paid_order_status_id')){
- @header("Location: ".U('/pay_success'));
- die;
- }
-
- if($order&&($order['order_status_id']!=C('paid_order_status_id'))){
- //支付完成
- if($_GET['trade_status']=='TRADE_SUCCESS'){
-
- $o['order_id']=$order['order_id'];
- $o['order_status_id']=C('paid_order_status_id');
- $o['date_modified']=time();
- $o['pay_time']=time();
- M('Order')->save($o);
-
- $oh['order_id']=$order['order_id'];
- $oh['order_status_id']=C('paid_order_status_id');
-
- $oh['comment']='买家已付款';
- $oh['date_added']=time();
- $oh['notify']=1;
- M('OrderHistory')->add($oh);
-
- $model=new \Admin\Model\OrderModel();
- $this->order=$model->order_info($order['order_id']);
- $html=$this->fetch('Mail:order');
- think_send_mail($order['email'],$order['name'],'下单成功-'.C('SITE_NAME'),$html);
-
- storage_user_action(session('user_auth.uid'),session('user_auth.username'),C('FRONTEND_USER'),'支付了订单 '.$order['order_num_alias']);
-
- @header("Location: ".U('/pay_success'));
- }
- }else{
- die('订单不存在');
- }
-
- }else{
- die('支付失败');
- }
-
- }
- }
|