$bill_id, $PayOrderModel::ORDER_STATE => 'WAIT_BUYER_PAY', $PayOrderModel::PAY_TYPE => 6, //余额支付 ); if (!empty($pay_order_id)) { $payMap[$PayOrderModel::ID] = $pay_order_id; } $payOrder = $PayOrderModel->getFind($payMap); if (empty($payOrder)) { $res['status'] = 0; $res['msg'] = '订单不存在1'; return $res; } if ($payOrder[$PayOrderModel::PAY_TYPE] = !6 || empty($payOrder[$PayOrderModel::VID])) { $res['status'] = 0; $res['msg'] = '您的请求有误'; return $res; } $VipModel = D('RetailVip'); $vipMap = array( $VipModel::ID => $payOrder[$PayOrderModel::VID], ); $vipInfo = $VipModel->getFind($vipMap); if (empty($vipInfo)) { $res['status'] = 0; $res['msg'] = '数据库发生错误'; return $res; } if (!empty($password) && !checkPassword($vipInfo[$VipModel::PASSWORD], $password, $vipInfo[$VipModel::ADD_TIME])) { $res['status'] = 0; $res['msg'] = '支付密码错误'; return $res; } $payMoney = $payOrder[$PayOrderModel::TRADE_AMOUNT]; if (round($vipInfo[$VipModel::BALANCE] - $payMoney, 2) < 0) { $res['status'] = 0; $res['msg'] = '会员卡余额不足,无法支付'; return $res; } $pay = $VipModel->toSetDec($vipMap, $VipModel::BALANCE, $payMoney); if ($pay) { $RechargeOrderModel = D('RetailRechargeOrder'); $remark = ''; switch ($scene_type) { case 1: $remark = '线下买单余额支付' . $payMoney . '元'; break; case 2: $remark = '商户后台余额支付' . $payMoney . '元'; break; case 3: $remark = '门店后台余额支付' . $payMoney . '元'; break; case 4: $remark = '小程序买单余额支付' . $payMoney . '元'; break; case 5: $remark = '公众号买单余额支付' . $payMoney . '元'; break; } $item = array( $RechargeOrderModel::STORE_ID => $payOrder[$PayOrderModel::STORE_ID], $RechargeOrderModel::MERCHANT_ID => $payOrder[$PayOrderModel::MERCHANT_ID], $RechargeOrderModel::BILL_ID => $payOrder[$PayOrderModel::BILL_ID], $RechargeOrderModel::PAY_ORDER_ID => $payOrder[$PayOrderModel::ID], $RechargeOrderModel::CASHIER_ID => $payOrder[$PayOrderModel::CASHIER_ID], $RechargeOrderModel::MONEY => $payMoney, $RechargeOrderModel::ALL_MONEY => $payMoney, $RechargeOrderModel::STATE => 1, $RechargeOrderModel::SCENE_TYPE => $scene_type,//1收银机 2商户后台 3门店后台 4小程序 5公众号 $RechargeOrderModel::TYPE => $type,//1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 $RechargeOrderModel::ADD_TIME => time(), $RechargeOrderModel::VID => $vipInfo[$VipModel::ID], $RechargeOrderModel::REMARK => $remark, ); $add = $RechargeOrderModel->addOrder($item); if ($add) { $res['pay_order'] = $payOrder; $res['status'] = 1; $res['msg'] = '支付成功'; $save = array( $PayOrderModel::ORDER_STATE => 'SUCCESS', $PayOrderModel::TRADE_DATE => time() ); $PayOrderModel->updateOrder($payMap, $save); } else { $res['status'] = 0; $res['msg'] = '支付成功,添加记录失败,请联系系统管理员'; } } else { $res['status'] = 0; $res['msg'] = '会员卡支付失败,请刷新动态码重试'; } return $res; } /** * 会员加积分 * @param int $vip_info 会员详情 * @param int $integral 积分 * @param int $store_id 门店id * @param int $type 类型 * @param int $remake 注释 * @param int $bill_id * @return array $res */ public function rechargeVipIntegral($vip_info, $integral, $store_id, $type, $remake, $bill_id = 0) { $RVModel = D('RetailVip'); // 会员表模型 // 修改积分 $vip_info[$RVModel::INTEGRAL] = $vip_info[$RVModel::INTEGRAL] && $vip_info[$RVModel::INTEGRAL] > 0 ? $vip_info[$RVModel::INTEGRAL] : 0; $vip_info[$RVModel::GRADE_INTEGRAL] = $vip_info[$RVModel::GRADE_INTEGRAL] && $vip_info[$RVModel::GRADE_INTEGRAL] > 0 ? $vip_info[$RVModel::GRADE_INTEGRAL] : 0; $up = array( $RVModel::INTEGRAL => $vip_info[$RVModel::INTEGRAL] + $integral, $RVModel::GRADE_INTEGRAL => $vip_info[$RVModel::GRADE_INTEGRAL] + $integral, ); $save_result = $RVModel->updateOrder(array($RVModel::ID => $vip_info[$RVModel::ID]), $up); if (!$save_result) { $res = array('status' => 0, 'msg' => '积分修改失败,请联系商家'); return $res; } // 添加积分记录 $RIOModel = D('RetailIntegralOrder'); $cr = array( $RIOModel::VID => $vip_info[$RVModel::ID], $RIOModel::TYPE => $type, $RIOModel::INTEGRAL => $integral, $RIOModel::ADD_TIME => time(), $RIOModel::STORE_ID => $store_id, $RIOModel::BILL_ID => $bill_id, $RIOModel::REMARK => $remake ); $add_result = $RIOModel->addOrder($cr); if ($add_result) { $res = array('status' => 1, 'msg' => '记录添加成功'); } else { $res = array('status' => 0, 'msg' => '记录添加失败'); } return $res; } /** * 会员退款 * @param $payOrder pay_order * @param $scene_type 场景 1收银机 2商户后台 3门店后台 4小程序 5公众号 * @param $type 类型 1充值 2消费 3编辑增加 4编辑减少 5退款增加 6红包充值 7大转盘充值 8礼品卡充值 * @return mixed */ public function refundForVip_v1($payOrder, $scene_type, $type) { $VipModel = D('RetailVip'); $PayOrderModel = D('RetailPayOrder'); $setInc = $VipModel->toSetInc(array($VipModel::ID => $payOrder[$PayOrderModel::VID]), $VipModel::BALANCE, $payOrder[$PayOrderModel::TRADE_AMOUNT]); if ($setInc) { $RechargeOrderModel = D('RetailRechargeOrder'); $item[$RechargeOrderModel::STORE_ID] = $payOrder[$PayOrderModel::STORE_ID]; $item[$RechargeOrderModel::MERCHANT_ID] = $payOrder[$PayOrderModel::MERCHANT_ID]; $item[$RechargeOrderModel::BILL_ID] = $payOrder[$PayOrderModel::BILL_ID]; $item[$RechargeOrderModel::PAY_ORDER_ID] = $payOrder[$PayOrderModel::ID]; $item[$RechargeOrderModel::CASHIER_ID] = $payOrder[$PayOrderModel::CASHIER_ID]; $item[$RechargeOrderModel::MONEY] = $payOrder[$PayOrderModel::TRADE_AMOUNT]; $item[$RechargeOrderModel::ALL_MONEY] = $payOrder[$PayOrderModel::TRADE_AMOUNT]; $item[$RechargeOrderModel::STATE] = 1; $item[$RechargeOrderModel::TYPE] = $type; $item[$RechargeOrderModel::SCENE_TYPE] = $scene_type; $item[$RechargeOrderModel::ADD_TIME] = time(); $item[$RechargeOrderModel::VID] = $payOrder[$PayOrderModel::VID]; $payMoney = $payOrder[$PayOrderModel::TRADE_AMOUNT]; switch ($scene_type) { case 1: $remark = '线下余额退款' . $payMoney . '元'; break; case 2: $remark = '商户后台余额退款' . $payMoney . '元'; break; case 3: $remark = '门店后台余额退款' . $payMoney . '元'; break; case 4: $remark = '小程序订单余额退款' . $payMoney . '元'; break; case 5: $remark = '公众号余额退款' . $payMoney . '元'; break; case 6: $remark = '小助手快捷收银退款' . $payMoney . '元'; break; } $item[$RechargeOrderModel::REMARK] = $remark; $add = $RechargeOrderModel->addOrder($item); if ($add) { $result['status'] = 1; $result['msg'] = '退款成功'; } else { $result['status'] = 0; $result['msg'] = '退款成功,添加记录失败,请联系系统管理员'; } } else { $result['status'] = 0; $result['msg'] = '会员退款失败'; } return $result; } }