Skip to content

Commit b1f7e04

Browse files
committed
extensions: paypal_commerce. Venmo checkout bugfix. ACORN-1932
1 parent 787a1eb commit b1f7e04

File tree

1 file changed

+35
-22
lines changed
  • public_html/extensions/paypal_commerce/storefront/controller/responses/extension

1 file changed

+35
-22
lines changed

public_html/extensions/paypal_commerce/storefront/controller/responses/extension/paypal_commerce.php

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)