/**
  * Создать пользователя и подписать его на услугу
  * Вернуть новый счет с этим пользователем
  *
  * @return Account
  */
 private function _makeAccountWithSubscribedUser($daysShift = 1)
 {
     $user = $this->helper->makeUser();
     $date = new DateTime("{$daysShift}days");
     $service = Doctrine::getTable('Service')->findOneByKeyword(Service::SERVICE_SMS);
     // Подписка
     $subscription = new ServiceSubscription();
     $subscription->setUser($user);
     $subscription->setService($service);
     $subscription->setSubscribedTill($date->format('Y-m-d 00:00:00'));
     $subscription->save();
     return $this->helper->makeAccount($user);
 }
Пример #2
0
 /**
  * /robokassa/success
  * Экшн для редиректа в случае успешного прохождения платежа
  *
  * @param sfWebRequest $request
  */
 public function executeSuccess(sfWebRequest $request)
 {
     $transaction = $this->checkSuccessAndFailParams($request);
     // Транзакция уже завершена, повторая попытка
     if ($transaction->getStatus()) {
         $this->forward('services', 'index');
     }
     // Все верно, ставим флаг "оплачено"
     $transaction->setStatus(1);
     $transaction->setSuccess(1);
     $transaction->save();
     // Создаем либо обновляем сабскрипшн
     $subscription = Doctrine::getTable('ServiceSubscription')->findOneByUserIdAndServiceId($transaction->getUserId(), $transaction->getServiceId());
     // Если еще нет сабскрипшна на эту услугу - создаем
     if (!$subscription) {
         $subscription = new ServiceSubscription();
         $subscription->setUserId($transaction->getUserId());
         $subscription->setServiceId($transaction->getServiceId());
         $subscription->setSubscribedTill(date('Y-m-d H:i:s', time()));
     }
     // Количество месяцев
     $term = (int) $request->getPostParameter("shpa", 1);
     // Накидываем 30 дней к услуге и умножаем на количество месяцев
     $subscribedTill = strtotime($subscription->getSubscribedTill()) + 3600 * 24 * 30 * $term;
     $subscription->setSubscribedTill(date('Y-m-d H:i:s', $subscribedTill));
     $subscription->save();
     $transaction->setSubscriptionId($subscription->getId());
     $transaction->save();
     $this->getUser()->setFlash('robokassa_status', 1);
     $this->forward('services', 'index');
     return sfView::NONE;
 }