winston14
Новичок
Проблема описана в коде, в комментариях, 38 строка.
Переменная $candidate_id как будь то исчезает в условии if ($_REQUEST['yandex_money'] == 'check') {....}
CMS WordPress
Убрать условие if ($candidate_id > 0){....} не решает проблемы.
Напишите пожалуйста стоимость и сроки когда сможете сделать. Я второй день уже мучаюсь и никак не могу понять, в чем проблема.
Переменная $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);
}
}
}