/** * Save shipping action * * Save shipping address data */ public function savePaymentAction() { if ($this->Request()->isPost()) { $sourceIsCheckoutConfirm = $this->Request()->getParam('sourceCheckoutConfirm'); $values = $this->Request()->getPost('register'); $this->admin->sSYSTEM->_POST['sPayment'] = $values['payment']; $checkData = $this->admin->sValidateStep3(); if (!empty($checkData['checkPayment']['sErrorMessages']) || empty($checkData['sProcessed'])) { if (empty($sourceIsCheckoutConfirm)) { $this->View()->sErrorFlag = $checkData['checkPayment']['sErrorFlag']; $this->View()->sErrorMessages = $checkData['checkPayment']['sErrorMessages']; } return $this->forward('payment'); } else { $previousPayment = $this->admin->sGetUserData(); $previousPayment = $previousPayment['additional']['user']['paymentID']; $previousPayment = $this->admin->sGetPaymentMeanById($previousPayment); if ($previousPayment['paymentTable']) { $deleteSQL = 'DELETE FROM ' . $previousPayment['paymentTable'] . ' WHERE userID=?'; Shopware()->Db()->query($deleteSQL, array(Shopware()->Session()->sUserId)); } $this->admin->sUpdatePayment(); if ($checkData['sPaymentObject'] instanceof \ShopwarePlugin\PaymentMethods\Components\BasePaymentMethod) { $checkData['sPaymentObject']->savePaymentData(Shopware()->Session()->sUserId, $this->Request()); } } } if (!($target = $this->Request()->getParam('sTarget'))) { $target = 'account'; } $targetAction = $this->Request()->getParam('sTargetAction', 'index'); $this->redirect(array('controller' => $target, 'action' => $targetAction, 'success' => 'payment')); }
/** * AJAX action called from creditcard layer, saves client api response */ public function savePseudoCardAction() { $this->Front()->Plugins()->ViewRenderer()->setNoRender(); $userId = Shopware()->Session()->sUserId; $paymentData['mopt_payone__cc_truncatedcardpan'] = $this->Request()->getPost('mopt_payone__cc_truncatedcardpan'); $paymentData['mopt_payone__cc_pseudocardpan'] = $this->Request()->getPost('mopt_payone__cc_pseudocardpan'); $paymentData['mopt_payone__cc_cardtype'] = $this->Request()->getPost('mopt_payone__cc_cardtype'); $paymentData['mopt_payone__cc_accountholder'] = $this->Request()->getPost('mopt_payone__cc_accountholder'); $paymentData['mopt_payone__cc_month'] = $this->Request()->getPost('mopt_payone__cc_month'); $paymentData['mopt_payone__cc_year'] = $this->Request()->getPost('mopt_payone__cc_year'); $paymentData['mopt_payone__cc_paymentname'] = $this->Request()->getPost('mopt_payone__cc_paymentname'); $paymentData['mopt_payone__cc_paymentid'] = $this->Request()->getPost('mopt_payone__cc_paymentid'); $paymentData['mopt_payone__cc_paymentdescription'] = $this->Request()->getPost('mopt_payone__cc_paymentdescription'); $actualPaymentId = $paymentData['mopt_payone__cc_paymentid']; $sql = 'replace into `s_plugin_mopt_payone_payment_data`' . '(`userId`,`moptPaymentData`) values (?,?)'; $paymentData = serialize($paymentData); Shopware()->Db()->query($sql, array($userId, $paymentData)); $previousPayment = $this->admin->sGetUserData(); $previousPayment = $previousPayment['additional']['user']['paymentID']; $previousPayment = $this->admin->sGetPaymentMeanById($previousPayment); if ($previousPayment['paymentTable']) { $deleteSQL = 'DELETE FROM ' . $previousPayment['paymentTable'] . ' WHERE userID=?'; Shopware()->Db()->query($deleteSQL, array(Shopware()->Session()->sUserId)); } $sqlPayment = "UPDATE s_user SET paymentID = ? WHERE id = ?"; Shopware()->Db()->query($sqlPayment, array($actualPaymentId, $userId)); }
/** * Get selected payment or do payment mean selection automatically * * @return array */ public function getSelectedPayment() { $paymentMethods = $this->getPayments(); if (!empty($this->View()->sUserData['additional']['payment'])) { $payment = $this->View()->sUserData['additional']['payment']; } elseif (!empty($this->session['sPaymentID'])) { $payment = $this->admin->sGetPaymentMeanById($this->session['sPaymentID'], $this->View()->sUserData); } if ($payment && !$this->checkPaymentAvailability($payment, $paymentMethods)) { $payment = null; } $paymentClass = $this->admin->sInitiatePaymentClass($payment); if ($payment && $paymentClass instanceof \ShopwarePlugin\PaymentMethods\Components\BasePaymentMethod) { $data = $paymentClass->getCurrentPaymentDataAsArray(Shopware()->Session()->sUserId); $payment['validation'] = $paymentClass->validate($data); if (!empty($data)) { $payment['data'] = $data; } } if (!empty($payment)) { return $payment; } if (empty($paymentMethods)) { unset($this->session['sPaymentID']); return false; } $payment = reset($paymentMethods); $this->session['sPaymentID'] = (int) $payment['id']; $this->front->Request()->setPost('sPayment', (int) $payment['id']); $this->admin->sUpdatePayment(); return $payment; }
/** * Get selected payment or do payment mean selection automatically * * @return array */ public function getSelectedPayment() { if(!empty($this->View()->sUserData['additional']['payment'])) { $payment = $this->View()->sUserData['additional']['payment']; } elseif(!empty($this->session['sPaymentID'])) { $payment = $this->admin->sGetPaymentMeanById($this->session['sPaymentID'], $this->View()->sUserData); } if (!empty($payment['table'])) { $paymentClass = $this->admin->sInitiatePaymentClass($payment); if (!empty($paymentClass)) { $payment['data'] = $paymentClass->getData(); } } if(!empty($payment)) { return $payment; } $payments = $this->getPayments(); if(empty($payments)) { unset($this->session['sPaymentID']); return false; } $payment = reset($payments); $this->session['sPaymentID'] = (int) $payment['id']; return $payment; }
/** * @covers sAdmin::sInitiatePaymentClass */ public function testsInitiatePaymentClass() { $payments = Shopware()->Models()->getRepository('Shopware\\Models\\Payment\\Payment')->findAll(); foreach ($payments as $payment) { $paymentClass = $this->module->sInitiatePaymentClass($this->module->sGetPaymentMeanById($payment->getId())); if (is_bool($paymentClass)) { $this->assertFalse($paymentClass); } else { $this->assertInstanceOf('ShopwarePlugin\\PaymentMethods\\Components\\BasePaymentMethod', $paymentClass); Shopware()->Front()->setRequest(new Enlight_Controller_Request_RequestHttp()); $validationResult = $paymentClass->validate(Shopware()->Front()->Request()); $this->assertTrue(is_array($validationResult)); if (count($validationResult)) { $this->assertArrayHasKey('sErrorFlag', $validationResult); $this->assertArrayHasKey('sErrorMessages', $validationResult); } } } }
/** * Save shipping action * * Save shipping address data */ public function savePaymentAction() { if($this->Request()->isPost()) { $values = $this->Request()->getPost('register'); $this->admin->sSYSTEM->_POST['sPayment'] = $values['payment']; $checkData = $this->admin->sValidateStep3(); if (!empty($checkData['checkPayment']['sErrorMessages']) || empty($checkData['sProcessed'])) { $this->View()->sErrorFlag = $checkData['checkPayment']['sErrorFlag']; $this->View()->sErrorMessages = $checkData['checkPayment']['sErrorMessages']; return $this->forward('payment'); } else { $previousPayment = $this->admin->sGetUserData(); $previousPayment = $previousPayment['additional']['user']['paymentID']; $previousPayment = $this->admin->sGetPaymentMeanById($previousPayment); if ($previousPayment['paymentTable']){ $deleteSQL = 'DELETE FROM '.$previousPayment['paymentTable'].' WHERE userID=?'; Shopware()->Db()->query($deleteSQL, array(Shopware()->Session()->sUserId)); } $this->admin->sUpdatePayment(); if (method_exists($checkData['sPaymentObject'],'sUpdate')){ $checkData['sPaymentObject']->sUpdate(); } } } if(!$target = $this->Request()->getParam('sTarget')) { $target = 'account'; } $this->redirect(array('controller'=>$target, 'action'=>'index', 'success'=>'payment')); }