public function updatePayment() { $request = Ajde::app()->getRequest(); $username = $request->getParam('Username'); $password = $request->getParam('Password'); $id = $request->getParam('ID'); $secret = $request->getParam('Reference'); $paymentMethod = $request->getParam('PaymentMethod'); $state = $request->getParam('PaymentState'); $description = $request->getParam('Description'); if ($username != Config::get('shopWedealCallbackUsername')) { Ajde_Log::log('Invalid username for callback of transaction ' . $secret); return false; } if ($password != Config::get('shopWedealCallbackPassword')) { Ajde_Log::log('Invalid password for callback of transaction ' . $secret); return false; } Ajde_Model::register('shop'); $transaction = new TransactionModel(); if (!$transaction->loadByField('secret', $secret)) { Ajde_Log::log('Could not find transaction for PayPal payment with txn id ' . $txn_id . ' and transaction secret ' . $secret); } $request = array("type" => 'query', "merchant" => array("username" => Config::get('shopWedealUsername'), "password" => Config::get('shopWedealPassword'), "reference" => $secret)); $res = $this->sendRequest($request); if ($res['success'] === true) { $response = $res['response']->paymentinfo; // get transaction details if ((int) $response->count == 0) { $transaction->payment_status = 'refused'; $transaction->save(); Ajde_Log::log('iDeal callback didn\'t return any transaction for ' . $secret); return false; } elseif (self::isPaid((string) $response->state)) { if ((string) $response->id != $id) { Ajde_Log::log('IDs don\'t match for iDeal callback of transaction ' . $secret); return false; } $details = 'AMOUNT: ' . (string) $response->amount . PHP_EOL . 'PAYER_NAME: ' . (string) $response->consumername . PHP_EOL . 'PAYER_ACCOUNT: ' . (string) $response->consumeraccount . PHP_EOL . 'PAYER_CITY: ' . (string) $response->consumercity . PHP_EOL . 'PAYER_COUNTRY: ' . (string) $response->consumercountry . PHP_EOL . 'WEDEAL_ID: ' . (string) $response->id; $transaction->payment_details = $details; $transaction->payment_status = 'completed'; $transaction->save(); return true; } elseif (self::isRefused((string) $response->state)) { $transaction->payment_status = 'refused'; $transaction->save(); Ajde_Log::log("iDeal payment refused with state " . (string) $response->state); return false; } Ajde_Log::log("iDeal payment callback called with state " . (string) $response->state . " but no status change for transaction " . $secret . " detected"); return false; } else { Ajde_Log::log("Wedeal::updatePayment() failed because: " . $res['response']); return false; } }
public static function __bootstrap() { Ajde_Model::register('user'); if (Ajde_User::getLoggedIn()) { return true; } $user = new UserModel(); $user->verifyCookie(); return true; }
public function addJson() { Ajde_Model::register($this); $cart = new CartModel(); $cart->loadCurrent(); $entity = Ajde::app()->getRequest()->getPostParam('entity'); $entity_id = Ajde::app()->getRequest()->getPostParam('entity_id'); $qty = Ajde::app()->getRequest()->getPostParam('qty'); $cart->addItem($entity, $entity_id, $qty); return array('success' => true); }
/** * * @return UserModel */ protected function getLoggedInUser() { if (!isset($this->_user)) { foreach ($this->_registerUserModels as $model) { Ajde_Model::register($model); } $user = new UserModel(); $this->_user = $user->getLoggedIn(); } return $this->_user; }
public function beforeInvoke() { foreach ($this->_registerAclModels as $model) { Ajde_Model::register($model); } if (!in_array($this->getAction(), $this->_allowedActions) && $this->hasAccess() === false) { Ajde::app()->getRequest()->set('message', __('Please login to continue / No access')); Ajde::app()->getResponse()->dieOnCode(Ajde_Http_Response::RESPONSE_TYPE_UNAUTHORIZED); } else { return true; } }
function check() { // Register models Ajde_Model::register($this); // Ensure right view when coming from other action $this->setView(Ajde_View::fromRoute('browser/check')); // Get browsers $browsers = new BrowserCollection(); $browsers->orderBy("sort"); $browsers->load(); // Set vars and return $this->getView()->assign("browsers", $browsers); return $this->render(); }
public function checkout() { Ajde_Model::register($this); // Get existing transaction $transaction = new TransactionModel(); $session = new Ajde_Session('AC.Shop'); $session->has('currentTransaction') && $transaction->loadByPK($session->get('currentTransaction')); $cart = new CartModel(); $cart->loadCurrent(); $this->getView()->assign('cart', $cart); $this->getView()->assign('user', $this->getLoggedInUser()); $this->getView()->assign('transaction', $transaction); return $this->render(); }
function view() { // Register models Ajde_Model::register('browser'); // Menu colors $colors = array('html5' => 'f58220', 'wordpress' => '096aa5', 'drupal' => '009edc', 'typo3' => '3ab54a', 'joomla' => 'e52525'); // Fast cycling browsers $fastCycle = array('chrome', 'firefox', 'opera'); // Get browsers $browsers = new BrowserCollection(); $browsers->orderBy("sort"); $browsers->load(); // Set vars and return $this->getView()->assign("browsers", $browsers); $this->getView()->assign("colors", $colors); $this->getView()->assign("fastCycle", $fastCycle); return $this->render(); }
/** * * @return UserModel */ public function loadCurrent() { Ajde_Model::register('user'); $loaded = false; if ($user = UserModel::getLoggedIn()) { // Do we have a saved cart for logged in user? if ($this->loadByUser($user) === false) { $this->user = $user->getPK(); $this->insert(); } } else { // Do we have a cart from IP address? if ($this->loadByClient() === false) { $this->client = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); $this->insert(); } } return true; }
public static function mergeUserToClient() { Ajde_Model::register('user'); Ajde_Model::register('shop'); if ($user = Ajde_User::getLoggedIn()) { // Do we have a saved cart for logged in user? $userCart = new CartModel(); if ($userCart->loadByUser($user)) { // Do we have a saved cart for client? $clientCart = new CartModel(); if ($clientCart->loadByClient() === false) { $clientCart->client = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); $clientCart->insert(); } foreach ($userCart->getItems() as $item) { /* @var $item Ajde_Shop_Cart_Item */ $clientCart->addItem($item->getEntity(), null, $item->getQty()); } $userCart->delete(); } } }
public function browser() { Ajde_Model::register("browser"); return $this->render(); }
public function updatePayment() { // PHP 4.1 // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&{$key}={$value}"; } // post back to PayPal system to validate $header = ''; $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen($this->isSandbox() ? 'ssl://www.sandbox.paypal.com' : 'ssl://www.paypal.com', 443, $errno, $errstr, 30); // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; Ajde_Model::register('shop'); $secret = $_POST['custom']; $transaction = new TransactionModel(); if (!$transaction->loadByField('secret', $secret)) { Ajde_Log::log('Could not find transaction for PayPal payment with txn id ' . $txn_id . ' and transaction secret ' . $secret); } if (!$fp) { // HTTP ERROR } else { fputs($fp, $header . $req); while (!feof($fp)) { $res = fgets($fp, 1024); if (strcmp($res, "VERIFIED") == 0) { // check the payment_status is Completed if ($payment_status == 'Completed') { $details = 'AMOUNT: ' . $payment_amount . PHP_EOL . 'CURRENCY: ' . $payment_currency . PHP_EOL . 'PAYER_EMAIL: ' . $payer_email . PHP_EOL . 'RECEIVER_EMAIL: ' . $receiver_email . PHP_EOL . 'TXN_ID: ' . $txn_id . PHP_EOL; $transaction->payment_details = $details; $transaction->payment_status = 'completed'; $transaction->save(); } else { $transaction->payment_status = 'refused'; $transaction->save(); Ajde_Log::log('Status is not Completed but ' . $payment_status . ' for PayPal payment with txn id ' . $txn_id . ' and transaction secret ' . $secret); } // check that txn_id has not been previously processed // check that receiver_email is your Primary PayPal email // check that payment_amount/payment_currency are correct // process payment } else { if (strcmp($res, "INVALID") == 0) { // log for manual investigation $transaction->payment_status = 'refused'; $transaction->save(); Ajde_Log::log('Validation failed for PayPal payment with txn id ' . $txn_id); } } } fclose($fp); } }
public function paymentJson() { $request = Ajde::app()->getRequest(); $provider = $request->getPostParam('provider', false); if (empty($provider)) { return array('success' => false, 'message' => __('Please choose a payment provider')); } // Check for current transaction Ajde_Model::register($this); $transaction = new TransactionModel(); $session = new Ajde_Session('AC.Shop'); if ($session->has('currentTransaction') && $transaction->loadByPK($session->get('currentTransaction'))) { if ($transaction->payment_status !== 'pending') { return array('success' => false, 'message' => __('Payment already initiated, please refresh this page')); } } else { return array('success' => false, 'message' => __('No current transaction found')); } $transaction->payment_provider = $provider; $provider = $transaction->getProvider(); $redirectUrl = $provider->getRedirectUrl(); if ($redirectUrl !== false) { $transaction->payment_status = 'requested'; $transaction->save(); $cart = new CartModel(); $cart->loadCurrent(); $cart->emptyItems(); if ($provider->usePostProxy()) { $this->setAction('postproxy'); $proxy = $this->getView(); $proxy->assign('provider', $provider); return array('success' => true, 'postproxy' => $proxy->render()); } return array('success' => true, 'redirect' => $redirectUrl); } return array('success' => false, 'message' => 'Could not contact the payment provider, please try again'); }
function edit() { Ajde_Model::register($this); return $this->render(); }