feat(payments): Express-Kauf aus dem Warenkorb (PayPal v2): Start ohne Bestellung, Adresse von PayPal, Kasse vorbelegt, Capture ohne zweiten Besuch
This commit is contained in:
@@ -56,14 +56,44 @@ class website_shoppingcart {
|
||||
}
|
||||
|
||||
$data = $this->shoppingcart_object->get_data();
|
||||
|
||||
|
||||
$this->layout_object->assign('shoppingcart', $data);
|
||||
$this->layout_object->assign('shoppingcartVATUsage', $this->base_object->customer_group->show_tax);
|
||||
|
||||
// 14.09.2026: Express-Buttons der Zahlungsanbieter ("Direkt mit PayPal bezahlen").
|
||||
// Angezeigt, wenn der Anbieter Express kann und seine Zahlart aktiv ist.
|
||||
$this->layout_object->assign('express_providers', $this->express_providers());
|
||||
|
||||
return $this->layout_object->_fetch('content_shoppingcart.tpl');
|
||||
} // end show_shoppingcart
|
||||
|
||||
|
||||
/** @return array<int,array{module:string,label:string}> */
|
||||
private function express_providers() {
|
||||
$out = array();
|
||||
$file = $_SERVER['DOCUMENT_ROOT'].'/core/payments/Registry.php';
|
||||
if (!is_file($file)) {
|
||||
return $out;
|
||||
}
|
||||
include_once $file;
|
||||
$res = $this->base_object->db->query("SELECT module FROM payment_methods WHERE active=1 AND module<>''");
|
||||
while ($res && ($row = $res->fetch_object())) {
|
||||
$module = (string)$row->module;
|
||||
if (!\Payments\Registry::has($module)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
$p = \Payments\Registry::get($module, $this->base_object);
|
||||
if ($p && $p->supportsExpress()) {
|
||||
$out[] = array('module' => $module, 'label' => $p->label());
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
error_log('Payments express button '.$module.': '.$e->getMessage());
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
private function update_shoppingcart() {
|
||||
foreach ($_POST['update_item'] as $item => $quantity) {
|
||||
if ($quantity > 0) {
|
||||
|
||||
Reference in New Issue
Block a user