Index: /controller/wpsg_OrderController.class.php
===================================================================
--- /controller/wpsg_OrderController.class.php	(revision 7779)
+++ /controller/wpsg_OrderController.class.php	(revision 7780)
@@ -800,5 +800,5 @@
 					");
 
-					$this->shop->view['data']['shipping_land'] = $this->db->fetchRow("SELECT * FROM `".WPSG_TBL_LAND."` WHERE `id` = '".wpsg_q($temp['land'])."'");
+					$this->shop->view['data']['shipping_land'] = $this->db->fetchRow("SELECT * FROM `".WPSG_TBL_LAND."` WHERE `id` = '".wpsg_q(wpsg_getStr($temp['land']))."'");
 
 					$this->shop->view['kunde'] = $this->db->fetchRow("
Index: /controller/wpsg_ShopController.class.php
===================================================================
--- /controller/wpsg_ShopController.class.php	(revision 7779)
+++ /controller/wpsg_ShopController.class.php	(revision 7780)
@@ -752,6 +752,5 @@
 
                 session_start();
-
-                if (!is_admin()) session_write_close();
+                session_write_close();
 
             }
@@ -786,7 +785,5 @@
 
             $ses = $_SESSION;
-
             session_start();
-
             $_SESSION = $ses;
 
@@ -1950,6 +1947,5 @@
 		 * ist wichtig fÃŒr die Preisberechnung (Mehrwertsteuer)
 		 */
-		public function getFrontendCountry($id = false)
-		{
+		public function getFrontendCountry($id = false) {
 
 			if (wpsg_isSizedInt($_SESSION['wpsg']['checkout']['land']))
@@ -2701,7 +2697,7 @@
 		 * Gibt den Link zur Seite nach der Bestellung zurâÂºck
 		 */
-		public function getDoneURL($order_id) {
-
-			$basket_url = $this->getURL(wpsg_ShopController::URL_BASKET);
+		public function getDoneURL($order_id, $mod = false, $action = false) {
+
+			$basket_url = $this->getURL(wpsg_ShopController::URL_BASKET, $mod, $action);
 
             $secret = $this->getOrderSecret($order_id);
Index: /controller/wpsg_SystemController.class.php
===================================================================
--- /controller/wpsg_SystemController.class.php	(revision 7779)
+++ /controller/wpsg_SystemController.class.php	(revision 7780)
@@ -205,6 +205,9 @@
             $message_key = md5($message);
 
+            $arM = get_user_meta(get_current_user_id(), 'wpsg_backendMessage', true);
+            if (!wpsg_isSizedArray($arM)) $arM = [];
+
             // Wenn schon drin, dann nichts machen
-            if (@array_key_exists($message_key, (array)$_SESSION['wpsg']['backendError'])) return;
+            if (@array_key_exists($message_key, $arM)) return;
 
             if (substr($message, 0, 7) === 'nohspc_') $message = substr($message, 7);
@@ -217,7 +220,7 @@
             ';
 
-            if (!wpsg_isSizedArray($_SESSION['wpsg']['backendMessage'])) $_SESSION['wpsg']['backendMessage'] = array();
-
-			$_SESSION['wpsg']['backendMessage'][$message_key] = $message;
+            $arM[$message_key] = $message;
+
+            update_user_meta(get_current_user_id(), 'wpsg_backendMessage', $arM);
 
 		} // public function addBackendMessage($message)
@@ -248,7 +251,10 @@
 			if ($hideLinkKey === false) $message_key = md5($message);
 			else $message_key = $hideLinkKey;
-			
+
+			$arE = get_user_meta(get_current_user_id(), 'wpsg_backendError', true);
+			if (!wpsg_isSizedArray($arE)) $arE = [];
+
 			// Wenn schon drin, dann nichts machen
-            if (@array_key_exists($message_key, wpsg_getArray($_SESSION['wpsg']['backendError']))) return;
+            if (@array_key_exists($message_key, $arE)) return;
 
             if (substr($message, 0, 7) === 'nohspc_') $message = substr($message, 7);
@@ -258,6 +264,5 @@
             if (!wpsg_isSizedArray($arMsgHidden)) $arMsgHidden = array();
 
-			if (wpsg_isSizedString($hideLinkKey) && $addBlendOut === true)
-			{
+			if (wpsg_isSizedString($hideLinkKey) && $addBlendOut === true) {
 				
 				// Wurde die Meldung bereits ausgeblendet ?
@@ -272,7 +277,5 @@
                 ';
 
-			}
-			else
-            {
+			} else {
 
                 $message = '
@@ -284,6 +287,8 @@
             }
 
-			$_SESSION['wpsg']['backendError'][$message_key] = $message;
-							
+            $arE[$message_key] = $message;
+
+            update_user_meta(get_current_user_id(), 'wpsg_backendError', $arE);
+
 		} // public function addBackendError($message, $hideLinkKey = false)
 
@@ -359,5 +364,17 @@
 		public function hasFrontendError() { return wpsg_isSizedArray($_SESSION['wpsg']['frontendError']); }
 		
-		public function hasBackendError() { $arE = $_SESSION['wpsg']['backendError']; unset($arE['wpsg_systemcheck']); return wpsg_isSizedArray($arE); }
+		public function hasBackendError() {
+
+		    /*
+		    $arE = $_SESSION['wpsg']['backendError'];
+		    unset($arE['wpsg_systemcheck']);
+		    return wpsg_isSizedArray($arE);
+		    */
+
+            $arE = get_user_meta(get_current_user_id(), 'wpsg_backendError', true);
+
+            return wpsg_isSizedArray($arE);
+
+		}
 		
 		/**
@@ -412,6 +429,5 @@
 		 * Gibt die Backend Messages aus 
 		 */
-		public function writeBackendMessage($onlyMessage = false)
-		{
+		public function writeBackendMessage($onlyMessage = false) {
 
 			$this->bMessageOut = true;
@@ -419,18 +435,21 @@
 			
 			$strOut  = '';
-			 
-			if (wpsg_isSizedArray($_SESSION['wpsg']['backendMessage'])) {
-
-				foreach ($_SESSION['wpsg']['backendMessage'] as $m) { $strOut .= $m; }
-
-				unset($_SESSION['wpsg']['backendMessage']);
-				
-			}
-			
-			if (wpsg_isSizedArray($_SESSION['wpsg']['backendError'])) {
-
-				foreach ($_SESSION['wpsg']['backendError'] as $m) { $strOut .= $m; }
-
-                unset($_SESSION['wpsg']['backendError']);
+
+            $arE = get_user_meta(get_current_user_id(), 'wpsg_backendError', true);
+            $arM = get_user_meta(get_current_user_id(), 'wpsg_backendMessage', true);
+
+			if (wpsg_isSizedArray($arM)) {
+
+				foreach ($arM as $m) { $strOut .= $m; }
+
+                delete_user_meta(get_current_user_id(), 'wpsg_backendMessage');
+				
+			}
+			
+			if (wpsg_isSizedArray($arE)) {
+
+				foreach ($arE as $m) { $strOut .= $m; }
+
+                delete_user_meta(get_current_user_id(), 'wpsg_backendError');
 
 			}
@@ -445,6 +464,5 @@
 		 * LÃ¶scht die Session mit den fehlerhaft eingegebenen Feldern
 		 */
-		public function ClearSessionErrors()
-		{
+		public function ClearSessionErrors() {
 			
 			unset($_SESSION['wpsg']['errorFields']);
@@ -455,6 +473,5 @@
 		 * LÃ¶scht die Fehlermeldungen fÃŒr das Frontend
 		 */
-		public function clearFrontendError()
-		{
+		public function clearFrontendError() {
 			
 			unset($_SESSION['wpsg']['frontendError']);
@@ -465,6 +482,5 @@
 		 * LÃ¶scht die Meldungen fÃŒr das Frontend
 		 */
-		public function clearFrontendMessage()
-		{
+		public function clearFrontendMessage() {
 		
 			unset($_SESSION['wpsg']['frontendMessage']);
@@ -475,9 +491,8 @@
 		 * LÃ¶scht die Meldungen aus der Session
 		 */
-		public function clearMessages()
-		{
-				
-			unset($_SESSION['wpsg']['backendError']);
-			unset($_SESSION['wpsg']['backendMessage']);
+		public function clearMessages() {
+				
+			//unset($_SESSION['wpsg']['backendError']);
+			//unset($_SESSION['wpsg']['backendMessage']);
 				
 			$this->clearFrontendError();
Index: /lib/wpsg_calculation.class.php
===================================================================
--- /lib/wpsg_calculation.class.php	(revision 7779)
+++ /lib/wpsg_calculation.class.php	(revision 7780)
@@ -1539,4 +1539,15 @@
 			
 		}
+
+		public function getToPay($bruttonetto = WPSG_BRUTTO) {
+
+            if ($this->getProductCount() <= 0) return 0;
+
+            $arCalculation = $this->getCalculationArray();
+
+            if ($bruttonetto === WPSG_BRUTTO) return $arCalculation['sum']['topay_brutto'];
+            else return $arCalculation['sum']['topay_netto'];
+
+        }
 		
 		private function addTax($tax_key) {
Index: /lib/wpsg_exceptionhandler.class.php
===================================================================
--- /lib/wpsg_exceptionhandler.class.php	(revision 7779)
+++ /lib/wpsg_exceptionhandler.class.php	(revision 7780)
@@ -9,6 +9,5 @@
     namespace wpsg;
     
-    abstract class Exceptionhandler
-    {
+    abstract class Exceptionhandler {
 
         /**
@@ -16,7 +15,6 @@
          * @param $ex
          */
-        static function exception($ex, $break = true)
-        {
-         
+        static function exception($ex, $break = true) {
+
             if (get_class($ex) === "wpsg\Exception")
             {
Index: /mods/wpsg_mod_basic.class.php
===================================================================
--- /mods/wpsg_mod_basic.class.php	(revision 7779)
+++ /mods/wpsg_mod_basic.class.php	(revision 7780)
@@ -92,4 +92,5 @@
 			3130	=> 'wpsg_mod_packagetracking', /* Paketverfolgung */
 			3140	=> 'wpsg_mod_amazon', /* Amazon Payment */
+            3141	=> 'wpsg_mod_amazon_v2', /* Amazon Payment V2 */
 			4000	=> 'wpsg_mod_crefopay', /* Sollte die letzte Zahlungsart bleiben, da sie die anderen ausblendet */
 			3150	=> 'wpsg_mod_request', // Anfrageprodukt 
Index: /views/css/frontend.css
===================================================================
--- /views/css/frontend.css	(revision 7779)
+++ /views/css/frontend.css	(revision 7780)
@@ -3,13 +3,13 @@
 /* Allgemein */
 .wpsg_clear { clear:both; }
-#wpsg_error, #wpsg_message { margin-bottom:1rem; }
+#wpsg_error, #wpsg_message { margin-bottom:1rem; margin-left:0; }
 #wpsg_message li, #wpsg_error li, #wpsg_notice li,
 #wpsg_message p, #wpsg_error p, #wpsg_notice p { list-style:none; margin-bottom:4px; padding:3px 0px 3px 8px; }
 #wpsg_message li,
-#wpsg_message p { border-left:4px solid #7AD03A; }
+#wpsg_message p { border-left:4px solid #7AD03A; margin-left:0; }
 #wpsg_notice li,
-#wpsg_notice p { border-left:4px solid #FDF60A; }
+#wpsg_notice p { border-left:4px solid #FDF60A; margin-left:0; }
 #wpsg_error li,
-#wpsg_error p { border-left:4px solid #DD3D36; }
+#wpsg_error p { border-left:4px solid #DD3D36; margin-left:0; }
 .wpsg_error { border-color:#DD3D36; }
 .wpsg { }
Index: /wpshopgermany.php
===================================================================
--- /wpshopgermany.php	(revision 7779)
+++ /wpshopgermany.php	(revision 7780)
@@ -283,6 +283,7 @@
 	add_action('widgets_init', array($shop, 'widget_init'));
     add_action('wpsg_daily_hook', [$shop, 'wpsg_daily_hook']);
+
     add_action('send_headers', [$shop, 'send_headers']);
-    
+
 	$shop->callMods('load', array());
 	
