/** * 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')); }
/** * 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; }
/** * @param \Enlight_Controller_ActionEventArgs $args * @return bool */ public function onPaypalPlusRedirect($args) { $action = $args->getSubject(); $request = $action->Request(); $selectPaymentId = (int) $request->get('selectPaymentId'); $request->setPost('sPayment', $selectPaymentId); $checkData = $this->admin->sValidateStep3(); if (!empty($checkData['checkPayment']['sErrorMessages']) || empty($checkData['sProcessed'])) { $action->forward('payment', 'account', 'frontend', array('ppplusRedirect' => 1)); return true; } else { $this->admin->sUpdatePayment(); } $action->forward('confirm', 'checkout', 'frontend', array('ppplusRedirect' => 1)); return true; }
/** * @covers sAdmin::sUpdatePayment */ public function testsUpdatePayment() { // Test no user id $this->assertFalse($this->module->sUpdatePayment()); $customer = $this->createDummyCustomer(); $this->session->offsetSet('sUserId', $customer->getId()); // Test that operation succeeds even without payment id $this->assertTrue($this->module->sUpdatePayment()); $this->assertEquals(0, Shopware()->Db()->fetchOne('SELECT paymentID FROM s_user WHERE id = ?', array($customer->getId()))); // Setup dummy test data and test with it $this->front->Request()->setPost(array('sPayment' => 2)); $this->assertTrue($this->module->sUpdatePayment()); $this->assertEquals(2, Shopware()->Db()->fetchOne('SELECT paymentID FROM s_user WHERE id = ?', array($customer->getId()))); $this->deleteDummyCustomer($customer); }
/** * 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')); }