Перейти к содержимому


Фотография

Ошибка:продавец не дал разрешение на выполнение операции


  • Пожалуйста, авторизуйтесь для ответа.
28 ответов в данной теме

#1 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 14 ноября 2009 - 02:11

У меня такой вопрос, делаю оплату, провожу тест, мне выдает сообщение: попытка заплатить c кошелька на кошелек через сервис merchant не удалась. Ошибка:продавец не дал разрешение на выполнение операции. Как можно исправить эту ошибку?

Код результа такой:

...
// ЕСЛИ ЭТО ФОРМА ПРЕДВАРИТЕЛЬНОГО ЗАПРОСА, ТО ИДЕМ ДАЛЬШЕ...
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;
// Вносим ставку в БД
...
}
?>
    • 0
  • Наверх

#2 Продвинутый пользователь Artur_Berest (WMID 330294121859 )

  • Группа: Пользователи
  • сообщений 33
  • Регистрация: 23-августа 07
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 14 ноября 2009 - 03:08

Данный код здесь не имеет значения.
Я думаю нужно смотреть в настроки кошелька, к которому прицеплен мерчант, возможно
гдето забыли поставить галочку или что-то не дописали. Дайте сюда скан настройки мы посмотрим.
    • 0
  • Наверх

#3 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 14 ноября 2009 - 07:37




    • 0
  • Наверх

#4 Продвинутый пользователь Artur_Berest (WMID 330294121859 )

  • Группа: Пользователи
  • сообщений 33
  • Регистрация: 23-августа 07
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 14 ноября 2009 - 13:38

Попробуй убрать галочку "Передача параметров в предварительном запросе" т.к. ты не обрабатываешь его.
Думаю должно все заработать.
    • 0
  • Наверх

#5 Продвинутый пользователь Artur_Berest (WMID 330294121859 )

  • Группа: Пользователи
  • сообщений 33
  • Регистрация: 23-августа 07
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 14 ноября 2009 - 13:42

...хотя в коде я смотрю он должен обрабатываться, но все равно попробуй убери может там косяк где-то....
    • 0
  • Наверх

#6 Участник Обменов.ком (WMID 219391095990 )

  • Группа: Пользователи
  • сообщений 26
  • Регистрация: 28-января 09
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 14 ноября 2009 - 13:52

Перед каждой проверкой переменных, сделайте отправку тех же переменных себе на почту.
Сразу увидите где скрипт возвращает направильный результат (или неправильно отрабатывает).
Если еще в отправке указать шаг на котором случилась ошибка, станет совсем просто ее найти.

    • 0
  • Наверх

#7 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 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;
}
...
и так далее, может не так отправляю?
    • 0
  • Наверх

#8 Продвинутый пользователь Artur_Berest (WMID 330294121859 )

  • Группа: Пользователи
  • сообщений 33
  • Регистрация: 23-августа 07
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 15 ноября 2009 - 01:09

Предполагаю, что скрипт ты бездумно где-то взял и прицепил к мерчанту.
Проблема может быть в двух строках:
if(trim($_POST['LMI_PAYEE_PURSE'])!="здесь_кошелёк")
"здесь_кошелёк" - должен быть прописан номер кошелька, на который все платится и он должен соответствовать номеру кошелька, который настроен на мерчант.
или тут
if(trim($res[1])!=trim($_POST['LMI_PAYMENT_AMOUNT']))
в данном элементе массива $res[1] должна храниться сумма, генерируемая вашим магазином и которая сравнивается с реально оплаченной суммой. Если в этом массиве ничего нет то соответственно и результат тот же.....
Если нужно, написать скрипт обращайтесь напишу за вознаграждение :-)



    • -1
  • Наверх

#9 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 15 ноября 2009 - 03:12

Само собой вместо "здесь_кошелёк" у меня стоит номер кошелька и он естесственно настроен на мерчант и я знаю что должно храниться в параметре LMI_PAYMENT_AMOUNT (документацию я читал и пример рассматривал, я хоть не веб-дизайнер, но всё-таки программист) просто я не могу найти ошибку, нужен взгляд со стороны
    • 0
  • Наверх

#10 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 15 ноября 2009 - 03:21

... кстати, Artur_Berest, ты как раз и есть взгляд со стороны , посмотрел на свой скрипт и увидел что не то приравниваю, завтра перепишу, а сейчас баю-бай, спать, спасибо, как исправлю, отпишусь...
    • 0
  • Наверх

#11 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 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;
// Вносим ставку в БД
...

не идёт оплата, со снятой галкой "Передавать параметры в предварительном запросе" тест проходит нормально, а вот данные в БД не вносятся, в связи с этим у меня вопрос: это нормально, или данные должны были добавиться?
    • 0
  • Наверх

#12 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 16 ноября 2009 - 23:07

... и ещё на мегастоке обязательно регистрироваться? Я там не регистрировался, может быть проблема в этом?
    • 0
  • Наверх

#13 Участник Обменов.ком (WMID 219391095990 )

  • Группа: Пользователи
  • сообщений 26
  • Регистрация: 28-января 09
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 16 ноября 2009 - 23:14

Проверьте как у вас передается сумма. Мерчант требует чтобы она была с точкой и 2 дробными нолями. Возможно подпись неправильно формируется из-за этого.
В мегастоке нужно регистрироваться, иначе вы не выведите кошельки в рабочий режим.

    • 0
  • Наверх

#14 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 17 ноября 2009 - 00:40

Обменов.ком
Спасибо, попробую
    • 0
  • Наверх

#15 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 17 ноября 2009 - 07:05

сумма передаётся нормально, ошибка та же
    • 0
  • Наверх

#16 Знаток 198376541534 (WMID 198376541534 )

  • Группа: Пользователи
  • сообщений 141
  • Регистрация: 20-марта 06
  • МестоположениеРоссия
  • Webmoney BL

Отправлено 17 ноября 2009 - 11:02

"Ошибка:продавец не дал разрешение на выполнение операции" - это полный текст сообщения ? Вообще-то после этой фразы должен быть текст, выданый вашим скриптом в ответ на предварительный запрос.  Если больше ничего нет, значит ваш скрипт ничего не вернул. А должен был написать "YES".
    • 0
  • Наверх

#17 Продвинутый пользователь Artur_Berest (WMID 330294121859 )

  • Группа: Пользователи
  • сообщений 33
  • Регистрация: 23-августа 07
  • МестоположениеУкраина
  • Webmoney BL

Отправлено 17 ноября 2009 - 13:45

Если данные в базу не вносятся значит срабатывает эта строка
if($hash!=$_POST['LMI_HASH']) exit;
и дальше выполнение не идет или сама запись в базу глючит. Что бы проверить правильность записи в базу уберите все выше этой строки и ее тоже, оставьте только код
// Вносим ставку в БД
...
и проверьте идет запись в базу или нет
ну и соответственно если все нормально значит с хешом нужно химичить..далеену и если нужен предварительный запрос то как сказал barlone пытайтесь получить ответ YES.

В тестовом режиме должно полностью все работать и в базу писаться и все остальное...только бабло не переводится реально, а остальное все реально.

Если рабочий режим кошелька не включается значит регистрируйтесь в мегастоке.
    • 0
  • Наверх

#18 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 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/

Отсюда можно сделать вывод, что проблема всё-таки не в скрипте, а в сервисе, или нет?
    • 0
  • Наверх

#19 Знаток 198376541534 (WMID 198376541534 )

  • Группа: Пользователи
  • сообщений 141
  • Регистрация: 20-марта 06
  • МестоположениеРоссия
  • Webmoney BL

Отправлено 17 ноября 2009 - 23:39

он у меня выдаёт такую вот ошибку:
продавец не дал разрешение на выполнение операции : <html> <head> <title>Select item for payment</title>

Это вы неправильно Result URL настроили.

Отсюда можно сделать вывод, что проблема всё-таки не в скрипте, а в сервисе, или нет?

Таки нет.

    • 0
  • Наверх

#20 Участник PitbullGroup (WMID 427364284985 )

  • Группа: Пользователи
  • сообщений 13
  • Регистрация: 14-ноября 09
  • МестоположениеКазахстан
  • Webmoney BL

Отправлено 17 ноября 2009 - 23:52

Это вы неправильно Result URL настроили.

точно, уже всё в глазах плывёт, спасибо, всё работает, значит буду ковыряться дльше, хотя я бы по-любому ковырялся...
    • 0
  • Наверх