2015-08-03 9 views
9

Für WooCommerce suche ich nach einer Lösung, um eine Bestellung programmatisch zu erstellen (meine Seite hat nur 1 Homepage mit einigen Feldern).WooCommerce eine Bestellung programmgesteuert erstellen und zur Zahlung umleiten

Nachdem Produkte mit einer Checkbox hinzugefügt werden, möchte ich eine Bestellung erstellen und zur Zahlungsmethode umleiten.

Erstellen einer Bestellung ist fast fertig mit dieser Antwort, aber wie starte ich eine Zahlung? Wordpress (Woocommerce extension) - Create new order programatically

+0

Große Frage in der Tat, ich war auch für die Lösung suchen. – MrIndomitable

Antwort

12

Dieses es für mich getan hat:

if (isset($_POST['isOrder']) && $_POST['isOrder'] == 1) { 
    $address = array(
     'first_name' => $_POST['notes']['domain'], 
     'last_name' => '', 
     'company' => $_POST['customer']['company'], 
     'email'  => $_POST['customer']['email'], 
     'phone'  => $_POST['customer']['phone'], 
     'address_1' => $_POST['customer']['address'], 
     'address_2' => '', 
     'city'  => $_POST['customer']['city'], 
     'state'  => '', 
     'postcode' => $_POST['customer']['postalcode'], 
     'country' => 'NL' 
    ); 

    $order = wc_create_order(); 
    foreach ($_POST['product_order'] as $productId => $productOrdered) : 
     $order->add_product(get_product($productId), 1); 
    endforeach; 

    $order->set_address($address, 'billing'); 
    $order->set_address($address, 'shipping'); 

    $order->calculate_totals(); 

    update_post_meta($order->id, '_payment_method', 'ideal'); 
    update_post_meta($order->id, '_payment_method_title', 'iDeal'); 

    // Store Order ID in session so it can be re-used after payment failure 
    WC()->session->order_awaiting_payment = $order->id; 

    // Process Payment 
    $available_gateways = WC()->payment_gateways->get_available_payment_gateways(); 
    $result = $available_gateways[ 'ideal' ]->process_payment($order->id); 

    // Redirect to success/confirmation/payment page 
    if ($result['result'] == 'success') { 

     $result = apply_filters('woocommerce_payment_successful_result', $result, $order->id); 

     wp_redirect($result['redirect']); 
     exit; 
    } 
} 
+1

es wäre toll, wenn Sie auch Javascript beifügen würden. – Tomasz

+1

Sie speicherten meine 2 Wochen, mit 900 usd, kann ich nicht mehr Wörter finden, um zu schätzen! –

+0

Absolut wunderbar, tolle Arbeit! – MrIndomitable

0

Um die Checkout-Seite zu überspringen, können Sie die URL zum Warenkorb hinzufügen.

function so_31787244_redirect_to_checkout($url) { 

    // Remove default cart message 
    WC()->clear_messages(); 

    // Redirect to checkout 
    $url = WC()->cart->get_checkout_url(); 

    return $url; 
} 
add_filter('add_to_cart_redirect', 'so_31787244_redirect_to_checkout'); 

Sie könnten auch ein Plugin verfolgen wie One Page Checkout

+0

Ich möchte die Warenkorb- und Kassenseite überspringen. Auf meiner Produktseite können Nutzer beispielsweise ihre Kontaktdaten eingeben und auf "Jetzt bezahlen" klicken. Danach muss eine Bestellung erstellt und auf die Bezahlseite umgeleitet werden (zB paypal.com). – Ronn0

+0

Ich bin nicht sicher, warum Sie WooCommerce dann sogar verwenden. Aber das klingt ziemlich benutzerfreundlich, vielleicht können Sie eine Funktion schreiben, die die Bestellung erstellt, wenn PayPal die Bestellung bestätigt. Aber es scheint viel Arbeit für wenig Nutzen zu sein. Ich denke, Sie sollten besser in ein SSL-Zertifikat und ein Premium-PayPal-Plugin investieren und die Zahlung direkt auf Ihrer Website akzeptieren. – helgatheviking

Verwandte Themen