示例#1
0
 /**
  * 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'));
 }
示例#2
0
 /**
  * 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;
 }
示例#4
0
 /**
  * @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);
 }
示例#5
0
	/**
	 * 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'));
	}