/** * 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(); }
/** * 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'); }
/** * 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; }
/** * 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(); }
/** * 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; }
/** * 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; }
/** * Get setting value by name * * @param string $name Name * * @return mixed */ protected function getSetting($name) { return $this->transaction ? $this->transaction->getPaymentMethod()->getSetting($name) : null; }
/** * 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(); }