public function fire($job, $data) { $orderId = $data['id']; $ret = true; switch ($data['notify_type']) { case 'direct': $order = RechargeModel::find($orderId); break; case 'consume': $order = ConsumeModel::find($orderId); break; case 'refund': $order = RefundModel::find($orderId); break; case 'trans': $order = TransModel::find($orderId); break; } if ($order && $order->callback_status != 2 && $order->callback_count < 20) { try { $ret = BusiNotifyBiz::getInstance()->notifyCallback($order, $data['notify_type']); } catch (PayException $e) { $ret = true; } catch (\Exception $e) { $ret = false; } $job->release(pow($order->callback_count, 2) * 60); } if ($ret == true) { $job->delete(); } }
public function confirmTransOrderById($orderId, $data) { $errCode = 0; $errMsg = ''; \DB::beginTransaction(); do { try { $order = TransModel::find($orderId); if (!$order) { throw new PayException(ErrCode::ERR_ORDER_NO_EXISTS); } elseif ($order->status == TransModel::STATUS_SUCCESS) { $errCode = 1; break; } if (isset($data['ser_trans_no'])) { $order->ser_trans_no = $data['ser_trans_no']; } if (isset($data['ser_notify_log'])) { $order->ser_notify_log = $data['ser_notify_log']; } $order->ser_notify_status = $data['ser_notify_status']; $order->pay_time = $data['ser_pay_time']; $order->ser_notify_time = $data['ser_pay_time']; $order->save(); } catch (\Exception $e) { $errCode = 1; } } while (0); if ($errCode == 0) { \DB::commit(); \Queue::later(5, '\\Pay\\Service\\Queue\\BusiNotifyQueue', ['id' => $order->id, 'notify_type' => 'trans']); return true; } else { \DB::rollback(); return false; } }