verify(); try { $payamount = $data['total_fee'] / 100; $out_trade_no = $data['out_trade_no']; Db::startTrans(); try { $orderModel = new \app\common\model\RecharOrder(); $userModel = new \app\common\model\User(); $jewellogModel = new \app\common\model\UserJewelLog(); $rechargelogModel = new \app\common\model\UserRechargeLog(); $orderInfo = $orderModel->where(["order_no" => $out_trade_no])->find(); $userInfo = $userModel->where(["id" => $orderInfo["user_id"]])->find(); // 修改订单状态 $res1 = $orderModel->update(["status" => 1], ["order_no" => $out_trade_no]); // 修改用户钻石余额 $res2 = $userModel->where(["id" => $orderInfo["user_id"]])->setInc("jewel", $orderInfo["jewel"]); // 添加钻石流水记录 $detail = "钻石充值"; $res3 = $jewellogModel->addUserJewelLog($userInfo["id"], $orderInfo["jewel"], "+", $userInfo["jewel"], $detail, 1); // 添加充值记录 $res4 = $rechargelogModel->addRecord($userInfo["id"], $orderInfo["jewel"], $payamount, bcadd($userInfo["jewel"], $orderInfo["jewel"], 2), $userInfo["money"], $orderInfo["platform"], 1); if ($res1 && $res2 && $res3 && $res4) { // 添加统计 $userInfo->chargecount = $userInfo->chargecount + $payamount; $userInfo->chargetime = time(); $userInfo->save(); $userService = new UserService(); $userService->inviteMoney(['user_id'=>$orderInfo["user_id"]]); Db::commit(); } } catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } //你可以在此编写订单逻辑 } catch (Exception $e) { } echo $pay->success(); } /** * 支付回调 */ public function alipaynotify() { $paytype = "alipay"; $pay = Service::checkNotify($paytype); if (!$pay) { echo '签名错误'; return; } $data = $pay->verify(); try { $payamount = $data['total_fee'] / 100; $out_trade_no = $data['out_trade_no']; Db::startTrans(); try { $orderModel = new \app\common\model\RecharOrder(); $userModel = new \app\common\model\User(); $jewellogModel = new \app\common\model\UserJewelLog(); $rechargelogModel = new \app\common\model\UserRechargeLog(); $orderInfo = $orderModel->where(["order_no" => $out_trade_no])->find(); $userInfo = $userModel->where(["id" => $orderInfo["user_id"]])->find(); // 修改订单状态 $res1 = $orderModel->update(["status" => 1], ["order_no" => $out_trade_no]); // 修改用户钻石余额 $res2 = $userModel->where(["id" => $orderInfo["user_id"]])->setInc("jewel", $orderInfo["jewel"]); // 添加钻石流水记录 $detail = "钻石充值"; $res3 = $jewellogModel->addUserJewelLog($userInfo["id"], $orderInfo["jewel"], "+", $userInfo["jewel"], $detail, 1); // 添加充值记录 $res4 = $rechargelogModel->addRecord($userInfo["id"], $orderInfo["jewel"], $payamount, bcadd($userInfo["jewel"], $orderInfo["jewel"], 2), $userInfo["money"], $orderInfo["platform"], 1); if ($res1 && $res2 && $res3 && $res4) { // 添加统计 $userInfo->chargecount = $userInfo->chargecount + $payamount; $userInfo->chargetime = time(); $userInfo->save(); $userService = new UserService(); $userService->inviteMoney(['user_id'=>$orderInfo["user_id"]]); Db::commit(); } } catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } //你可以在此编写订单逻辑 } catch (Exception $e) { } echo $pay->success(); } /** * 支付回调 */ public function wechatkjnotify() { $input = file_get_contents("php://input"); // 主题信息 $dataArr = explode("&", urldecode($input)); $data = []; if ($dataArr) foreach ($dataArr as $k => $v) { $vv = explode("=", $v); $data[$vv[0]] = $vv[1]; } // 实例化支付类 $kjpay = new kjpay(); // 获取公共参数 $config = config("kjPay"); //密钥 $key = $config["key"]; $sign = $data['sign']; unset($data['sign']); if ($kjpay->local_sign($data, $key) == $sign) { //验签成功后,开始业务逻辑 try { $payamount = $data['amount']; $out_trade_no = $data['merchant_order_no']; $pay_channel = $data['pay_channel']; Db::startTrans(); try { $orderModel = new \app\common\model\RecharOrder(); $userModel = new \app\common\model\User(); $jewellogModel = new \app\common\model\UserJewelLog(); $rechargelogModel = new \app\common\model\UserRechargeLog(); $orderInfo = $orderModel->where(["order_no" => $out_trade_no])->find(); $userInfo = $userModel->where(["id" => $orderInfo["user_id"]])->find(); // 修改订单状态 $res1 = $orderModel->update(["status" => 1], ["order_no" => $out_trade_no]); // 修改用户钻石余额 $res2 = $userModel->where(["id" => $orderInfo["user_id"]])->setInc("jewel", $orderInfo["jewel"]); // 添加钻石流水记录 $detail = "砖石充值"; $res3 = $jewellogModel->addUserJewelLog($userInfo["id"], $orderInfo["jewel"], "+", $userInfo["jewel"], $detail, 1); // 添加充值记录 $rechargeCount = $rechargelogModel->where('user_id',$orderInfo["user_id"])->count(); $isFirstRecharge = $rechargeCount > 0 ? 0 : 1; $platformArr = ["wx_app_pay" => 1, "ali_wap_pay" => 2, "wx_public_pay" => 3]; $res4 = $rechargelogModel->addRecord($userInfo["id"], $orderInfo["jewel"], $payamount, bcadd($userInfo["jewel"], $orderInfo["jewel"], 2), $userInfo["money"], $orderInfo["platform"], $platformArr[$pay_channel], $isFirstRecharge, $userInfo["pre_userid"]); if ($res1 && $res2 && $res3 && $res4) { // 添加统计 $time = time(); (new \app\common\model\User)->execute("update hx_user set chargecount = chargecount + $payamount,chargetime = $time where id = " . $userInfo["id"]); // \app\common\model\Test::update(["content"=>"update hx_user set chargecount = chargecount + $payamount,chargetime = $time where id = ".$userInfo["id"]],["id"=>1]); // 首充赠送 $userInfo = \app\common\model\User::get($orderInfo["user_id"]); if ($userInfo->is_recharge == 0) { // 首充 Db::startTrans(); try { // 赠送消息尾灯 $res1 = \app\common\model\AttireBack::addToMyBack(15, $orderInfo["user_id"]); $userInfo->is_recharge = 1; $res2 = $userInfo->save(); if ($res1 && $res2) Db::commit(); } catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } } $this->rebate($orderInfo["user_id"], $data['amount']); // +EXP \app\common\model\TaskLog::tofinish($orderInfo["user_id"], "5EMwg7la", 1); // 查询今日充值记录 $today = strtotime(date("Y-m-d 00:00:00")); $rechargeMoney = \app\common\model\RecharOrder::where(["user_id" => $orderInfo["user_id"], "createtime" => ["gt", $today]])->sum("money"); if ($rechargeMoney >= 100) { // +EXP \app\common\model\TaskLog::tofinish($orderInfo["user_id"], "DaCVgOLu", 1); } // 查询新人礼包 $this->addBagGift($orderInfo["user_id"], $data['amount']); Db::commit(); echo "success"; exit; } } catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } //你可以在此编写订单逻辑 } catch (Exception $e) { } } } /** * 银联提现回调 */ public function cashoutNotify() { } /** * 更新新人礼包 */ private function addBagGift($user_id, $amount) { if (!$user_id || !$amount) return false; // 先看该用户是否有新人礼包特权 $have = \app\common\model\NewBagHave::where(["user_id" => $user_id])->find(); // print_r($have);exit; if ($have && time() - $have->createtime <= 7 * 86400) { $where = []; $where["value"] = ["elt", $amount]; $bagInfo = \app\common\model\NewBag::where($where)->order("value", "desc")->select(); if (!$bagInfo) return false; $res1 = false; foreach ($bagInfo as $k => $v) { // 查询完成情况 $bagfinish = \app\common\model\NewBagFinish::where(["user_id" => $user_id, "bag_id" => $v["id"]])->find(); if (!$bagfinish || $bagfinish->status <= 0) { if ($bagfinish) { $bagfinish->status = 1; $bagfinish->updatetime = time(); $res1 = $bagfinish->save(); } else { $res1 = \app\common\model\NewBagFinish::insert(["user_id" => $user_id, "bag_id" => $v["id"], "status" => 1, "updatetime" => time()]); } break; } } return $res1; } } /** * 充值返利 */ private function rebate($user_id, $money) { // // 获取配置信息 // $config = \app\common\model\RebateConfig::where(["recharge"=>$money])->find(); // if(!$config) return true; // 找到当前用户的上级和上上级 $userInfo = \app\common\model\User::get($user_id); if ($userInfo->pre_userid > 0) { $preUserInfo = \app\common\model\User::where(["id" => $userInfo->pre_userid])->find();// 上一级用户 $this->addRebateMoney($preUserInfo->id, $user_id, $money, 1); if ($preUserInfo->pre_userid > 0) { $this->addRebateMoney($preUserInfo->pre_userid, $user_id, $money, 2); } else { return true; } } else { return true; } } /** * 添加返利金额 */ private function addRebateMoney($preUserId, $user_id, $money, $type) { Db::startTrans(); try { // 添加返利记录表 $data = []; $data["user_id"] = $preUserId; $data["by_user_id"] = $user_id; $data["money"] = $money; $data["rebate_money"] = 0.00; $data["rebate_type"] = $type; $data["createtime"] = time(); $res1 = \app\common\model\RebateLog::insertGetId($data); // $res2 = (new \app\common\model\RebateLog)->execute("update hx_rebate_log set rebate_money = $rebatemoney where id = $res1"); if ($res1) { Db::commit(); } } catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } } }