• Καλησπέρα,

    Μιας και λύθηκε το ζήτημα με το IRIS που ήταν και σοβαρό και αναγκαίο για άμεση επίλυση, θα μπορούσαμε να δούμε και ένα άλλο ζήτημα που είχε αναφερθεί και παλιότερα αλλά δεν πήρε τη σειρά του για επίλυση;

    Όταν γίνει ανακατεύθυνση για να πληρωθεί μια παραγγελία και αυτό δεν καταστεί εφικτό, υπάρχει δυνατότητα να αποσταλεί σύνδεσμος για να πληρωθεί χωρίς να γίνει εξ’ αρχής καταχώρηση νέας παραγγελίας μέσω της επιλογής “collect payment” και στη συνέχεια “share payment link”.

    Όταν αποσταλεί ο σύνδεσμος στον πελάτη, αυτός επιβεβαιώνει καταχωρώντας το email που δήλωσε κατά την παραγγελία του, στη συνέχεια εμφανίζονται οι λεπτομέρειες της παραγγελίας και επιλέγει την πληρωμή της.

    Μετά από αυτό το σημείο προκύπτει το παρακάτω σφάλμα:

    E-mail address is a mandatory field!
    Billing town/city is a mandatory field!
    Billing country / region is a mandatory field!
    Billing state / county is a mandatory field!
    Billing street address is a mandatory field!
    Billing postcode / ZIP is a mandatory field!

    Πιστεύω ότι το ζήτημα προκύπτει, διότι το plugin δεν διαβιβάζει ξανά τα απαραίτητα στοιχεία για την πληρωμή της παραγγελίας στην τράπεζα. Θεωρώ πως είναι εύκολο να γίνει αντιπαραβολή των στοιχείων που διαβιβάζονται στην μια περίπτωση και αυτών που διαβιβάζονται στην άλλη.

    Είμαι στη διάθεσή σας για οποιαδήποτε διευκρίνηση ή δοκιμή έκδοσης.

    Ευχαριστούμε και πάλι τους δημιουργούς του plugin και το papaki για την συνεισφορά τους στην κοινότητα!

    • This topic was modified 2 months, 3 weeks ago by gisaak.
Viewing 1 replies (of 1 total)
  • vkouvelis

    (@vkouvelis)

    Προσωρινή λύση ωσότου βγει official update :

    αντικατάσταση των παρακάτω functions στο woo-payment-gateway-for-piraeus-bank/classes/WC_Piraeusbank_Gateway.php

    public function validate_fields() {
    
        $requiredFields = [
            'billing_email'     => 'E-mail address',
            'billing_city'      => 'Billing town/city',
            'billing_country'   => 'Billing country / region',
            'billing_state'     => 'Billing state / county',
            'billing_address_1' => 'Billing street address',
            'billing_postcode'  => 'Billing postcode / ZIP',
        ];
    
        // Try to get the order if on order-pay page
        $order = null;
        if ( isset( $_GET['pay_for_order'], $_GET['key'] ) ) {
            $order_key = sanitize_text_field( $_GET['key'] );
    
            // Get the order using the order key
            $order_id = wc_get_order_id_by_order_key( $order_key );
            if ( $order_id ) {
                $order = new WC_Order( $order_id );
            }
    
        }
    
        $has_error = false;
    
    
        foreach ( $requiredFields as $field => $label ) {
    
            // Priority: POST > Order > empty
            if ( isset( $_POST[ $field ] ) && trim($_POST[ $field ]) !== '' ) {
                $value = trim( $_POST[ $field ] );
            } elseif ( $order ) {
                $getter = "get_$field";
                $value = method_exists( $order, $getter ) ? $order->$getter() : '';
            } else {
                $value = '';
            }
    
            if ( empty( $value ) ) {
                wc_add_notice( sprintf( '%s is a mandatory field!', $label ), 'error' );
                $has_error = true;
            }
        }
    
        return ! $has_error;
    }
    public function process_payment( $order_id ) {
    $order = new WC_Order( $order_id );

    $key = esc_attr( $this->id ) . '-card-doseis';

    $doseis = isset( $_POST[ $key ] ) ? (int) $_POST[ $key ] : 1;

    // replaced the above
    if ( $order instanceof WC_Order && $doseis > 0 ) {
    $order->add_meta_data( '_doseis', $doseis, true );
    $order->save();
    }

    return [
    'result' => 'success',
    'redirect' => add_query_arg( 'order-pay', $order->get_id(), add_query_arg( 'key', $order->get_order_key(), wc_get_page_permalink( 'checkout' ) ) ),
    ];
    }
Viewing 1 replies (of 1 total)

You must be logged in to reply to this topic.