Index: /mods/wpsg_mod_paypalapi.class.php
===================================================================
--- /mods/wpsg_mod_paypalapi.class.php	(revision 6152)
+++ /mods/wpsg_mod_paypalapi.class.php	(revision 6154)
@@ -18,4 +18,7 @@
 		private $currency = "EUR";
 		
+		// Wenn true, dann keine direkte Fehlerbehandlung
+		private $api_try = false;
+		
 		/**
 		 * Costructor
@@ -29,5 +32,5 @@
 			$this->group = __('Zahlungsarten', 'wpsg');
 			$this->desc = __('ErmÃ¶glicht die Zahlungsart PayPal und PayPal PLUS, ÃŒber die REST API Schnittstelle und Login mit PayPal Express.', 'wpsg');
-					
+			
 		} // public function __construct()
 				
@@ -39,5 +42,5 @@
 			
 		} // public function init()
-		
+				
 		public function install()
 		{
@@ -104,6 +107,6 @@
 			$this->shop->update_option('wpsg_mod_paypalapi_paypalexpress_subject', $_REQUEST['wpsg_mod_paypalapi_paypalexpress_subject']);
 			$this->shop->update_option('wpsg_mod_paypalapi_paypalexpress_forceSSL', $_REQUEST['wpsg_mod_paypalapi_paypalexpress_forceSSL']);
+			$this->shop->update_option('wpsg_mod_paypalapi_autostart', $_REQUEST['wpsg_mod_paypalapi_autostart']);
 			$this->shop->update_option('wpsg_mod_paypalapi_paypalexpress_details', $_REQUEST['wpsg_mod_paypalapi_paypalexpress_details']);
-			$this->shop->update_option('wpsg_mod_paypalapi_autostart', $_REQUEST['wpsg_mod_paypalapi_autostart']);
 			
 			$this->shop->update_option('wpsg_mod_paypalapi_experience_label', $_REQUEST['wpsg_mod_paypalapi_experience_label'], false, true);
@@ -378,5 +381,5 @@
 			{ 
 			
-				$this->shop->view['wpsg_mod_paypalapi']['error'] = __('Sie hatten eventuelle bereits eine Zahlungsart gewÃ€hlt. Aufgrund technischer EinschrÃ€nkungen kann es sein dass diese Auswahl hier erneut durchgefÃŒhrt werden muss.', 'wpsg');
+				$this->shop->view['wpsg_mod_paypalapi']['error'] = __('Sie hatten eventuell bereits eine Zahlungsart gewÃ€hlt. Aufgrund technischer EinschrÃ€nkungen kann es sein, dass diese Auswahl hier erneut durchgefÃŒhrt werden muss.', 'wpsg');
 				
 			}
@@ -455,22 +458,23 @@
 				$amount_approved = floatval($payment_info['transactions'][0]['amount']['total']);
 				 
+				//if ($amount_approved === floatval($oOrder->getAmount()) && !wpsg_isSizedString($oOrder->getMeta('wpsg_mod_paypalapi_saleid')))
 				// AusfÃŒhren bei Approved und Created! Wenn der Iframe angezeigt wird, wird die alte PayMent ID verworfen!
-				if (in_array($payment_info['state'], array('approved', 'created')) && $amount_approved === floatval($oOrder->getAmount()) && !wpsg_isSizedString($oOrder->getMeta('wpsg_mod_paypalapi_saleid')))
- 				{
-				
-					
+				if ($amount_approved === floatval($oOrder->getAmount()) && !wpsg_isSizedString($oOrder->getMeta('wpsg_mod_paypalapi_saleid')))
+				{
+					
+					$this->api_try = true;
 					$payment_info_execute = $this->api_executePayment($oOrder->getMeta('wpsg_mod_paypalapi_paymentId'), $oOrder->getMeta('wpsg_mod_paypalapi_payer_id'));
-					 
+					$this->api_try = false; 
+					
 					if (wpsg_isSizedString($payment_info_execute['transactions'][0]['related_resources'][0]['sale']['id']))
 					{
 					
 						$sale_id = $payment_info_execute['transactions'][0]['related_resources'][0]['sale']['id'];
-						$payment_info = $payment_info_execute;
-			
+									
 						$oOrder->setMeta('wpsg_mod_paypalapi_saleid', $sale_id);
 						$oOrder->setMeta('wpsg_mod_paypalapi_salestate', $payment_info_execute['transactions'][0]['related_resources'][0]['sale']['state']);
-						$oOrder->setMeta('wpsg_mod_paypalapi_paymentstate', $payment_info['state']);
-					
-						if ($payment_info['state'] == 'approved')
+						$oOrder->setMeta('wpsg_mod_paypalapi_paymentstate', $payment_info_execute['state']);
+					
+						if ($payment_info_execute['state'] == 'approved')
 						{
 								
@@ -482,4 +486,6 @@
 						}
 						
+						else $payment_info = $payment_info_execute;
+						
 					}
 					
@@ -527,5 +533,8 @@
 		public function basket_inner_prebutton(&$basket_view) 
 		{ 
-			
+
+			// PayPal ÃŒberhaupt mÃ¶glich
+			if (!array_key_exists($this->id, $this->shop->arPayment)) return;
+			 
 			// Bestellungen mit 0,- mÃŒssen nicht bearbeitet werden
 			if ($basket_view['basket']['sum']['preis_gesamt_brutto'] <= 0) return;
@@ -746,4 +755,5 @@
 			/*
 			 * // Es gab Probleme, dass die Lieferadresse von Paypal ÃŒbernommen wurde. Dies fÃŒhrte zu Verwirrung da dadurch das Land in unglÃŒcklichem Beispiel gewechselt hat
+			 * //02.06.2016
 			if (wpsg_isSizedArray(wpsg_trim($json_data['payer']['payer_info']['shipping_address'])) && $this->shop->hasMod('wpsg_mod_shippingadress'))
 			{
@@ -764,5 +774,5 @@
 				 
 				$_SESSION['wpsg']['checkout']['diff_shippingadress'] = '1';
-							
+									
 			}
 			*/
@@ -1195,5 +1205,5 @@
 				$item_list['items'][] = array(
 					'quantity' => '1',
-					'name' => (($arBasket['sum']['preis_payment_brutto'] > 0)?__('GebÃŒhr fÃŒr Zahlungsart', 'wpsg'):__('Rabatt durch Zahlungsart', 'wspg')),
+					'name' => (($arBasket['sum']['preis_payment_brutto'] > 0)?__('GebÃŒhr fÃŒr Zahlungsart', 'wpsg'):__('Rabatt durch Zahlungsart', 'wpsg')),
 					'description' => __('Rabatt, der Aufgrund der gewÃ€hlten Zahlungsart entstanden ist.', 'wpsg'),
 					'price' => number_format($arBasket['sum']['preis_payment_brutto'], 2),
@@ -1266,5 +1276,14 @@
 			}
 			
-			if (wpsg_isSizedInt($this->shop->get_option('wpsg_mod_paypalapi_paypalexpress_details')))
+			//wpsg_debug($item_list);
+			//wpsg_debug($subTotal); 
+			
+			/*
+			 * Daschmi@14.12.2016
+			 * Ich vergleiche hier die Summe der Positionen mit dem ÃŒbergebenen Brutto 
+			 * Bei Nettorechnungen kann es hier zu Problemen fÃŒhren Siehe Track Ticket 505
+			 */
+			
+			if (wpsg_isSizedInt($this->shop->get_option('wpsg_mod_paypalapi_paypalexpress_details')) && floatval($subTotal) === floatval($arBasket['sum']['preis_gesamt_brutto']))
 			{
 				
@@ -1278,6 +1297,5 @@
 				
 				$post_data['transactions'][0]['item_list'] = $item_list;
-				
-			}
+							}
 			else
 			{
@@ -1432,5 +1450,5 @@
 			{
 				
-				$this->api_handleError(__('API lieferte keinen AUTH Token. Vermutlich fehlerhafte Zugangsdaten.', 'wspg'));
+				$this->api_handleError(__('API lieferte keinen AUTH Token. Vermutlich fehlerhafte Zugangsdaten.', 'wpsg'));
 				return;
 				
@@ -1460,4 +1478,6 @@
 		private function api_handleError($errorValue)
 		{ 
+			
+			if ($this->api_try === true) return;
 						
 			if (is_array($errorValue)) $errorValue = print_r($errorValue, 1);
