PATH:
home
/
letacommog
/
letaweb
/
admin
/
controllers
<?php // Controller for Paypal IPN Listener class IpnController extends PController { public $layout = 'column_checkout'; public function actionTest() { echo 'IPN listener testing'; } protected function sendTwocheckoutDebugEmail($subscription_id,$message,$type) { try { $subscription = Subscription::model()->findByPk((int)$subscription_id); if(isset($subscription)) { return; } $this->logMessage($subscription_id, $message,$type); $email_body = '$HTTP_POST_VARS:'."\n\n"; template = MailTemplate::model()->find("name=:name", array(":name"=> $type)); if (isset($template)) { $message_dump = ""; foreach ($message as $k => $v) { $message_dump .= $key.'='.$value."\n"; } $title = $template->title; $content = $template->content; $params = array( 'message_dump' => $message_dump, ); $content = Functions::replaceParams($template->content, $params); $user = $subscription->user; Yii::app()->mailer->AddAddress($user->email); Yii::app()->mailer->Subject = $title; Yii::app()->mailer->MsgHTML($content); Yii::app()->mailer->Send(); } } catch(Exception $e) { } } protected function sendStripeDebugEmail($subscription_id,$message,$type) { try { $subscription = Subscription::model()->findByPk((int)$subscription_id); if(isset($subscription)) { return; } $this->logMessage($subscription_id, $message,$type); template = MailTemplate::model()->find("name=:name", array(":name"=> $type)); if (isset($template)) { $message_dump = ""; foreach ($message as $k => $v) { $message_dump .= $key.'='.$value."\n"; } $title = $template->title; $content = $template->content; $params = array( 'message_dump' => $message_dump, ); $content = Functions::replaceParams($template->content, $params); $user = $subscription->user; Yii::app()->mailer->AddAddress($user->email); Yii::app()->mailer->Subject = $title; Yii::app()->mailer->MsgHTML($content); Yii::app()->mailer->Send(); } } catch(Exception $e) { } } protected function sendPaypalDebugEmail($subscription_id,$message,$type) { try { $subscription = Subscription::model()->findByPk((int)$subscription_id); if(isset($subscription)) { return; } $this->logMessage($subscription_id, $message, $type); $email_body = '$HTTP_POST_VARS:'."\n\n"; template = MailTemplate::model()->find("name=:name", array(":name"=> $type)); if (isset($template)) { $message_dump = ""; foreach ($message as $k => $v) { $message_dump .= $key.'='.$value."\n"; } $title = $template->title; $content = $template->content; $params = array( 'message_dump' => $message_dump, ); $content = Functions::replaceParams($template->content, $params); $user = $subscription->user; Yii::app()->mailer->AddAddress($user->email); Yii::app()->mailer->Subject = $title; Yii::app()->mailer->MsgHTML($content); Yii::app()->mailer->Send(); } } catch(Exception $e) { } } protected function logMessage($subscription_id, $message,$type) { $ipn_log = New IPNLogMessage(); $now = date('Y-m-d H:i:s'); $ipn_log->date_added = $now; $ipn_log->subscription_id = $subscription_id; $ipn_log->type = $type; $ipn_log->message = serialize($message); $ipn_log->save(); } public function actionStripe() { $payment = Yii::app()->payment->getPayment("stripe"); if(!isset($payment)) { return; } // Retrieve the request's body and parse it as JSON $input = @file_get_contents("php://input"); $event_json = json_decode($input); $event = Stripe_Event::retrieve($event_json->id); switch($event->type) { case 'customer.created': break; case 'customer.subscription.created': break; case 'invoice.created': break; case 'charge.succeeded': break; case 'invoice.created': break; case 'charge.succeeded': break; case 'invoice.payment_succeeded': $profile_id = $event->data->object->customer; $subscription = Subscription::model()->find(("profile_id=:profile_id and payment_type=:payment_type", array((":profile_id"=>$profile_id, ":payment_type"=>"stripe"))); if (!isset($subscription)) { break; } $site = Site::model()->findByPk($subscription->site_id); if (!isset($site)) { return; } $site->plan_id = $subscription->plan_id; $site->can_expire = 1; $subscription->cycle == 'annual' ? $site->extendByYear(1) : $site->extendByMonth(1); $site->save(); $subscription->is_active = 1; $subscription->status = 'Active'; $subscription->save(); $purchase = new Purchase(); $purchase->subscription_id = $subscription->id; $purchase->site_id = $site->id; $purchase->cycle = $subscription->cycle; $purchase->amount = $event->data->object->total; $purchase->currency_code = $event->data->object->total->currency; $purchase->token = ""; $purchase->transaction_id = ''; $now = date('Y-m-d H:i:s'); $purchase->date_added = $now; $purchase->date_modified = $now; $purchase->creator_id = $subscription->creator_id; $purchase->save(); $this->sendStripeDebugEmail($subscription->id,$event->jsonSerialize(), "stripe_subscription_payment_succed"); break; case 'invoice.payment_failed. ': break; case 'customer.subscription.deleted': $profile_id = $event->data->object->customer; $subscription = Subscription::model()->find(("profile_id=:profile_id and payment_type=:payment_type", array((":profile_id"=>$profile_id, ":payment_type"=>"stripe"))); if (!isset($subscription)) { break; } if($subscription->is_active == 1) { $site = $subscription->site; $subscription->is_active = 0; $subscription->status = 'Cancel'; $subscription->save(); } $this->sendStripeDebugEmail($subscription->id,$event->jsonSerialize(), "stripe_customer_subscription_deleted"); break; } http_response_code(200); } public function actionTwocheckout() { echo 'IPN listener testing'; $payment = Yii::app()->payment->getPayment("twocheckout"); if(!isset($payment)) { return; } //Assign the returned parameters to an array $params = array(); foreach ($_POST as $k => $v) { $params[$k] = $v; } //Check the MD5 Hash to determine the validity of the message $message = Twocheckout_Notification::check($params, Yii::app()->payment->twocheckout_secret_work); if ($message['code'] == 'Success') { //Preform different actions based on the message_type switch ($params['message_type']) { case 'ORDER_CREATED': $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_order_created"); break; case 'FRAUD_STATUS_CHANGED': if ($params['fraud_status'] == 'fail') { //Get the user id and disable access $id = $params['vendor_order_id']; $subscription = Subscription::model()->findByPk((int)$id); if (!isset($subscription)) { break; } if($subscription->is_active == 1) { $site = $subscription->site; $subscription->is_active = 0; $subscription->status = 'Cancel'; $subscription->save(); } $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_fraud_status_fail"); } break; case 'RECURRING_INSTALLMENT_FAILED': $id = $params['vendor_order_id']; $subscription = Subscription::model()->findByPk((int)$id); if (!isset($subscription)) { break; } $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_recurring_installment_failed"); break; case 'RECURRING_INSTALLMENT_SUCCESS': //Get the user id and enable access $id = $params['vendor_order_id']; $subscription = Subscription::model()->findByPk((int)$id); if (!isset($subscription)) { break; } $site = Site::model()->findByPk($subscription->site_id); if (!isset($site)) { return; } $site->plan_id = $subscription->plan_id; $site->can_expire = 1; $subscription->cycle == 'annual' ? $site->extendByYear(1) : $site->extendByMonth(1); $site->save(); $subscription->is_active = 1; $subscription->status = 'Active'; $subscription->save(); $purchase = new Purchase(); $purchase->subscription_id = $subscription->id; $purchase->site_id = $site->id; $purchase->cycle = $subscription->cycle; $purchase->amount = $data['amount']; $purchase->currency_code = $message['list_currency']; $purchase->token = ""; $purchase->transaction_id =''; $now = date('Y-m-d H:i:s'); $purchase->date_added = $now; $purchase->date_modified = $now; $purchase->creator_id = $subscription->creator_id; $purchase->save(); $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_recurring_installment_success"); break; case 'RECURRING_STOPPED': //Get the user id and enable access $id = $params['vendor_order_id']; $subscription = Subscription::model()->findByPk((int)$id); if (!isset($subscription)) { break; } $subscription->is_active = 0; $subscription->status = 'Stop'; $subscription->save(); $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_recurring_stop"); break; case 'RECURRING_STOPPED': //Get the user id and enable access $id = $params['vendor_order_id']; $subscription = Subscription::model()->findByPk((int)$id); if (!isset($subscription)) { break; } $subscription->is_active = 1; $subscription->status = 'Active'; $subscription->save(); $this->sendTwocheckoutDebugEmail($subscription_id,$message, "twocheckout_recurring_restarted"); break; } } } public function actionIndex() { $payment = Yii::app()->payment->getModule("paypal"); if(!isset($payment)) { return; } $response = $payment->IPNListener(); if ($response == false) { return; } $type = $response->getTransactionType(); $data = $response->getRawData(); switch ($type) { case 'recurring_payment_profile_cancel': if (isset($data['recurring_payment_id'])) { $profile_id = $data['recurring_payment_id']; $subscription = Subscription::model()->find('is_active=1 and profile_id=:profile_id', array(':profile_id' => $profile_id)); if (!isset($subscription)) { break; } $subscription->is_active = 0; $subscription->status = 'Cancel'; $subscription->save(); $this->sendPaypalDebugEmail($subscription_id,$data, "paypal_recurring_cancel"); } break; case 'recurring_payment': if (isset($data['recurring_payment_id']) && isset($data['payment_status']) && ($data['payment_status'] == 'Completed' || $data['payment_status'] == 'Pending')) { $profile_id = $data['recurring_payment_id']; $subscription = Subscription::model()->find('is_active=1 and profile_id=:profile_id', array(':profile_id' => $profile_id)); if (!isset($subscription)) { return; } $transaction_id = $response->getTransactionId(); $purchase = Purchase::model()->find('transaction_id=:transaction_id', array(':transaction_id' => $transaction_id)); if (isset($purchase)) { return; } $site = Site::model()->findByPk($subscription->site_id); if (!isset($site)) { return; } $site->plan_id = $subscription->plan_id; $site->can_expire = 1; $subscription->cycle == 'annual' ? $site->extendByYear(1) : $site->extendByMonth(1); $site->save(); $purchase = new Purchase(); $purchase->subscription_id = $subscription->id; $purchase->site_id = $site->id; $purchase->cycle = $subscription->cycle; $purchase->amount = $data['amount']; $purchase->currency_code = $data['currency_code']; $purchase->token = $GetExpressCheckoutDetailsResponseDetails->Token; $purchase->transaction_id = $response->getTransactionId(); $now = date('Y-m-d H:i:s'); $purchase->date_added = $now; $purchase->date_modified = $now; $purchase->creator_id = $subscription->creator_id; $purchase->creator_id = $subscription->creator_id; $purchase->save(); $this->sendPaypalDebugEmail($subscription_id,$data, "paypal_recurring_success"); } break; case 'recurring_payment_profile_created': $this->sendPaypalDebugEmail($subscription_id,$data, "paypal_recurring_created"); break; } } }
[+]
..
[-] AjaxController.php
[edit]
[-] SiteController.php
[edit]
[-] IpnController.php
[edit]
[-] StatController.php
[edit]
[-] BuilderController.php
[edit]
[-] BlogController.php
[edit]
[-] UserController.php
[edit]
[-] CheckoutController.php
[edit]
[-] PaypalController.php
[edit]