Заказы Woocommerce - оплата покупателям - PullRequest
0 голосов
/ 25 апреля 2020

У меня была проблема в Woocommerce, что не было никакого способа произвести оплату для клиента по телефону. Некоторые из наших клиентов не разбираются в технологиях и любят делать заказы таким образом. Я обнаружил приведенный ниже фрагмент кода, который устраняет требование входа в систему при переходе по ссылке «Страница оплаты клиента» на go на страницу «Оформить заказ / Оплата заказа», чтобы мы могли ввести данные оплаты для клиента.

Есть ли причина, по которой это может быть небезопасно? Конечно, конфиденциальность и безопасность клиентов абсолютно необходимы.

function allow_payment_without_login( $allcaps, $caps, $args ) {
    // Check we are looking at the WooCommerce Pay For Order Page
    if ( !isset( $caps[0] ) || $caps[0] != 'pay_for_order' )
        return $allcaps;
    // Check that a Key is provided
    if ( !isset( $_GET['key'] ) )
        return $allcaps;

    // Find the Related Order
    $order = wc_get_order( $args[2] );
    if( !$order )
        return $allcaps; # Invalid Order

    // Get the Order Key from the WooCommerce Order
    $order_key = $order->get_order_key();
    // Get the Order Key from the URL Query String
    $order_key_check = $_GET['key'];

    // Set the Permission to TRUE if the Order Keys Match
    $allcaps['pay_for_order'] = ( $order_key == $order_key_check );

    return $allcaps;
}
add_filter( 'user_has_cap', 'allow_payment_without_login', 10, 3 );
...