Перейти к содержанию
Авторизация  
AM0S

Interkassa Bad sign!

Рекомендуемые сообщения

В общем, поставил модуль подкючил касу и давай тестить.  делаю тестовый платеж и получаю меседж Bad sign!

персонаж тоже ничего не получил.

Далее снимаю галочку в касе Проверять подпись в форме запроса платежа

Делаю платеж получаю тот же меседж Bad sign!   но на персонажа зачислены коины...

помогите где что надо поправить?

 

<?php

ini_set( 'display_errors', '0' );
error_reporting( E_ALL );

//header( 'Content-Type: text/plain; charset=utf-8' );

require 'config.php';

// id вашего магазина
$ik_co_id = isset( $_POST['ik_co_id'] ) ? $_POST['ik_co_id'] : 0;

if ( $ik_co_id != CHECKOUT_ID )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Bad Checkout Id' );
}

$ik_inv_st = isset( $_POST['ik_inv_st'] ) ? $_POST['ik_inv_st'] : ''; 

if ( $ik_inv_st != 'success' )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Payment Required' );
}

// сумма платежа
$ik_am = isset( $_POST['ik_am'] ) ? $_POST['ik_am'] : 0; 

// id платежа
$ik_pm_no = isset( $_POST['ik_pm_no'] ) ? $_POST['ik_pm_no'] : 0; 

$ik_sign = isset( $_POST['ik_sign'] ) ? $_POST['ik_sign'] : '';

$post = $_POST;

$key = isset( $_POST['ik_pw_via'] ) && $_POST['ik_pw_via'] == 'test_interkassa_test_xts' 
	? TEST_KEY : SECRET_KEY;  

unset( $post['ik_sign'] );
ksort( $post, SORT_STRING );
array_push( $post, $key );
$signStr = implode( ':', $post );

$sign = base64_encode( hash( 'sha256', $signStr, true ) );

if ( $sign != $ik_sign )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Bad sign!' );
}

$char_name = isset( $_POST['ik_x_char'] )  ? $_POST['ik_x_char'] : '';
$server_id = isset( $_POST['ik_x_server_id'] )  ? $_POST['ik_x_server_id'] : -1;

if ( !isset( $config[ $server_id ] ) )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Invalid server id!' );
}

require 'db.class.php';

$db = new DB( $config[ $server_id ] );

if ( !( $char = $db->fetch( "SELECT obj_Id FROM characters WHERE char_name = ?", [ $char_name ] ) ) )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Персонаж с ником ' . $char_name . ' не найден!' );
}

$owner_id = $char['obj_Id'];
$count = ( int ) ( $ik_am / ITEM_PRICE ); // TODO: floor || ceil

$description = 'Interkassa payment id #' . $ik_pm_no;

$sql = "INSERT INTO `items_delayed` ( `payment_id`, `owner_id`, `item_id`, `count`, `payment_status`, `description` ) VALUES ( ?, ?, ?, ?, ?, ? )";

if ( !$db->prepareAndExecute( $sql, [ $ik_pm_no, $owner_id, ITEM_ID, $count, 0, $description ] )->rowCount() )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Платеж #' . $ik_pm_no . ' не принят!' );
}

// code 200	
echo 'success';

?>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, AM0S сказал:

В общем, поставил модуль подкючил касу и давай тестить.  делаю тестовый платеж и получаю меседж Bad sign!

персонаж тоже ничего не получил.

Далее снимаю галочку в касе Проверять подпись в форме запроса платежа

Делаю платеж получаю тот же меседж Bad sign!   но на персонажа зачислены коины...

помогите где что надо поправить?

 


<?php

ini_set( 'display_errors', '0' );
error_reporting( E_ALL );

//header( 'Content-Type: text/plain; charset=utf-8' );

require 'config.php';

// id вашего магазина
$ik_co_id = isset( $_POST['ik_co_id'] ) ? $_POST['ik_co_id'] : 0;

if ( $ik_co_id != CHECKOUT_ID )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Bad Checkout Id' );
}

$ik_inv_st = isset( $_POST['ik_inv_st'] ) ? $_POST['ik_inv_st'] : ''; 

if ( $ik_inv_st != 'success' )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Payment Required' );
}

// сумма платежа
$ik_am = isset( $_POST['ik_am'] ) ? $_POST['ik_am'] : 0; 

// id платежа
$ik_pm_no = isset( $_POST['ik_pm_no'] ) ? $_POST['ik_pm_no'] : 0; 

$ik_sign = isset( $_POST['ik_sign'] ) ? $_POST['ik_sign'] : '';

$post = $_POST;

$key = isset( $_POST['ik_pw_via'] ) && $_POST['ik_pw_via'] == 'test_interkassa_test_xts' 
	? TEST_KEY : SECRET_KEY;  

unset( $post['ik_sign'] );
ksort( $post, SORT_STRING );
array_push( $post, $key );
$signStr = implode( ':', $post );

$sign = base64_encode( hash( 'sha256', $signStr, true ) );

if ( $sign != $ik_sign )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Bad sign!' );
}

$char_name = isset( $_POST['ik_x_char'] )  ? $_POST['ik_x_char'] : '';
$server_id = isset( $_POST['ik_x_server_id'] )  ? $_POST['ik_x_server_id'] : -1;

if ( !isset( $config[ $server_id ] ) )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Invalid server id!' );
}

require 'db.class.php';

$db = new DB( $config[ $server_id ] );

if ( !( $char = $db->fetch( "SELECT obj_Id FROM characters WHERE char_name = ?", [ $char_name ] ) ) )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Персонаж с ником ' . $char_name . ' не найден!' );
}

$owner_id = $char['obj_Id'];
$count = ( int ) ( $ik_am / ITEM_PRICE ); // TODO: floor || ceil

$description = 'Interkassa payment id #' . $ik_pm_no;

$sql = "INSERT INTO `items_delayed` ( `payment_id`, `owner_id`, `item_id`, `count`, `payment_status`, `description` ) VALUES ( ?, ?, ?, ?, ?, ? )";

if ( !$db->prepareAndExecute( $sql, [ $ik_pm_no, $owner_id, ITEM_ID, $count, 0, $description ] )->rowCount() )
{
	header( $_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request', true, 400 );
	die( 'Платеж #' . $ik_pm_no . ' не принят!' );
}

// code 200	
echo 'success';

?>

 

sha256 сверь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, BlooDLucifer сказал:

sha256 сверь

Да стоит тоже самое. Меняю на md5 и все равно эта ошибка...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
39 минут назад, AM0S сказал:

Да стоит тоже самое. Меняю на md5 и все равно эта ошибка...

Ссылка на статью мб поможет я щас в командировке не за компом https://i-am-the-world.livejournal.com/38829.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я платежные системы не подключал. Но может попробовать использовать что-то типа PostMan и попробовать поиграть с параметрами и шифрованием? а уже исходят из этого можно будет сделать вывод, что такого этот код шлет корявого......

 

Изменено пользователем gawric

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там весь вопрос алгоритме и ключе и все. 

Хабр 22год я ставил ее в том году алгоритмы перепроверь. И РАЗРЕШЕНИЯ 

Screenshot_20220426-094400.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С ключами может чтото напутали. Там есть 2 ключа, реальный и тестовый, при использовании тестового метода оплаты соотвественно там будет генерация с использованием тестового ключа, так же убедитесь что выбран правильный алгоритм

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

меня смущает то что в тестовом клче просит валюту а в обычном ничего....

 

<?php

// Идентификатор кассы
define( 'CHECKOUT_ID', '6263c51c9a684678943a16tt' );

// Секретный ключ
define( 'SECRET_KEY', 'tTyd4f46hkaiTTYew' );

// Тестовый ключ
define( 'TEST_KEY', 'd3mWvktopPP0gRt' );

define( 'CURRENCY', 'USD' );

define( 'DESCRIPTION', 'Добровольное пожертвование' );

// ID выдаваемого предмета
define( 'ITEM_ID', 4037 );

// Стоимость одного предмета
define( 'ITEM_PRICE', 1 );

// Конфиг подключения к игровой бд
$config = [
	[
		'dbhost' => '45.90.201.154',
		'dbuser' => 'syto',
		'dbpass' => 'makdonald',
		'dbname' => 'inter',
		'dbport' => 3306
	],
	
];

?>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...