@@ -542,9 +542,9 @@ public function captureOrder()
542542 $ output = [];
543543
544544 $ orderId = $ this ->session ->data ['order_id ' ];
545+ $ cartKey = $ this ->cart ->getCartKey ();
545546 //"buy-now" process
546547 if (!$ orderId ) {
547- $ cartKey = $ this ->cart ->getCartKey ();
548548 $ cartData = $ this ->shopping_data ->get ('cart ' , $ cartKey );
549549 if (!$ cartData ['data ' ]) {
550550 $ error = new AError ('Cart data not found! ' );
@@ -617,32 +617,33 @@ public function captureOrder()
617617 $ dd ->dispatch ();
618618 //resave an order into a database
619619 $ companyName = $ result ->getPaymentSource ()?->getPaypal()?->getBusinessName() ? : '' ;
620-
621- $ this ->session ->data ['fc ' ]['email ' ] = $ result -> getPayer () ->getEmailAddress ();
622- $ this ->session ->data ['fc ' ]['guest ' ]['email ' ] = $ result -> getPayer () ->getEmailAddress ();
623- $ this ->session ->data ['fc ' ]['guest ' ]['firstname ' ] = $ result -> getPayer () ->getName ()->getGivenName ();
624- $ this ->session ->data ['fc ' ]['guest ' ]['lastname ' ] = $ result -> getPayer () ->getName ()->getSurname ();
620+ $ ppPayer = $ result -> getPayer ();
621+ $ this ->session ->data ['fc ' ]['email ' ] = $ ppPayer ->getEmailAddress ();
622+ $ this ->session ->data ['fc ' ]['guest ' ]['email ' ] = $ ppPayer ->getEmailAddress ();
623+ $ this ->session ->data ['fc ' ]['guest ' ]['firstname ' ] = $ ppPayer ->getName ()->getGivenName ();
624+ $ this ->session ->data ['fc ' ]['guest ' ]['lastname ' ] = $ ppPayer ->getName ()->getSurname ();
625625 $ this ->session ->data ['fc ' ]['guest ' ]['company ' ] = $ companyName ;
626626 //take the correct shipping address from order
627627 $ ppO = $ mdl ->getOrder ($ ppOrderId );
628- list (
629- $ fName , $ lName
630- ) = explode (' ' , $ ppO ->getPurchaseUnits ()[0 ]->getShipping ()->getName ()->getFullName ());
628+ $ ppShipping = $ ppO ->getPurchaseUnits ()[0 ]->getShipping ();
629+ list ($ fName , $ lName ) = explode (' ' ,$ ppShipping ->getName ()->getFullName ());
630+
631+ $ ppAddress = $ ppShipping ->getAddress ();
631632 $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['firstname ' ] = $ fName ;
632633 $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['lastname ' ] = $ lName ;
633634 $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['company ' ] = $ companyName ;
634- $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['address_1 ' ] =
635- $ ppO ->getPurchaseUnits ()[0 ]->getShipping ()->getAddress ()->getAddressLine1 ();
636- $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['address_2 ' ] =
637- $ ppO ->getPurchaseUnits ()[0 ]->getShipping ()->getAddress ()->getAddressLine2 ();
638- $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['city ' ] =
639- $ ppO ->getPurchaseUnits ()[0 ]->getShipping ()->getAddress ()->getAdminArea2 ();
640- $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['postcode ' ] =
641- $ ppO ->getPurchaseUnits ()[0 ]->getShipping ()->getAddress ()->getPostalCode ();
635+ $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['address_1 ' ] = $ ppAddress ->getAddressLine1 ();
636+ $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['address_2 ' ] = $ ppAddress ->getAddressLine2 ();
637+ $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['city ' ] = $ ppAddress ->getAdminArea2 ();
638+ $ this ->session ->data ['fc ' ]['guest ' ]['shipping ' ]['postcode ' ] = $ ppAddress ->getPostalCode ();
642639 $ this ->session ->data ['fc ' ]['payment_method ' ] = [
643640 'id ' => 'paypal_commerce ' ,
644641 'title ' => 'Paypal ' ,
645642 ];
643+ $ ppData = $ this ->shopping_data ->get ('paypal_data ' , $ cartKey );
644+ if ($ ppData ['data ' ]['shipping_method ' ]) {
645+ $ this ->session ->data ['fc ' ]['shipping_method ' ] = $ ppData ['data ' ]['shipping_method ' ];
646+ }
646647
647648 $ order ->buildOrderData ($ this ->session ->data ['fc ' ]);
648649 $ order ->saveOrder ();
@@ -983,8 +984,14 @@ public function orderUpdate()
983984 AC_ERR_USER_ERROR , 'PayPal Express: Order not created after customer login into PP account! '
984985 );
985986 }
986- $ this ->shopping_data ->save ('cart ' , $ cartKey , orderId: $ abcOrderId );
987- $ this ->shopping_data ->save ('paypal_data ' , $ cartKey , orderId: $ abcOrderId );
987+
988+ $ ppData = $ this ->shopping_data ->get ('paypal_data ' , $ cartKey );
989+ if ( $ this ->session ->data ['fc ' ]['shipping_method ' ] ){
990+ $ ppData ['data ' ]['shipping_method ' ] = $ this ->session ->data ['fc ' ]['shipping_method ' ];
991+ }
992+ $ this ->shopping_data ->save ('paypal_data ' , $ cartKey , $ ppData ['data ' ], $ abcOrderId );
993+ $ this ->shopping_data ->save ('cart ' , $ cartKey , orderId: $ abcOrderId );
994+
988995 //collect all data from order for response
989996 /** @var ModelCheckoutOrder $oMdl */
990997 $ oMdl = $ this ->loadModel ('checkout/order ' );
@@ -1053,7 +1060,7 @@ protected function createUpdateOrder(array $inData)
10531060 $ fcSession ['guest ' ]['firstname ' ] = 'guest ' ;
10541061 $ fcSession ['guest ' ]['lastname ' ] = 'guest ' ;
10551062 $ fcSession ['guest ' ]['email ' ] = $ ppOrderDetails ?->getPayer()?->getEmailAddress();
1056- $ fcSession ['guest ' ]['shipping ' ]['city ' ] = $ inData ['shipping_address ' ]['city ' ];
1063+ $ fcSession ['guest ' ]['shipping ' ]['city ' ] = $ inData ['shipping_address ' ]['city ' ] ?: $ inData [ ' shipping_address ' ][ ' admin_area_2 ' ] ;
10571064
10581065 /** @var ModelLocalisationCountry $cMdl */
10591066 $ cMdl = $ this ->loadModel ('localisation/country ' );
@@ -1079,14 +1086,20 @@ protected function createUpdateOrder(array $inData)
10791086 //$shNames = explode(' ', $ppOrderDetails->purchase_units[0]->shipping->name->full_name);
10801087 $ fcSession ['guest ' ]['shipping ' ]['firstname ' ] = 'guest ' ;
10811088 $ fcSession ['guest ' ]['shipping ' ]['lastname ' ] = 'guest ' ;
1082- $ this -> session -> data [ ' fc ' ] ['payment_method_key ' ] = 'paypal_commerce ' ;
1083- $ this -> session -> data [ ' fc ' ] ['payment_method ' ] = 'Paypal ' ;
1089+ $ fcSession ['payment_method_key ' ] = 'paypal_commerce ' ;
1090+ $ fcSession ['payment_method ' ] = 'Paypal ' ;
10841091
10851092 if ($ inData ['shipping_option ' ]) {
10861093 $ shippingArgs = [
10871094 'selected ' => $ inData ['shipping_option ' ]['id ' ],
10881095 'selectFirst ' => true ,
10891096 ];
1097+ $ fcSession ['shipping_method ' ] = [
1098+ 'id ' => $ inData ['shipping_option ' ]['id ' ],
1099+ 'title ' => $ inData ['shipping_option ' ]['label ' ],
1100+ 'text ' => $ inData ['shipping_option ' ]['label ' ],
1101+ 'cost ' => $ inData ['shipping_option ' ]['amount ' ]['value ' ],
1102+ ];
10901103 } else {
10911104 //create a new order in the session
10921105 /** @see ControllerResponsesCheckoutPay::updateOrderData() */
0 commit comments