Ошибка:продавец не дал разрешение на выполнение операции
#1 Участник
Отправлено 14 ноября 2009 - 02:11
Код результа такой:
...
// ЕСЛИ ЭТО ФОРМА ПРЕДВАРИТЕЛЬНОГО ЗАПРОСА, ТО ИДЕМ ДАЛЬШЕ...
IF($_POST['LMI_PREREQUEST']==1) {
// 2) Проверяем, не произошла ли подмена суммы.
// Cравниваем сделанную ставку с той суммой, что передана нам Мерчантом.
// Если сумма не совпадает, то выводим ошибку и прерываем работу скрипта.
if(trim($res[1])!=trim($_POST['LMI_PAYMENT_AMOUNT'])) {
$err=1;
echo "Ошибка: неверная сумма ".$_POST['LMI_PAYMENT_AMOUNT'];
exit;
}
// 3) Проверяем, не произошла ли подмена кошелька.
// Cравниваем наш настоящий кошелек с тем кошельком, который передан нам Мерчантом.
// Если кошельки не совпадают, то выводим ошибку и прерываем работу скрипта.
if(trim($_POST['LMI_PAYEE_PURSE'])!="здесь_кошелёк") {
$err=1;
echo "Ошибка: неверный кошелёк получателя ".$_POST['LMI_PAYEE_PURSE'];
exit;
}
// Если ошибок не возникло, то выводим YES
if(!$err) echo "YES";
}
// ЕСЛИ НЕТ LMI_PREREQUEST, СЛЕДОВАТЕЛЬНО ЭТО ФОРМА ОПОВЕЩЕНИЯ О ПЛАТЕЖЕ...
ELSE {
// Задаем значение $secret_key.
// Оно должно совпадать с Secret Key, указанным нами в настройках кошелька.
$secret_key="здесь_secret_key";
// Склеиваем строку параметров
$common_string = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$secret_key.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];
// Шифруем полученную строку в MD5 и переводим ее в верхний регистр
$hash = strtoupper(md5($common_string));
// Прерываем работу скрипта, если контрольные суммы не совпадают
if($hash!=$_POST['LMI_HASH']) exit;
// Вносим ставку в БД
...
}
?>
#2 Продвинутый пользователь
Отправлено 14 ноября 2009 - 03:08
Я думаю нужно смотреть в настроки кошелька, к которому прицеплен мерчант, возможно
гдето забыли поставить галочку или что-то не дописали. Дайте сюда скан настройки мы посмотрим.
#3 Участник
Отправлено 14 ноября 2009 - 07:37
#4 Продвинутый пользователь
Отправлено 14 ноября 2009 - 13:38
Думаю должно все заработать.
#5 Продвинутый пользователь
Отправлено 14 ноября 2009 - 13:42
#6 Участник
Отправлено 14 ноября 2009 - 13:52
Сразу увидите где скрипт возвращает направильный результат (или неправильно отрабатывает).
Если еще в отправке указать шаг на котором случилась ошибка, станет совсем просто ее найти.
#7 Участник
Отправлено 14 ноября 2009 - 23:43
Код такой:
...
$text="Сумма: ".$_POST['LMI_PAYMENT_AMOUNT'];
mail("prorok.84@mail.ru",convert_cyr_string("Ваш товар",w,k),convert_cyr_string($text,w,k),"From: support@pitbull.kz\r\nContent-Type: text/plain; charset=\"koi8-r\"");
if(trim($res[1])!=trim($_POST['LMI_PAYMENT_AMOUNT'])) {
$err=1;
echo "Ошибка: неверная сумма ".$_POST['LMI_PAYMENT_AMOUNT'];
exit;
}
...
и так далее, может не так отправляю?
#8 Продвинутый пользователь
Отправлено 15 ноября 2009 - 01:09
Проблема может быть в двух строках:
if(trim($_POST['LMI_PAYEE_PURSE'])!="здесь_кошелёк")
"здесь_кошелёк" - должен быть прописан номер кошелька, на который все платится и он должен соответствовать номеру кошелька, который настроен на мерчант.
или тут
if(trim($res[1])!=trim($_POST['LMI_PAYMENT_AMOUNT']))
в данном элементе массива $res[1] должна храниться сумма, генерируемая вашим магазином и которая сравнивается с реально оплаченной суммой. Если в этом массиве ничего нет то соответственно и результат тот же.....
Если нужно, написать скрипт обращайтесь напишу за вознаграждение :-)
#9 Участник
Отправлено 15 ноября 2009 - 03:12
#10 Участник
Отправлено 15 ноября 2009 - 03:21
#11 Участник
Отправлено 16 ноября 2009 - 22:59
...
// Задаем значение $secret_key.
// Оно должно совпадать с Secret Key, указанным нами в настройках кошелька.
$secret_key="здесь_secret_key";
// Склеиваем строку параметров
$common_string = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$secret_key.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];
// Шифруем полученную строку в MD5 и переводим ее в верхний регистр
$hash = strtoupper(md5($common_string));
// Прерываем работу скрипта, если контрольные суммы не совпадают
if($hash!=$_POST['LMI_HASH']) exit;
// Вносим ставку в БД
...
не идёт оплата, со снятой галкой "Передавать параметры в предварительном запросе" тест проходит нормально, а вот данные в БД не вносятся, в связи с этим у меня вопрос: это нормально, или данные должны были добавиться?
#12 Участник
Отправлено 16 ноября 2009 - 23:07
#13 Участник
Отправлено 16 ноября 2009 - 23:14
В мегастоке нужно регистрироваться, иначе вы не выведите кошельки в рабочий режим.
#14 Участник
Отправлено 17 ноября 2009 - 00:40
Спасибо, попробую
#15 Участник
Отправлено 17 ноября 2009 - 07:05
#16 Знаток
Отправлено 17 ноября 2009 - 11:02
#17 Продвинутый пользователь
Отправлено 17 ноября 2009 - 13:45
if($hash!=$_POST['LMI_HASH']) exit;
и дальше выполнение не идет или сама запись в базу глючит. Что бы проверить правильность записи в базу уберите все выше этой строки и ее тоже, оставьте только код
// Вносим ставку в БД
...
и проверьте идет запись в базу или нет
ну и соответственно если все нормально значит с хешом нужно химичить..далеену и если нужен предварительный запрос то как сказал barlone пытайтесь получить ответ YES.
В тестовом режиме должно полностью все работать и в базу писаться и все остальное...только бабло не переводится реально, а остальное все реально.
Если рабочий режим кошелька не включается значит регистрируйтесь в мегастоке.
#18 Участник
Отправлено 17 ноября 2009 - 23:17
http://sourceforge.net/projects/merchant-php/files/merchant-php/1.0.4/merchant-php-1.0.4.zip/download
лежит пример скрипта, который на сайте мерчанта предлагается для рабочего примера, но он у меня выдаёт такую вот ошибку:
продавец не дал разрешение на выполнение операции : <html> <head> <title>Select item for payment</title> </head> <body> <p><b>Payment example for WM Merchant Service.</b></p> <form method="POST" action="payment.php"> <p><select name="item"> <option>Select item <option value="1">Test-1 - 0.01 WMZ <option value="2">Test-2 - 0.01 WMZ <option value="3">Test-3 - 0.02 WMZ </select></p> <p><label for="email">E-mail: </label><input type="text" name="email" id="email" value="" size="30"></p><input type="submit" value="Submit" /> </form> </body> </html>
посмотреть можно здесь: http://pit.idhost.kz/
Отсюда можно сделать вывод, что проблема всё-таки не в скрипте, а в сервисе, или нет?
#19 Знаток
Отправлено 17 ноября 2009 - 23:39
Это вы неправильно Result URL настроили.он у меня выдаёт такую вот ошибку:
продавец не дал разрешение на выполнение операции : <html> <head> <title>Select item for payment</title>
Таки нет.Отсюда можно сделать вывод, что проблема всё-таки не в скрипте, а в сервисе, или нет?
#20 Участник
Отправлено 17 ноября 2009 - 23:52
точно, уже всё в глазах плывёт, спасибо, всё работает, значит буду ковыряться дльше, хотя я бы по-любому ковырялся...Это вы неправильно Result URL настроили.