public function subscribe()
 {
     $rules = ['email' => 'required|email'];
     $validator = Validator::make(Input::all(), $rules);
     $contents = json_encode(['message' => 'Your subscription was unsuccessful.']);
     $failure = Response::make($contents, 200);
     $failure->header('Content-Type', 'text/json');
     if ($validator->fails()) {
         return $failure;
     }
     $subscription = new Subscription();
     $subscription->email = Input::get('email');
     $subscription->active = 1;
     $subscription->save();
     $email = Input::get('email');
     $subject = "Subscribe {$email} to Newsletter";
     #Shoot email to subscription service
     Mail::send('emails.subscription', array('email' => $email), function ($message) use($subject) {
         $message->to('*****@*****.**')->subject($subject);
     });
     $contents = json_encode(['message' => 'Your subscription was successful.']);
     $success = Response::make($contents, 200);
     $success->header('Content-Type', 'text/json');
     return $success;
 }
 public function create($data, $save = true)
 {
     $sbc = new Subscription($this, $data);
     if ($save) {
         $sbc->save();
     }
     return $sbc;
 }
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Subscription();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Subscription'])) {
         $model->attributes = $_POST['Subscription'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->ID));
         }
     }
     $this->render('create', array('model' => $model));
 }
 public function subscribe()
 {
     $eventId = Utils::lookupEventId(trim(Input::get('event')));
     if (!$eventId) {
         return Response::json('', 500);
     }
     $subscription = Subscription::where('account_id', '=', Auth::user()->account_id)->where('event_id', '=', $eventId)->first();
     if (!$subscription) {
         $subscription = new Subscription();
         $subscription->account_id = Auth::user()->account_id;
         $subscription->event_id = $eventId;
     }
     $subscription->target_url = trim(Input::get('target_url'));
     $subscription->save();
     return Response::json('{"id":' . $subscription->id . '}', 201);
 }
 function __Construct($user, $dictionary)
 {
     parent::__Construct(get_class());
     $success = false;
     $message = '';
     if (HTTP::IsPost()) {
         //inputs
         $subscriptionId = Params::GetLong('subscriptionId');
         $name = Params::Get('name');
         //load subscription
         $subscription = new Subscription($subscriptionId);
         $subscription->setName($name);
         $subscription->save();
         $success = true;
     } else {
         $message = "NO DATA POSTED";
     }
     //done
     $this->jsonData = array('success' => $success, 'message' => $message);
 }
 public function cancelSubscription($userId, $validateUsersCount = true)
 {
     $result = ['error' => 1, 'message' => "Error canceling subscription. Please contact support about this issue"];
     $ipn = new SubscriptionsIPN();
     $ipn->configureDatabase($userId);
     /* clear subscription plan restrictions */
     unset($_SESSION['subscriptionPlanOptions']);
     /**/
     $gsSubscriptions = Subscription::getActiveSubscriptions();
     if (count($gsSubscriptions) != 1) {
         PayPalIPN::log(['message' => "Error. Can\\'t cancel subscription. User has no active subscriptions", 'level' => PayPalIPN::LOG_LEVEL_ERROR, 'user_id' => $userId]);
     }
     $subscription = $gsSubscriptions[0];
     $subscriptionPlan = new SubscriptionPlan();
     $subscriptionPlan->load($subscription['plan_id']);
     if (!$this->validateUsersCount() && $validateUsersCount) {
         $result = ['error' => 2, 'message' => 'Error, wrong users count'];
     }
     /* free subscription */
     if ($subscriptionPlan->service_provider == 'getscorecard' && $subscriptionPlan->service_name == 'free') {
         $recordId = $subscription['subId'];
         $subscription = new Subscription();
         $subscription->load($recordId);
         $subscription->status = Subscription::STATUS_CANCELED;
         $subscription->save();
         $result = ['error' => 0, 'message' => 'success. Subscription canceling.'];
     } else {
         if (!$subscription['subscription_id']) {
             PayPalIPN::log(['message' => "Error. Can\\'t cancel subscription. Wrong subscription id", 'level' => PayPalIPN::LOG_LEVEL_ERROR, 'user_id' => $userId]);
         }
         $lastTransaction = $ipn->getLastActiveTransactionBySubscription($subscription['subId']);
         $transactionId = $lastTransaction['txn_id'];
         $subscriptionId = $subscription['subscription_id'];
         $refundAmount = $ipn->getTransactionRefundAmount($lastTransaction);
         $cancelSubscriptionResult = $ipn->changeSubscriptionStatus($subscriptionId, 'Cancel');
         $refundTransactionResult = $ipn->refundTransaction($lastTransaction, $refundAmount);
         if ($cancelSubscriptionResult['ACK'] == "Success" && $refundTransactionResult['ACK'] == "Success") {
             $subscription = new Subscription();
             $subscription->loadBySubscriptionId($subscriptionId);
             $subscription->status = Subscription::STATUS_CANCELING;
             $subscription->save();
             $result = ['error' => 0, 'message' => 'success. Subscription canceling.'];
             PayPalIPN::log(['txn_id' => $transactionId, 'subscr_id' => $subscriptionId, 'message' => "Subscription canceling", 'level' => PayPalIPN::LOG_LEVEL_INFO, 'data' => '', 'user_id' => $userId]);
         } else {
             PayPalIPN::log(['txn_id' => $transactionId, 'subscr_id' => $subscriptionId, 'message' => "Error. Can\\'t cancel subscription. Rejected by PayPal", 'level' => PayPalIPN::LOG_LEVEL_ERROR, 'data' => json_encode(['cancelSubscriptionResult' => $cancelSubscriptionResult, 'refundTransactionResult' => $refundTransactionResult]), 'user_id' => $userId]);
         }
     }
     return $result;
 }
Ejemplo n.º 7
0
 public function json($method = null)
 {
     $response = array('result' => 0);
     switch ($method) {
         case 'subscribe':
             if (Request::get('Email')) {
                 $Subscription = new Subscription();
                 if ($Subscription->findSize(array('Email = ' . Request::get('Email')))) {
                     $response['result'] = 1;
                     $response['msg'] = 'Данный E-mail уже есть в базе подписчиков';
                 } else {
                     $Subscription->Email = Request::get('Email');
                     if ($Subscription->save()) {
                         $Email = new Email_Subscription($Subscription);
                         $Email->send();
                         $response['result'] = 1;
                         $response['msg'] = 'Вы успешно подписались на новости';
                     } else {
                         $response['msg'] = 'Ошибка записи данных';
                     }
                 }
             }
             break;
     }
     return $this->outputJSON($response);
 }
 /**
  * createUser
  * creates a new User object (and related models)
  * from the POST data
  * --------------------------------------------------
  * @param (array) ($userdata) Array with the user data
  * @return (User) ($user) The new User object
  * --------------------------------------------------
  */
 private function createUser($userdata)
 {
     /* Create new user */
     $user = new User();
     /* Set authentication info */
     $user->email = $userdata['email'];
     $user->password = Hash::make($userdata['password']);
     $user->name = $userdata['name'];
     /* Save the user */
     $user->save();
     /* Create default settings for the user */
     $settings = new Settings();
     $settings->user()->associate($user);
     $settings->newsletter_frequency = 0;
     $settings->background_enabled = true;
     /* Save settings */
     $settings->save();
     /* Create default subscription for the user */
     $plan = Plan::where('name', 'Free')->first();
     $subscription = new Subscription();
     $subscription->user()->associate($user);
     $subscription->plan()->associate($plan);
     $subscription->status = 'active';
     $subscription->current_period_start = Carbon::now();
     $subscription->current_period_end = Carbon::now()->addDays(SiteConstants::getTrialPeriodInDays());
     $subscription->braintree_customer_id = null;
     $subscription->braintree_payment_method_token = null;
     /* Save subscription */
     $subscription->save();
     /* Return */
     return $user;
 }
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate($fid = null)
 {
     $model = new Subscription();
     $parms = array();
     if (isset($_POST['Subscription']) and isset($_POST['Subscription']['family_id'])) {
         $fid = $_POST['Subscription']['family_id'];
     }
     if (isset($fid)) {
         $family = Families::model()->findByPk($fid);
         $parms['family'] = $family;
         $dt = $this->getStartDate($family);
         $parms['start_dt'] = $dt;
         Yii::trace("SC.create: fid:" . $family->id . ", dt=" . date_format($dt, 'Y-m-d'), 'application.controllers.SubscriptionController');
     }
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Subscription'])) {
         $till = $_POST['Subscription']['till'];
         $amt = $_POST['Subscription']['amount'];
         $start_dt = new DateTime(date_format($dt, 'Y-m-d'));
         $end_dt = new DateTime(date_format($dt, 'Y-m-d'));
         $end_dt->add(new DateInterval('P' . $till . 'M'));
         $tr = Yii::app()->db->beginTransaction();
         $trans = new Transaction();
         $acct = Account::get('Family Subscriptions');
         $trans->account_id = $acct->id;
         $trans->type = 'credit';
         if ('total' == $_POST['duration']) {
             $total = $amt;
             $amt = $amt / $till;
         } else {
             $total = $till * $amt;
         }
         $trans->amount = $total;
         $trans->created = Yii::app()->dateFormatter->formatDateTime(time(), 'short', 'medium');
         $trans->creator = Yii::app()->user->id;
         $trans->descr = "Family #" . $family->id . ' subscription from ' . date_format($start_dt, 'M Y') . ' to ' . date_format($end_dt, 'M Y');
         if ($trans->save()) {
             $model = new Subscription();
             $model->paid_by = $_POST['Subscription']['paid_by'];
             $model->family_id = $family->id;
             $model->start_month = date_format($start_dt, 'n');
             $model->start_year = date_format($start_dt, 'Y');
             $model->end_month = date_format($end_dt, 'n');
             $model->end_year = date_format($end_dt, 'Y');
             $model->amount = $amt;
             $model->trans_id = $trans->id;
             if ($model->save()) {
                 $tr->commit();
                 $this->redirect(array('view', 'id' => $model->id));
                 return;
             }
         }
         $tr->rollback();
     }
     $parms['model'] = $model;
     $this->render('create', $parms);
 }
Ejemplo n.º 10
0
 public function postPayment()
 {
     if (Auth::check()) {
         $rules = array('paylane_token' => 'required', 'first_name' => 'required', 'last_name' => 'required', 'email' => 'required|email', 'address' => 'required', 'zip' => 'required', 'city' => 'required', 'state' => 'required', 'company_name' => 'required_with:faktura', 'company_id' => 'required_with:faktura', 'company_address' => 'required_with:faktura', 'company_zip' => 'required_with:faktura', 'company_city' => 'required_with:faktura', 'company_state' => 'required_with:faktura');
         $validator = Validator::make(Input::all(), $rules);
         if ($validator->fails()) {
             $messages = $validator->messages();
             return Redirect::to('/konto/pro/platnosci')->withInput(Input::flash())->withErrors($validator)->with('alert', array('type' => 'error', 'content' => 'Błąd! Sprawdź wszystkie pola.'));
         } else {
             $user = Auth::user();
             $client = new Paylane\PayLaneRestClient('adubiel', 'dru9pra2');
             $card_params = array('sale' => array('amount' => 189.0, 'currency' => 'PLN', 'description' => 'Subskrypcja Hasztag.info'), 'customer' => array('name' => Input::get('first_name') . ' ' . Input::get('last_name'), 'email' => Input::get('email'), 'ip' => '127.0.0.1', 'address' => array('street_house' => Input::get('address'), 'city' => Input::get('city'), 'state' => Input::get('state'), 'zip' => Input::get('zip'), 'country_code' => 'PL')), 'card' => array('token' => Input::get('paylane_token')));
             $status = $client->cardSaleByToken($card_params);
             if ($client->isSuccess()) {
                 $subscription = Subscription::where('user_id', '=', $user->id);
                 $faktura = false;
                 if ($subscription->count() > 0) {
                     $subscription = $subscription->first();
                     $subscription->user_id = $user->id;
                     $subscription->is_active = 1;
                     $subscription->first_name = Input::get('first_name');
                     $subscription->last_name = Input::get('last_name');
                     $subscription->email = Input::get('email');
                     $subscription->address = Input::get('address');
                     $subscription->zip = Input::get('zip');
                     $subscription->city = Input::get('city');
                     $subscription->state = Input::get('state');
                     $subscription->expires_at = Carbon::now()->addDays(30);
                     if (Input::has('faktura')) {
                         $faktura = true;
                         $subscription->is_active = 1;
                         $subscription->company_name = Input::get('company_name');
                         $subscription->company_id = preg_replace('/\\D/', '', Input::get('company_id'));
                         $subscription->company_address = Input::get('company_address');
                         $subscription->company_city = Input::get('company_city');
                         $subscription->company_state = Input::get('company_state');
                         $subscription->company_zip = Input::get('company_zip');
                     }
                     $subscription->save();
                 } else {
                     $subscription = new Subscription();
                     $subscription->user_id = $user->id;
                     $subscription->first_name = Input::get('first_name');
                     $subscription->last_name = Input::get('last_name');
                     $subscription->email = Input::get('email');
                     $subscription->address = Input::get('address');
                     $subscription->zip = Input::get('zip');
                     $subscription->city = Input::get('city');
                     $subscription->state = Input::get('state');
                     $subscription->expires_at = Carbon::now()->addDays(30);
                     if (Input::has('faktura')) {
                         $faktura = true;
                         $subscription->company_name = Input::get('company_name');
                         $subscription->company_id = preg_replace('/\\D/', '', Input::get('company_id'));
                         $subscription->company_address = Input::get('company_address');
                         $subscription->company_city = Input::get('company_city');
                         $subscription->company_state = Input::get('company_state');
                         $subscription->company_zip = Input::get('company_zip');
                     }
                     $subscription->save();
                 }
                 $payment = Payment::create(array('user_id' => $user->id, 'subscription_id' => $subscription->id, 'sale_id' => $status['id_sale'], 'is_success' => 1));
                 Event::fire('invoice.email', array($user->id, $subscription->id, $payment->id, $faktura));
                 EmailNotification::where('subscription_id', '=', $subscription->id)->delete();
                 //here
                 $user->level = 2;
                 $user->save();
                 return Redirect::to('/konto/pro/subskrypcja')->with('alert', array('type' => 'success', 'content' => 'Dziękujemy! Płatność zaakceptowana.'));
             } else {
                 if (isset($status['error'])) {
                     return Redirect::back()->with('alert', array('type' => 'error', 'content' => $status['error']['error_description']));
                     return Redirect::back()->with('alert', array('type' => 'error', 'content' => $status['error']['description']));
                 } else {
                     return Redirect::back()->with('alert', array('type' => 'error', 'content' => 'Błąd! Coś poszło nie tak!'));
                 }
             }
         }
     }
 }
Ejemplo n.º 11
0
 /**
  * @param $myPost
  * @throws Exception
  */
 public function processPayment($myPost)
 {
     $customData = $this->getCustomData($myPost);
     $userId = $customData['user_id'];
     $userService = new UserService();
     $userInfo = $userService->getUserData($userId);
     $userEmail = $userInfo['email'];
     $subscriptionPlan = $this->getSubscriptionPlan($myPost);
     if ($this->validateSubscription($subscriptionPlan, $myPost)) {
         $subscription = new Subscription();
         $subscription->loadBySubscriptionId($myPost['subscr_id']);
         $transactionService = new PaypalTransaction();
         $transaction = $transactionService->getTransactionById($myPost['txn_id']);
         if ($subscription->id) {
             //subscription exists
             if ($myPost['txn_type'] == 'subscr_payment') {
                 if (!$transaction) {
                     $subscription->status = Subscription::STATUS_ACTIVE;
                     $subscription->payment_date = $myPost['payment_date'];
                     $subscription->updated_date = date('Y-m-d H:i:s');
                     $subscription->save();
                     self::log(['message' => self::INFO_SUBSCRIPTION_PAYMENT, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
                     $myPost['relation_id'] = $subscription->id;
                     //@TODO remake it
                     $transactionService = new PaypalTransaction();
                     $myPost['relation_type'] = PaypalTransaction::TRANSACTION_RELATION_SUBSCRIPTION;
                     $transactionService->createTransaction($myPost);
                     self::log(['message' => self::INFO_TRANSACTION_CREATED, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
                 } else {
                     self::log(['message' => self::WARNING_DUPLICATE_TRANSACTION_IPN, 'data' => '', 'level' => self::LOG_LEVEL_WARNING], $myPost);
                 }
             }
             if ($myPost['txn_type'] == 'subscr_cancel') {
                 $subscription->status = Subscription::STATUS_CANCELED;
                 $subscription->updated_date = date('Y-m-d H:i:s');
                 $subscription->save();
                 self::log(['message' => self::INFO_SUBSCRIPTION_CANCELED, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
             }
             if ($myPost['txn_type'] == 'subscr_eot') {
                 $subscription->status = Subscription::STATUS_CANCELED;
                 $subscription->updated_date = date('Y-m-d H:i:s');
                 $subscription->save();
                 self::log(['message' => self::INFO_SUBSCRIPTION_EXPIRED, 'level' => self::LOG_LEVEL_WARNING], $myPost);
             }
             if ($myPost['txn_type'] == 'subscr_signup') {
                 self::log(['message' => self::INFO_SUBSCRIPTION_SIGNUP, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
             }
             if ($myPost['txn_type'] == 'subscr_modify') {
                 $subscription->status = Subscription::STATUS_CANCELED;
                 $subscription->updated_date = date('Y-m-d H:i:s');
                 $subscription->save();
                 self::log(['message' => self::INFO_SUBSCRIPTION_MODIFIED, 'level' => self::LOG_LEVEL_WARNING], $myPost);
             }
             if ($myPost['payment_status'] == 'Refunded' && $myPost['reason_code'] == 'refund') {
                 //refund transaction
                 $transactionService = new PaypalTransaction();
                 $transactionService->updateTransaction($myPost['parent_txn_id'], ['payment_status' => 'Refunded']);
                 $myPost['txn_type'] = self::TXN_TYPE_SUBSCR_REFUND;
                 $myPost['relation_id'] = $subscription->id;
                 //@TODO refactor this
                 $myPost['relation_type'] = PaypalTransaction::TRANSACTION_RELATION_SUBSCRIPTION;
                 $transactionService = new PaypalTransaction();
                 $transactionService->createTransaction($myPost);
                 self::log(['message' => self::INFO_PAYMENT_REFUND, 'level' => self::LOG_LEVEL_INFO], $myPost);
             }
         } else {
             if ($myPost['txn_type'] == 'subscr_payment') {
                 //@TODO remake it
                 $serviceProvider = $subscriptionPlan->service_provider;
                 $activeSubscriptions = Subscription::getActiveSubscriptions($userId, $serviceProvider);
                 /* check duplicate subscriptions*/
                 if (count($activeSubscriptions) > 0) {
                     self::log(['message' => self::ERROR_ACTIVE_SUBSCRIPTION_DUPLICATE, 'level' => self::LOG_LEVEL_ERROR], $myPost);
                 } elseif (!$transaction) {
                     $subscription = new Subscription();
                     $subscription->user_id = $userId;
                     $subscription->plan_id = $subscriptionPlan->id;
                     $subscription->subscription_id = $myPost['subscr_id'];
                     $subscription->created_date = date("Y-m-d H:i:s");
                     $subscription->updated_date = date('Y-m-d H:i:s');
                     $subscription->payment_date = $myPost['payment_date'];
                     $subscription->items_count = $customData['items_count'];
                     $subscription->status = Subscription::STATUS_ACTIVE;
                     $subscriptionId = $subscription->save();
                     self::log(['message' => self::INFO_SUBSCRIPTION_CREATED, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
                     $myPost['relation_id'] = $subscriptionId;
                     //@TODO refactor this
                     $myPost['relation_type'] = PaypalTransaction::TRANSACTION_RELATION_SUBSCRIPTION;
                     $transactionService = new PaypalTransaction();
                     $transactionService->createTransaction($myPost);
                     self::log(['message' => self::INFO_TRANSACTION_CREATED, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
                 } else {
                     self::log(['message' => self::WARNING_DUPLICATE_TRANSACTION_IPN, 'data' => '', 'level' => self::LOG_LEVEL_WARNING], $myPost);
                 }
             }
             if ($myPost['txn_type'] == 'subscr_signup') {
                 self::log(['message' => self::INFO_SUBSCRIPTION_SIGNUP, 'data' => '', 'level' => self::LOG_LEVEL_INFO], $myPost);
             }
             if ($myPost['txn_type'] == 'subscr_modify') {
                 self::log(['message' => self::INFO_SUBSCRIPTION_MODIFIED, 'level' => self::LOG_LEVEL_WARNING], $myPost);
             }
         }
     } else {
         self::log(['message' => self::VALIDATION_FAILED, 'level' => self::LOG_LEVEL_ERROR], $myPost);
         echo self::VALIDATION_FAILED;
         die;
     }
 }
 /**
  * Subscribe $user to a given $object
  *
  * @param User $user
  * @param ProjectObject $object
  * @return boolean
  */
 function subscribe($user, $object)
 {
     if (!$object->can_have_subscribers) {
         return new InvalidParamError('$object', $object, '$object does not support subscribers', true);
     }
     // if
     if (Subscriptions::isSubscribed($user, $object, false)) {
         return true;
     }
     // if
     $subscription = new Subscription();
     $subscription->setUserId($user->getId());
     $subscription->setParentId($object->getId());
     $save = $subscription->save();
     if ($save && !is_error($save)) {
         Subscriptions::dropUserCache($user);
         return true;
     }
     // if
     return $save;
 }
Ejemplo n.º 13
0
 protected function addSubscription($transaction)
 {
     $package = Package::first(array("id = ?" => $transaction->property_id));
     $items = json_decode($package->item);
     $user = User::first(array("id = ?" => $transaction->user_id));
     $user->live = 1;
     $user->save();
     $days = (int) $package->period;
     foreach ($items as $key => $value) {
         $s = new Subscription(array("user_id" => $user->id, "item_id" => $value, "period" => $days, "expiry" => strftime("%Y-%m-%d", strtotime("+" . ($days + 1) . " Day")), "is_promo" => false));
         $s->save();
     }
     $this->session($user);
     $this->redirect('/member/index.html');
 }
Ejemplo n.º 14
0
 private function modifySubscription(Subscription $subs, $price)
 {
     $old_price = (int) $subs->CurrentPrice;
     if ($price != $old_price) {
         $subs->CurrentPrice = $price;
         if (!$subs->save()) {
             throw new CDbException("save new subs failed");
         }
         return true;
     }
     return false;
 }
Ejemplo n.º 15
0
 /**
  * @param $userId
  * @param $serviceProvider
  * @return array|bool
  * @throws Exception
  */
 public function cancelSubscription($userId, $serviceProvider)
 {
     $activeSubscription = Subscription::getActiveSubscriptions($userId, $serviceProvider);
     if (!$activeSubscription) {
         PaypalSubscription::log(['message' => "Error. Can\\'t cancel subscription. User has no active subscriptions", 'level' => PaypalSubscription::LOG_LEVEL_ERROR, 'user_id' => $userId]);
         return false;
     }
     /* free subscription */
     if ((int) $activeSubscription['price'] == 0) {
         $recordId = $activeSubscription['subId'];
         $subscription = new Subscription();
         $subscription->load($recordId);
         $subscription->status = Subscription::STATUS_CANCELED;
         $subscription->save();
         $result = ['error' => 0, 'message' => 'success. Subscription canceled.'];
         return $result;
     } else {
         if (!$activeSubscription['subscription_id']) {
             PaypalSubscription::log(['message' => "Error. Can\\'t cancel subscription. Wrong subscription id", 'level' => PaypalSubscription::LOG_LEVEL_ERROR, 'user_id' => $userId]);
             return false;
         }
         $config = Config::get();
         $paypalService = new PaypalSubscription($config);
         $lastTransaction = $paypalService->getLastActiveTransactionBySubscription($activeSubscription['subId']);
         $transactionId = $lastTransaction['txn_id'];
         $subscriptionId = $activeSubscription['subscription_id'];
         $refundAmount = $paypalService->getTransactionRefundAmount($lastTransaction);
         $cancelSubscriptionResult = $paypalService->changeSubscriptionStatus($subscriptionId, 'Cancel');
         $refundTransactionResult = $paypalService->refundTransaction($lastTransaction, $refundAmount);
         if ($cancelSubscriptionResult['ACK'] == "Success" && $refundTransactionResult['ACK'] == "Success") {
             $subscription = new Subscription();
             $subscription->loadBySubscriptionId($subscriptionId);
             $subscription->status = Subscription::STATUS_CANCELING;
             $subscription->save();
             $result = ['error' => 0, 'message' => 'success. Subscription canceling.'];
             PaypalSubscription::log(['txn_id' => $transactionId, 'subscr_id' => $subscriptionId, 'message' => "Subscription canceling", 'level' => PaypalSubscription::LOG_LEVEL_INFO, 'data' => '', 'user_id' => $userId]);
             return $result;
         } else {
             PaypalSubscription::log(['txn_id' => $transactionId, 'subscr_id' => $subscriptionId, 'message' => "Error. Can\\'t cancel subscription. Rejected by PayPal", 'level' => PaypalSubscription::LOG_LEVEL_ERROR, 'data' => json_encode(['cancelSubscriptionResult' => $cancelSubscriptionResult, 'refundTransactionResult' => $refundTransactionResult]), 'user_id' => $userId]);
             return false;
         }
     }
 }
Ejemplo n.º 16
0
 private function modifyPriceOfSubscription(Subscription $subs)
 {
     $old_price = (int) $subs->CurrentPrice;
     $price = (int) $this->_price;
     if ($price != $old_price) {
         $subs->CurrentPrice = $price;
         try {
             if (!$subs->save()) {
                 new \Error(5, null, json_encode($subs->getErrors()));
             }
         } catch (Exception $e) {
             new \Error(5, null, $e->getMessage());
         }
         echo "current price of subscription " . $subs->ID . " is updated\n";
         return true;
     }
     return false;
 }
Ejemplo n.º 17
0
 public function renewSubscription($curr_subscription)
 {
     if (!array_key_exists($curr_subscription->status_id, $this->dateIntervals)) {
         // what to do ???
         $ret = (object) ['error' => 'Error: Invalid status_id for subscription $curr_subscription->id - $curr_subscription->status_id'];
         break;
     }
     $new_subscription = new Subscription();
     //clone $curr_subscription;
     //unset($new_subscription->id);
     $new_subscription->company_id = $curr_subscription->company_id;
     $new_subscription->service_id = $curr_subscription->service_id;
     $new_subscription->description = $curr_subscription->description;
     $new_subscription->price = $curr_subscription->price;
     $new_subscription->invoice_periods_id = $curr_subscription->invoice_periods_id;
     $new_subscription->status_id = $curr_subscription->status_id;
     $new_subscription->subscription_start = date("Y-m-d", strtotime($curr_subscription->subscription_end . " +1 day"));
     $new_subscription->subscription_end = date("Y-m-d", strtotime($curr_subscription->subscription_end . $this->dateIntervals[$curr_subscription->status_id]));
     $new_subscription->invoice_id = null;
     $new_subscription->status_date = date("Y-m-d");
     $new_subscription->total_price = $this->subscriptionTotalPrice($new_subscription->subscription_start, $new_subscription->subscription_end, $new_subscription->invoice_periods_id, $new_subscription->price);
     // prices update ???
     $new_subscription->save();
     error_log(json_encode($new_subscription));
     // disable old subscription
     $curr_subscription->status_id = Config::get('eenvoudcrm.subscriptions_status_ended.id');
     $curr_subscription->status_date = date("Y-m-d");
     $curr_subscription->save();
     error_log(json_encode($curr_subscription));
 }