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