Exemplo n.º 1
0
 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();
     }
 }
Exemplo n.º 2
0
 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;
     }
 }