where('pay_status', 'SUCCESS') ->where(function ($query) { $query->whereRaw("JSON_EXTRACT(`pay_extend_json`, '$.notify') IS NULL") ->orWhereJsonDoesntContain('pay_extend_json->notify', 'success'); }) ->get() ->toArray(); if (!$payDetails) { return; } foreach ($payDetails as $payDetail) { $this->paySuccess($payDetail['pay_id']); } } // public function paySuccess(Request $request) // { // $id = $request->post('pay_id', null); public function paySuccess($id) { if (!$id) { return json_fail('参数异常'); } $payDetail = PayDetail::find($id); if ($payDetail->pay_status != 'SUCCESS') { return json_fail("支付状态异常"); } $extendJson = []; if (!empty($payDetail->pay_extend_json)) { $extendJson = json_decode($payDetail->pay_extend_json, true); if (isset($extendJson['notify']) && $extendJson['notify'] == 'success') { return json_success('处理完成'); } } try { Db::beginTransaction(); $extendJson['notify'] = 'success'; $payDetail->pay_extend_json = json_encode($extendJson); $payDetail->save(); // 赠送比例 $objectJson = json_decode($payDetail->join_pay_object_json, true); dump($objectJson); if (!isset($objectJson['order_id'])){ return json_fail("支付数据异常"); } dump($objectJson['order_id']); $addedNbr = RechargeService::disposeOrder($objectJson['order_id']); // 赠送金额累加到 账户表 member_account_added MemberAccount::where('join_account_member_id', $payDetail->join_pay_member_id) ->where('member_account_classify', 'CASH') ->increment('member_account_added', $payDetail->pay_amount * $addedNbr); MemberAccount::where('join_account_member_id', $payDetail->join_pay_member_id) ->where('member_account_classify', 'CASH') ->increment('member_account_income', floatval($payDetail->pay_amount)); // 根据最新的数据,更新用户等级 $member = Member::find($payDetail->join_pay_member_id); $roleId = RechargeService::disposeRole($payDetail->join_pay_member_id, $payDetail->pay_amount); if ($roleId && $member->join_member_role_id != $roleId) { $member->join_member_role_id = $roleId; $member->save(); // 处理增值套包、组件 RechargeService::disposeAdded($roleId, $payDetail->join_pay_member_id); } Db::commit(); return json_success('success'); } catch (BusinessException $e) { dump($e->getMessage()); Db::rollBack(); return json_fail('处理失败'); } catch (\Exception $e) { dump($e->getMessage()); Db::rollBack(); return json_fail('处理失败'); } } }