Не бесплатно. Помогите решить задачу.

winston14

Новичок
Проблема описана в коде, в комментариях, 38 строка.
Переменная $candidate_id как будь то исчезает в условии if ($_REQUEST['yandex_money'] == 'check') {....}
CMS WordPress
Убрать условие if ($candidate_id > 0){....} не решает проблемы.
Напишите пожалуйста стоимость и сроки когда сможете сделать. Я второй день уже мучаюсь и никак не могу понять, в чем проблема.
PHP:
<?php
if (!defined('__DIR__')) define('__DIR__', dirname(__FILE__)); //getting current directory using magic constants __DIR__ is deprecated in php 5.3.+
$path = explode('wp-content',__DIR__); //getting main web root path for including further files.
include_once($path[0].'wp-load.php'); //for getting global variables like wpdb
global $current_user;
use WP_Jobsearch\Package_Limits;

   
add_action('parse_request', 'YMcheckPayment', 10, 1);
function YMcheckPayment()
{
    global $wpdb;
       
        // для теста старт
        $user_id = get_current_user_id();
        $candidate_id = jobsearch_get_user_candidate_id($user_id);
        $candidate_id = trim(str_replace(' ', '', $candidate_id));
       
        if ($candidate_id > 0){
            update_post_meta($candidate_id, 'money', '0', false); // Выполняется
        } else {
            update_post_meta('288', 'money', '2', false); // Не выполняется
        }
        // для теста конец

    if ($_REQUEST['yandex_money'] == 'check') {
       
        if ($_REQUEST['notification_type'] == 'card-incoming' || $_REQUEST['notification_type'] == 'p2p-incoming'){
            $hash = sha1($_REQUEST['notification_type'].'&'.$_REQUEST['operation_id'].'&'.$_REQUEST['amount'].'&'.$_REQUEST['currency'].'&'.
            $_REQUEST['datetime'].'&'.$_REQUEST['sender'].'&'.$_REQUEST['codepro'].'&'.get_option('ym_Secret').'&'.$_REQUEST['label']);

            if ($_REQUEST['test_notification'] != 'true' && $hash == $_REQUEST['sha1_hash']){
                $order_w = new WC_Order( $_REQUEST['label'] );
                $order_w->update_status('processing', __( 'Платеж успешно оплачен', 'woocommerce' ));
                $order_w->reduce_order_stock();

                if ($candidate_id > 0){
                    update_post_meta($candidate_id, 'money', '3', false); // Не выполняется, а должно
                } else {
                    update_post_meta('288', 'money', '4', false); // Выполняется но не должно
                }
            }
           
        } else { // дальше код не выполняется и не должен выполнятся так как $_REQUEST['notification_type'] всегда будет равно 'p2p-incoming' или 'card-incoming'
       
            $hash = md5($_POST['action'].';'.$_POST['orderSumAmount'].';'.$_POST['orderSumCurrencyPaycash'].';'.
                        $_POST['orderSumBankPaycash'].';'.$_POST['shopId'].';'.$_POST['invoiceId'].';'.
                        $_POST['customerNumber'].';'.get_option('ym_shopPassword'));
            header('Content-Type: application/xml');
            if (strtolower($hash) != strtolower($_POST['md5']) and (isset($_POST['md5']))) { // !=
                $code = 1;
                echo '<?xml version="1.0" encoding="UTF-8"?><checkOrderResponse performedDatetime="'. $_POST['requestDatetime'] .'" code="'.$code.'"'. ' invoiceId="'. $_POST['invoiceId'] .'" shopId="'. get_option('ym_ShopID') .'" message="bad md5"/>';
            } else {
                $order = $wpdb->get_row('SELECT * FROM '.$wpdb->prefix.'posts WHERE ID = '.(int)$_POST['customerNumber']);
                $order_summ = get_post_meta($order->ID,'_order_total',true);
                if (!$order) {
                    $code = 200;
                    $answer = '<?xml version="1.0" encoding="UTF-8"?><checkOrderResponse performedDatetime="'. $_POST['requestDatetime'] .'" code="'.$code.'"'. ' invoiceId="'. $_POST['invoiceId'] .'" shopId="'. get_option('ym_ShopID') .'" message="wrong customerNumber"/>';
                } elseif ($order_summ != $_POST['orderSumAmount']) { // !=
                    $code = 100;
                    $answer = '<?xml version="1.0" encoding="UTF-8"?><checkOrderResponse performedDatetime="'. $_POST['requestDatetime'] .'" code="'.$code.'"'. ' invoiceId="'. $_POST['invoiceId'] .'" shopId="'. get_option('ym_ShopID') .'" message="wrong orderSumAmount"/>';
                } else {
                    $code = 0;
                    if ($_POST['action'] == 'paymentAviso') {
                        $order_w = new WC_Order( $order->ID );
                        $order_w->update_status('processing', __( 'Платеж успешно оплачен', 'woocommerce' ));
                        $order_w->reduce_order_stock();

                            if (isset($candidate_id) && $candidate_id != '0'){
                                update_post_meta($candidate_id, 'money', '5', false);
                            } else {
                                update_post_meta('1496', 'money', '6', false);
                            }

                        $answer = '<?xml version="1.0" encoding="UTF-8"?><paymentAvisoResponse performedDatetime="'.date('c').'" code="'.$code.'" invoiceId="'.$_POST['invoiceId'].'" shopId="'.get_option('ym_ShopID').'" />';
                    }
                    else{
                        $answer = '<?xml version="1.0" encoding="UTF-8"?><checkOrderResponse performedDatetime="'.date('c').'" code="'.$code.'" invoiceId="'.$_POST['invoiceId'].'" shopId="'.get_option('ym_ShopID').'" />';
                    }
                }
            }
            die($answer);
        }
    }
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
посчитай цену, исходя из зарплаты senior $3k/mo, 22 рабочих дня - это $140 в день
1. поговорить с тобой, посмотреть проект, поставить у себя локально, получить деньги - примерно 1 день
2. чтение кода, дебаг - вероятно, 1 день
3. тестирование, исправление, если надо - еще день
то есть, за такие задачи обычно люди получают порядка $500 на работе
чтобы было интересно поработать на выходных, можно умножить на 1.5, например

интересно? тогда укажи сумму
рассчитывал на $50? тогда сам
 

winston14

Новичок
посчитай цену, исходя из зарплаты senior $3k/mo, 22 рабочих дня - это $140 в день
1. поговорить с тобой, посмотреть проект, поставить у себя локально, получить деньги - примерно 1 день
2. чтение кода, дебаг - вероятно, 1 день
3. тестирование, исправление, если надо - еще день
то есть, за такие задачи обычно люди получают порядка $500 на работе
чтобы было интересно поработать на выходных, можно умножить на 1.5, например

интересно? тогда укажи сумму
рассчитывал на $50? тогда сам
На фрилансе сделали за 15 долларов и за 2-3 часа (желающих было 7 человек). Работал максимум мидл и ему не потребовалось столько времени как ты пишешь, если senior тратит на такую задачу больше 1 дня то он тот еще "senior" грош цена такому "специалисту", а не 140 баксов в день.
 

fixxxer

К.О.
Партнер клуба
Вот и правильно сделал, что пошел на фриланс. Там полно любителей подобного. Тут за 15 баксов никто пальцем не двинет.
 

winston14

Новичок
Вот и правильно сделал, что пошел на фриланс. Там полно любителей подобного. Тут за 15 баксов никто пальцем не двинет.
не ну я рассчитывал на больший бюджет, до 50 долларов. Но так никто не написал, ни на этом форуме ни на другом))
 

Valick

Новичок
winston14, тут всё предельно просто, чем ниже квалификация, тем быстрее будет найдено решение проблемы и тем меньше вероятность, что найденное решение будет правильным.
 

Yoskaldyr

.
Партнер клуба
@Valick Существует и обратное (правда только при превышении квалификации определенного уровня):
чем выше квалификация, тем выше вероятность профдеформации и выше вероятность неоптимального решения (правильного но вообще не оптимального)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
о чем нам это говорит:
1. $15 - это цена пиццы, за 3 часа - это как-раз цена еды на время выполнения этой работы
2. они не сами купили компьютер, кто-то платит за их интернет
3. они не работают

вообще-то их порядка 15% населения :) а в играх они еще и платят тем, кто дает им задачки, такой вот дебаг на фрилансе - может быть, лучшее для подростков
 
Последнее редактирование:
Сверху