/** * 订单支付 * @param $orderNo */ public function pay($orderNo) { // 是否授权 $openId = (new WeixinUtil())->getOpenId(); if (!$openId) { $this->message('错误的授权!'); } // 获得订单信息 $where = array('order_no' => $orderNo, 'open_id' => $openId); $orders = (new OrderModel())->getOrder($where, OrderModel::ORDER_NOT_PAY); if (!$orders) { $this->message('订单不存在!'); } if (!isset($orders[0])) { $this->message('订单不存在!'); } // 如果有多条, 获得第一条的订单记录 $order = array_shift($orders); if ($order['order_status'] == OrderModel::ORDER_PAYED) { $this->message('订单已经支付!'); } // 订单时间, 2个小时过期 if (!DateUtil::orderIsValidDate($order['create_time'])) { $this->message('订单已经过期!'); } // 判断相同的时间是否已经被预约 $findHasPayedAppointTimeWhere = array('appointment_day' => $order['appointment_day'], 'appointment_start_time' => $order['appointment_start_time'], 'order_status' => OrderModel::ORDER_PAYED, 'beautician_id' => $order['beautician_id']); $findOrder = (new CurdUtil(new OrderModel()))->readOne($findHasPayedAppointTimeWhere); if ($findOrder) { $this->message('由于您未能及时付款,此时间段已被预约!'); } // 获得预付款ID $weixinPay = new WeixinPayUtil(); $prePayId = $weixinPay->fetchPrepayId($openId, '购买不期而遇美容产品', $orderNo, $order['total_fee']); LogUtil::weixinLog('预付款ID:', $prePayId); if (!$prePayId) { $this->message('获得微信预付款ID失败,请重试!'); } //生成支付参数 $payParams = $weixinPay->getParameters($prePayId); LogUtil::weixinLog('支付参数:', $payParams); $shops = (new ShopModel())->getAllShops(); $shop = $shops[$order['shop_id']]; $this->view('order/pay', array('order' => $order, 'payParams' => $payParams, 'shop' => $shop)); }
<dd> <?php if ($order['order_sign'] == OrderModel::ORDER_NOT_PAY && DateUtil::orderIsValidDate($order['create_time'])) { ?> <a class="colorW" href="<?php echo UrlUtil::createUrl('order/pay/' . $order['order_no']); ?> ">去支付</a> <a class="colorW cancel-order" data-val="<?php echo $order['order_id']; ?> " style="margin-left: 15px;">取消订单</a> <?php } elseif ($order['order_sign'] == OrderModel::ORDER_NOT_PAY && !DateUtil::orderIsValidDate($order['create_time'])) { ?> <a class="order-expire">订单已过期</a> <?php } elseif ($order['order_sign'] == OrderModel::ORDER_CANCEL) { ?> <a class="order-expire">订单已取消</a> <?php } elseif ($order['order_sign'] == OrderModel::ORDER_PAYED) { ?> <a class="order-payed">已支付</a> <?php } else { ?> <?php }