Exemplo n.º 1
0
 public function indexAction()
 {
     //        // 判断当前URL是否传入了code和state值
     $checkBrower = C('WECHAT_BROWER');
     if ($checkBrower == true) {
         $code = I('get.code', 'defaultCode');
         $state = I('get.state', '');
         //无授权code,则跳转获取
         if ($code == 'defaultCode' || $state == '' || $code == session('code')) {
             goto_auth();
             return;
         }
         //通过微信返回的CODE值,获取用户信息
         $userInfo = get_user_info($code);
         $userToken = $userInfo['access_token'];
         $this->openid = $userInfo['openid'];
         session('openid', $this->openid);
         session('openidTime', time());
         //            //判断用户权限,未注册跳转到提示页面
         //            $customerInfo = get_customer_info($this->openid);
         //            $customerType = $customerInfo['subscribe_state'];
         //            if($customerType == 0)
         //            {
         ////                转到注册界面
         ////                $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
         ////                $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
         ////                $url = U('Register/Index/index');
         //                //转至提示如果成为分销商的界面
         //                $id = 1;
         //                $reply = new ReplyModel();
         //                $reply->setId($id);
         //                $replyInfo = $reply->getInfoById();
         //                redirect($replyInfo['url']);
         //            }
         session('code', $code);
         //获取调用收货地址配置信息
         //获取调用微信JSSDK签名信息
         $jssdk = new JSSDKController();
         $jssdk->setCode($code);
         $jssdk->setState($state);
         $jssdk->setUserToken($userToken);
         //        echo 'pay中当前code值' . $code . "<br />";
         //        echo 'pay中当前state值' . $state . "<br />";
         //        echo 'pay中当前userToken值' . $userToken . '<br />';
         $addressPackage = $jssdk->getAddressPackage();
         $signPackage = $jssdk->getSignPackage();
     }
     $openid = get_openid();
     $this->assign('openid', $openid);
     $title = '确认订单';
     $this->assign('title', $title);
     //获取get信息,去除html过滤.数据类型为JSON格式的字符串
     $ids = I('get.ids', '');
     //字符串转为数组
     $this->assign('ids', $ids);
     $ids = explode("-", $ids);
     $shoppingCart = new ShoppingCartModel();
     $counts = $shoppingCart->getCounts($ids, $openid);
     $this->assign('counts', implode('-', $counts));
     //取用户收货地址信息
     $address = new CustomerAddressModel();
     $address->setOpenid($openid);
     $customerAddress = $address->getLastUseAdderss();
     $this->assign('address', $customerAddress);
     //设置GET收货地址管理的URL
     $customerAddress['chooseAddressUrl'] = U('Address/chooseAddress');
     $this->assign('address', $customerAddress);
     //取收货地址信息HTML
     $this->assign('indexAddress', $this->fetch('indexAddress'));
     /* 进行数据处理,添加商品详情,按不同来源、物流方式进行分组,并将分组后数组的信息返回 */
     $data = $this->dataAccess($ids, $counts);
     $product = $data[0];
     $totalInfo = $data[1];
     //传用户id,优惠券表里取对应的优惠券
     $couponM = D('Coupon');
     $coupon = $couponM->getCoupon($openid);
     $freightM = D('System/Config');
     $freight = $freightM->freightCount();
     //取运费的五个字段
     $this->assign('freight', $freight);
     //给出收货地址URL信息
     $data['addUrl'] = U('OrderForm/Address/add?openid=' . $openid);
     $data['editUrl'] = U('OrderForm/Address/edit?openid=' . $openid);
     $data['saveAddressUrl'] = U('OrderForm/Address/save');
     $data['uploadImageUrl'] = U('OrderForm/Address/uploadImage');
     $data['updateAddressUrl'] = U('OrderForm/Address/updateAddress');
     $data['deleteUrl'] = U('OrderForm/Address/delete');
     $this->assign('data', $data);
     //给出可以定制的header信息
     $this->assign('header', $this->fetch('indexHeader'));
     $this->assign('coupon', $coupon);
     $this->assign('total', $totalInfo);
     //地址下面的条纹图片路径
     $guoduUrl = add_root_path('/theme/wemall/images/guodu.png');
     $this->assign('guoduUrl', $guoduUrl);
     $this->assign('css', $this->fetch('indexCss'));
     $this->assign('signPackage', $signPackage);
     $this->assign('addressPackage', $addressPackage);
     $updateUrl = U('Index/payNow');
     $this->assign('url', $updateUrl);
     $wxJs = $this->fetch('wxJs');
     $this->assign('wxJs', $wxJs);
     $js = $this->fetch('js');
     $this->assign('js', $js);
     $this->assign('product', $product);
     //送入首页URL
     $indexUrl = U('Home/Index/index');
     $this->assign('indexUrl', $indexUrl);
     //定制底部菜单
     $this->assign('footer', $this->fetch('footer'));
     $this->assign('YZBody', $this->fetch('index'));
     $this->display(YZ_TEMPLATE);
 }
Exemplo n.º 2
0
 public function payNowAction()
 {
     $openid = get_openid();
     $ids = I('get.ids', '', false);
     $counts = I('get.counts', '', false);
     $coupon = I("get.coupons", '', false);
     //字符串转为数组
     if ($ids == '') {
         $ids = array();
     } else {
         $ids = explode("-", $ids);
     }
     if ($counts == '') {
         $counts = array();
     } else {
         $counts = explode("-", $counts);
     }
     if ($coupon == '') {
         $coupon = array();
     } else {
         $coupon = explode("-", $coupon);
     }
     //取出商品信息,总计信息
     $group = new SubmitController();
     $product = $group->dataAccess($ids, $counts);
     if ($product == false) {
         return;
     }
     $goods = $product[0];
     $totalInfo = $product[1];
     $countTotal = $totalInfo['totalCount'];
     //看优惠券数量是否大于商品数量
     if (count($coupon) > $countTotal) {
         //跳转至报错界面
         return;
     }
     //送入优惠券ID组成的数组,按ID值取出优惠券信息
     $couponModel = new CouponModel();
     $couponInfo = $couponModel->getInfo($coupon, $openid);
     //利用foreach,计算优惠券总金额(过期优惠券\已使用优惠券直接抛弃)
     $couponTotal = 0;
     foreach ($couponInfo as $key => $value) {
         /* 优惠券使用为0,未使用为1*/
         if ($value['end_time'] > time() && (int) $value['state'] & 1 == 1) {
             $couponTotal += $value['cover'];
         }
     }
     $totalInfo['totalCoupon'] = $couponTotal;
     $totalInfo['totalPayable'] -= $couponTotal;
     $totalInfo['totalPayable'] = $totalInfo['totalPayable'] > 0 ? $totalInfo['totalPayable'] : 1;
     //接收收货地址信息,通过收货地址,取详细信息
     $addressId = I('get.addressId', '');
     $address = new CustomerAddressModel();
     $address->setId($addressId);
     $addressInfo = $address->getAddress();
     $totalInfo['addressInfo'] = $addressInfo;
     $totalInfo['buyOpenid'] = $openid;
     //接收支付类型,类型为0为微信支付,类型为1为其它支付方式
     //        $payType = I('get.payType','0');
     //传入总金额,生成订单支付数据
     $orderRelation = new OrderRelationModel();
     $orderRelation->setTotalInfo($totalInfo);
     $payId = $orderRelation->addOrder();
     //传入订单信息,生成订单数据,返回订单ID
     /*
      * $payid, 支付id
      * $openid, 
      * $logisticsMode, 物流方式
      * $source, 来源
      * $payable, 总金额
      * $weightTotal, 总重量
      * $countTotal,商品总数量
      * $address,收货地址
      * $telephone, 收货电话
      * $name,则货人姓名
      * $frontId, 身份证正面ID
      * $backId, 身份证反面ID
      * $idNo, 身份证号
      * $couponTotal, 优惠总数
      * $directTotal, 直销返点总数
      * $lineTotal,线销返点总数
      * $logisticFee,物流费用
      * $maxAmonut,最大优惠金额
      * $coupon,使用优惠券信息
      */
     $orderForm = new OrderFormModel();
     $orderForm->setPayid($payId);
     $orderForm->setOpenid($openid);
     foreach ($goods as $key => $value) {
         $orderForm->setLogisticsMode($value['logisticType']['name']);
         $orderForm->setSource($value['source']['name']);
         $orderForm->setPayable($value['payable']);
         $orderForm->setWeight($value['weightTotal']);
         $orderForm->setCountTotal($value['countTotal']);
         $orderForm->setDirectFee($value['directTotal']);
         $orderForm->setLineFee($value['lineTotal']);
         $orderForm->setLogisticFee($value['logisticFee']);
         $orderForm->setMaxAmonut($value['maxAmonut']);
         $orderId = $orderForm->addOrder();
         /*生成订单-商品数据**************/
         $orderGoods = new OrderGoodsModel();
         $orderGoods->addOrderGoods($orderId, $value['goods']);
         /*添加商品的销量********************/
         $goodsM = new GoodsModel();
         $goodsM->updateSaled($value['goods']);
     }
     /*删除购物车数据******************/
     $shoppingCart = new ShoppingCartModel();
     $shoppingCart->deleteGoods($openid, $goods);
     /*将当前使用优惠券做使用处理*/
     $couponModel->updateUsed($coupon);
     /* 判断支付类型,拼接好URL后跳转 1为其它支付方式 0为微信支付 
      * 注意,在不同模式下,U方法将生成不同的路径,必须按U方法生成的目录设置微信的授权目录
      * 否则将导致出现  get_brand_wcpay_request:fail_invalid appid错误(      */
     //        if($payType == 1)
     //        {
     //            $url = U('WxPay/OtherPay/payNow?payid=' . $payId);
     //        }
     //        else
     //        {
     //            $url = U('WxPay/Pay/payNow?payid=' . $payId);
     //            //$url1 = U('WxPay/Pay/payNow') . '?payid=' . $payId;
     //        }
     $url = U('Pay/Index/index') . '?payid=' . $payId;
     redirect_url($url);
 }