AbanteCart v1.4.4 is released.

$this->session->data['fc'] = array_merge($order->data, $this->session->data['fc']);$this->session->data['fc'] = array_merge((array)$order->data, (array)$this->session->data['fc']); $order->buildOrderData($this->session->data['fc']);
$order->saveOrder();
}
} catch (Exception|Error $e) { $order->buildOrderData($this->session->data['fc']);
$order->saveOrder();
}
$confirmOrderId = (int)($orderId ?: $this->session->data['order_id']);
if ($confirmOrderId && $result->getId()) {
/** @var ModelCheckoutOrder $oMdl */
$oMdl = $this->loadModel('checkout/order');
$confirmedOrderInfo = $oMdl->getOrder($confirmOrderId);
$incompleteStatusId = (int)$this->order_status->getStatusByTextId('incomplete');
$currentStatusId = (int)($confirmedOrderInfo['order_status_id'] ?? 0);
if ($confirmedOrderInfo && (!$currentStatusId || $currentStatusId == $incompleteStatusId)) {
$settledStatusId = $this->config->get('paypal_commerce_transaction_type') == 'capture'
? $this->config->get('paypal_commerce_status_success_settled')
: $this->config->get('paypal_commerce_status_success_unsettled');
$oMdl->confirm(
$confirmOrderId,
$settledStatusId ?: $this->order_status->getStatusByTextId('pending')
);
}
if (!$mdl->getPaypalOrder($confirmOrderId)) {
$mdl->savePaypalOrder($confirmOrderId, [
'id' => $ppOrderId,
'transaction_id' => $result->getId(),
]);
}
}
} catch (Exception|Error $e) { $mdl->savePaypalCustomer($this->customer->getId(), $transactionDetails['payer']['payer_id']);
$mdl->savePaypalOrder(
$orderId,
[
'id' => $transactionDetails['id'],
'transaction_id' => $transactionDetails['id'],
]
); $mdl->savePaypalCustomer($this->customer->getId(), $transactionDetails['payer']['payer_id']);
if (!$mdl->getPaypalOrder($orderId)) {
$mdl->savePaypalOrder(
$orderId,
[
'id' => $transactionDetails['id'],
'transaction_id' => $transactionDetails['id'],
]
);
} /** @var ModelCheckoutOrder $oMdl */
$oMdl = $this->loadModel('checkout/order');
$oMdl->update(
$orderId,
$this->data['order_status_id'],
'Order updated by Paypal webhook request.'
);Replace with: /** @var ModelCheckoutOrder $oMdl */
$oMdl = $this->loadModel('checkout/order');
/** @var ModelExtensionPaypalCommerce $mdl */
$mdl = $this->loadModel('extension/paypal_commerce');
$webhookOrderInfo = $oMdl->getOrder($orderId);
$incompleteStatusId = (int)$this->order_status->getStatusByTextId('incomplete');
$currentStatusId = (int)($webhookOrderInfo['order_status_id'] ?? 0);
if ($webhookOrderInfo && (!$currentStatusId || $currentStatusId == $incompleteStatusId)) {
$oMdl->confirm($orderId, $this->data['order_status_id']);
if (!$mdl->getPaypalOrder($orderId)) {
$ppOrderId = $inData['parsed']['resource']['supplementary_data']['related_ids']['order_id'] ?? '';
$mdl->savePaypalOrder($orderId, [
'id' => $ppOrderId,
'transaction_id' => $inData['parsed']['resource']['id'] ?? '',
]);
}
} else {
$oMdl->update(
$orderId,
$this->data['order_status_id'],
'Order updated by Paypal webhook request.'
);
} $this->data['pp']['purchase_units'][0] = [
'reference_id' => $ppOrderData['data']['reference_id'] ? : $this->session->data['reference_id'],
'amount' => [Replace with: $this->data['pp']['purchase_units'][0] = [
'reference_id' => $ppOrderData['data']['reference_id'] ? : $this->session->data['reference_id'],
'custom_id' => (string) $orderId,
'amount' => [Quote from: timlight10 on May 09, 2026, 02:09:04 PMI have reCaptcha enabled, but I still get spam customers and contact form entries. Any suggestions?this is mostly your business filed competitors doing it to you.
Quote from: timlight10 on May 09, 2026, 02:09:04 PMI have reCaptcha enabled, but I still get spam customers and contact form entries. Any suggestions?Hello.