Esempio n. 1
0
 /**
  * Is transaction payment method saved card or not
  *
  * @param \XLite\Model\Payment\Transaction $transaction Transaction
  *
  * @return boolean
  */
 protected function isSavedCardTransaction(\XLite\Model\Payment\Transaction $transaction)
 {
     return static::METHOD_SAVED_CARD == $transaction->getPaymentMethod()->getClass();
 }
Esempio n. 2
0
 /**
  * Save some payment settings from payment method to the transaction
  *
  * @param \XLite\Model\Payment\Transaction $transaction Transaction
  *
  * @return string
  */
 public function savePaymentSettingsToTransaction(\XLite\Model\Payment\Transaction $transaction, $parentTransaction = null)
 {
     if ($parentTransaction) {
         $paymentMethod = $parentTransaction->getPaymentMethod();
     } else {
         $paymentMethod = $transaction->getPaymentMethod();
     }
     foreach ($this->paymentSettingsToSave as $field) {
         $key = 'xpc_can_do_' . $field;
         if ($paymentMethod->getSetting($field)) {
             $transaction->setDataCell($key, $paymentMethod->getSetting($field), null, 'C');
         }
     }
     $transaction->setDataCell('xpc_session_id', \XLite\Core\Session::getInstance()->getID(), null, 'C');
 }
Esempio n. 3
0
 /**
  * Get list of allowed backend transactions
  * 
  * @param \XLite\Model\Payment\Transaction $transaction Payment transaction
  *  
  * @return array
  */
 protected function getTransactionUnits($transaction = null)
 {
     if (!isset($this->allowedTransactions) && isset($transaction)) {
         $processor = $transaction->getPaymentMethod()->getProcessor();
         $this->allowedTransactions = $processor->getAllowedTransactions();
         foreach ($this->allowedTransactions as $k => $v) {
             if (!$processor->isTransactionAllowed($transaction, $v) || !$this->isTransactionFiltered($v)) {
                 unset($this->allowedTransactions[$k]);
             }
         }
     }
     return $this->allowedTransactions;
 }
Esempio n. 4
0
 /**
  * Check - payment method is editable or not
  *
  * @param \XLite\Model\Payment\Transaction $transaction Payment transaction
  *
  * @return boolean
  */
 protected function isPaymentMethodEditable(\XLite\Model\Payment\Transaction $transaction)
 {
     return $this->isOrderEditable() && $transaction->getPaymentMethod() && $transaction->getPaymentMethod()->getType() === \XLite\Model\Payment\Method::TYPE_OFFLINE;
 }
 /**
  * {@inheritDoc}
  */
 public function getPaymentMethod()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPaymentMethod', array());
     return parent::getPaymentMethod();
 }
Esempio n. 6
0
 /**
  * Send request to X-Payments to initialize new payment
  *
  * @param \XLite\Model\Payment\Transaction $transaction Payment transaction
  * @param \XLite\Model\Cart           $cart          Shopping cart info
  * @param boolean                     $forceAuth     Force enable AUTH mode OPTIONAL
  *
  * @return array
  */
 protected function requestPaymentInit(\XLite\Model\Payment\Transaction $transaction, \XLite\Model\Cart $cart, $forceAuth = false)
 {
     $paymentMethod = $transaction->getPaymentMethod();
     // Prepare cart
     $preparedCart = $this->prepareCart($cart, $paymentMethod, null, $forceAuth);
     if ($cart && $preparedCart) {
         $xpcBackReference = $transaction->getPublicId();
         // Send request to X-Payments
         $result = $this->apiRequest->send('payment', 'init', $this->getInitRequestData($paymentMethod->getSetting('id'), $xpcBackReference, $preparedCart));
         if ($result->isSuccess()) {
             $response = $result->getResponse();
             // Set fields for the "Redirect to X-Payments" form
             $result->setResponse(array('xpcBackReference' => $xpcBackReference, 'txnId' => $response['txnId'], 'module_name' => $paymentMethod->getSetting('moduleName'), 'url' => \XLite\Core\Config::getInstance()->CDev->XPaymentsConnector->xpc_xpayments_url . '/payment.php', 'fields' => array('target' => 'main', 'action' => 'start', 'token' => $response['token'])));
         }
     } else {
         // Something is wrong with the cart. Should not ever happen
         $result = new \XLite\Module\CDev\XPaymentsConnector\Transport\Response();
         $result->setError('Unable to prepare cart data');
     }
     return $result;
 }
Esempio n. 7
0
 /**
  * Get init payment form data from XPayments
  *
  * @param \XLite\Model\Payment\Transaction $transaction Transaction
  *
  * @return array 
  */
 protected function getInitDataFromXpayments(\XLite\Model\Payment\Transaction $transaction)
 {
     $init = $this->requestPaymentInit($transaction->getPaymentMethod(), \XLite\Model\Cart::getInstance());
     if ($init->isSuccess()) {
         $response = $init->getResponse();
         $data = array('xpcBackReference' => $response['xpcBackReference'], 'txnId' => $response['txnId'], 'fields' => $response['fields']);
         $this->saveInitDataToSession($transaction, $data);
     } else {
         $data = null;
         $this->setXpcInitError($transaction, $init->getError());
     }
     return $data;
 }
Esempio n. 8
0
 /**
  * Get setting value by name
  *
  * @param string $name Name
  *
  * @return mixed
  */
 protected function getSetting($name)
 {
     return $this->transaction ? $this->transaction->getPaymentMethod()->getSetting($name) : null;
 }
Esempio n. 9
0
 /**
  * Get method name
  *
  * @param \XLite\Model\Payment\Transaction $entity Payment transaction
  *
  * @return string
  */
 protected function getMethodNameColumnValue(\XLite\Model\Payment\Transaction $entity)
 {
     return $entity->getPaymentMethod() ? $entity->getPaymentMethod()->getName() : $entity->getMethodName();
 }