Ich erstelle einen Online-Shop mit WooCommerce und ich füge eine Funktion hinzu, die den Bonuspunkt auf meine Datenbank in absract-wc-payment-gateway.php
aktualisiert.WooCommerce - get_order() funktioniert nicht und es gibt null zurück
Hier ist, was ich tue:
- Zum einen auf der Checkout-Seite, werden die Benutzer klicken Sie auf die
place order
Taste und dann die Methode der Benutzer Bonuspunkte und minus die Bonuspunkte mit demget-total()
bekommen, und dann auf die Datenbank aktualisieren und auf die Dankeseite gehen.
- Dann wird die Dankesseite werden die Bonuspunkte aus der Datenbank des Benutzers erhalten. Und ich die Bonuspunkte Wert auf 2000 Also in diesem Fall sollten die Bonuspunkte minus von Gesamt Punkten sein ($ 50,00)
Hier ist mein Code. Es lief, wenn der Benutzer den Ort, um Schaltfläche klickt:
global $woocommerce;
$order = new WC_Order($order_id);
$total = $order->get_total();
$bonusPoint -= (int)$total; //minus total price and calculate the latest bonus point
$updateSql = "UPDATE userdata02 SET bonusPoint ='" .$bonusPoint. "' WHERE userID = 2147483647";
mysqli_query($link, $updateSql);// update to an int column
if(mysqli_query($link, $updateSql)) {
echo "Record updated successfully";
} else {
echo "Error update record: <>" . mysqli_error($link);
}
Rufen Sie die Methode, wenn der Benutzer Ort Schaltfläche klickt:
public function get_return_url($order = null) {
if ($order) {
//$message = "wrong answer";
//echo "<script type='text/javascript'>alert('$message');</script>";
$return_url = $order->get_checkout_order_received_url();
} else {
$return_url = wc_get_endpoint_url('order-received', '', wc_get_page_permalink('checkout'));
}
if (is_ssl() || get_option('woocommerce_force_ssl_checkout') == 'yes') {
$return_url = str_replace('http:', 'https:', $return_url);
}
self::reducePoints(); //Call reducePoints();
return apply_filters('woocommerce_get_return_url', $return_url, $order);
}
Der Quellcode: reducePoints()
Linien 89 von abstract-WC-Payment-Gateway.php
Die get_total()
funktioniert nicht und es gibt Null zurück.
Was mache ich falsch?
Haben Sie das Fehlerprotokoll überprüft, warum dieser interne Fehler auftritt? –