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
 private function _rechargeNotify($notice)
 {
     $errCode = 0;
     $errMsg = '';
     do {
         $rechargeOrder = RechargeModel::where('mer_recharge_no', $notice['mer_recharge_no'])->first();
         if (!$rechargeOrder) {
             $errCode = 2;
             $errMsg = '充值订单不存在' . $notice['mer_recharge_no'];
             break;
         }
         $rechargeId = $rechargeOrder['id'];
         $consumeId = $rechargeOrder['consume_id'];
         if ($consumeId) {
             $consumeOrder = ConsumeModel::find($consumeId);
         }
         $amount = false;
         if (isset($notice['amount'])) {
             $amount = $notice['amount'];
         }
         /// 需要更新的其他信息
         $moreInfo = ['ser_recharge_no' => $notice['ser_recharge_no'], 'gateway_account' => $notice['gateway_account'], 'seller_partner' => $notice['seller_partner'], 'mer_recharge_no' => $notice['mer_recharge_no'], 'pay_time' => $notice['pay_time'], 'notify_log' => $notice['notify_log']];
         try {
             if ($rechargeOrder['status'] != RechargeModel::STATUS_SUCCESS) {
                 $res = RechargeBiz::getInstance()->confirmRechargeOrderById($rechargeId, $amount, $moreInfo);
                 if (false === $res && empty($consumeOrder)) {
                     $errCode = 3;
                     $errMsg = '确认充值订单失败';
                     break;
                 }
             }
             if (!empty($consumeOrder) && $consumeOrder['status'] != ConsumeModel::STATUS_SUCCESS) {
                 $res = ConsumeBiz::getInstance()->confirmConsumeOrderById($consumeOrder['id']);
                 if (false === $res) {
                     $errCode = 3;
                     $errMsg = '确认消费订单失败';
                     break;
                 }
             }
         } catch (\Exception $e) {
             $errCode = 99;
             $errMsg = $e->getMessage();
             break;
         }
     } while (0);
     $ret = new \stdClass();
     $ret->is_success = $errCode === 0 ? 'T' : 'F';
     $ret->code = $errCode;
     $ret->output = $notice['output'];
     $ret->error = $errMsg;
     return $ret;
 }
Exemplo n.º 3
0
 public function payReturn($fields)
 {
     $ret = new \stdClass();
     $rechargeOrder = RechargeModel::getRechargeOrderByMerNo($fields['mer_recharge_no']);
     if (!$rechargeOrder) {
         $ret->is_success = 'F';
         $ret->code = 2;
         $ret->error = '充值订单不存在';
         return $ret;
     }
     $consumeId = $rechargeOrder['consume_id'];
     $params = new \stdClass();
     /// 消费
     if ($consumeId) {
         $consumeOrder = ConsumeModel::find($consumeId);
         $returnUrl = $consumeOrder['return_url'] ? $consumeOrder['return_url'] : $rechargeOrder['return_url'];
         $params->is_success = $consumeOrder['status'] == ConsumeModel::STATUS_SUCCESS ? 'T' : 'F';
         $params->busi_consume_no = $consumeOrder['busi_consume_no'];
         $params->pay_consume_id = $consumeOrder['id'];
         $params->recharge_amount = $consumeOrder['recharge_amount'];
         $params->consume_amount = $consumeOrder['consume_amount'];
         $params->channel = $consumeOrder['channel'];
         $params->user_id = $consumeOrder['user_id'];
         /// 充值
     } else {
         $returnUrl = $rechargeOrder['return_url'];
         $params->is_success = $rechargeOrder['status'] == RechargeModel::STATUS_SUCCESS ? 'T' : 'F';
         $params->error = $rechargeOrder['status'] == RechargeModel::STATUS_SUCCESS ? '' : '充值未成功:' . $rechargeOrder['status'];
         $params->pay_recharge_id = $rechargeOrder['id'];
         $params->mer_recharge_no = $rechargeOrder['mer_recharge_no'];
         $params->busi_recharge_no = $rechargeOrder['busi_recharge_no'];
         $params->channel = $rechargeOrder['channel'];
         $params->user_id = $rechargeOrder['user_id'];
         $params->recharge_amount = $rechargeOrder['recharge_amount'];
     }
     $ret->is_success = 'T';
     $ret->return_url = $returnUrl;
     $ret->data = $params;
     return $ret;
 }
Exemplo n.º 4
0
 public function getConsumeOrderById($consumeId)
 {
     return ConsumeModel::find($consumeId);
 }