Ich erstelle einen Online-Shop mit WooCommerce und füge eine Funktion hinzu, die den Bonuspunkt in meiner Datenbank aktualisiert absract-wc-payment-gateway.php
.
Hier ist, was ich tue:
- Zunächst klicken die Benutzer auf der Checkout-Seite auf die
place order
Schaltfläche und dann erhält die Methode die Bonuspunkte des Benutzers und minus die Bonuspunkte mit demget-total()
aktualisieren Sie dann die Datenbank und gehen Sie zur Dankesseite.
- Dann erhält die Dankesseite die Bonuspunkte des Benutzers aus der Datenbank. Und ich setze den Wert der Bonuspunkte auf 2000. In diesem Fall sollten die Bonuspunkte also um die Gesamtpunktzahl (50,00 $) minus sein.
Hier ist mein Code. Es wird ausgeführt, wenn der Benutzer auf die Schaltfläche „Bestellung aufgeben“ 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 auf, wenn der Benutzer auf die Schaltfläche „Platzieren“ 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()
Zeilen 89 aus abstract-WC-Payment-Gateway.php
Das get_total()
funktioniert nicht und gibt null zurück.
Was mache ich falsch?
Haben Sie das Fehlerprotokoll überprüft, warum dieser interne Fehler auftritt?
– mujuonly
11. Juli 2016 um 11:38 Uhr