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


Фотография

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


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

#1 Новичок 403257322155 (WMID 403257322155 )

  • Группа: Пользователи
  • сообщений 4
  • Регистрация: 29-мая 13
  • Webmoney BL

Отправлено 03 июня 2013 - 22:48

Доброго времени суток, форумчане.

Настраиваю сайт на прием платежей. Столкнулся с такой проблемой. Если включена опция "Передавать параметры в предварительном запросе" мне выдает ошибку

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

Я прочитал все темы, с таким названием здесь на форуме, но решения проблемы не нашел.

Я понимаю, что сервер должен вернуть "YES" и он это делает по идее. Но я не могу понять, что не так происходит. Вот код моего resultUrl

public function result()
    {
        if(isset($_POST['LMI_PREREQUEST']))
        { 
            echo 'YES';exit(0);    
        }
        else
        { 
           if( ! isset($_POST['LMI_PAYEE_PURSE']) )
           {
               exit('ERR: Отсутствует номер кошелька продaвца');
           }
           $hash = $_POST['LMI_HASH'];
           $this->load->helper('file');
            write_file('./success.txt', $hash);        
        }
    }

 

я уже упростил код до невозможности даже пытался без проверки вернуть YES. Ничего не помогает.

Если отключить передачу параметров в предварительном запросе, то платеж проходит, но тогда не приходят никакие данные ни в первом ни во втором запросе. И не возможно проверить, что прошел платеж.

Вот на всякий случай форма

<form action="https://merchant.webmoney.ru/lmi/payment.asp" accept-charset="utf-8" method="post" id="checkout">
	<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.00">
	<input type="hidden" name="LMI_PAYMENT_DESC" value="test pay">
	<input type="hidden" name="LMI_PAYMENT_NO" value="1">
	<input type="hidden" name="LMI_PAYEE_PURSE" value="Rхххххххххххх">
        <input type="submit" value="Оплатить" name="submit" />
</form>

 

Если у кого то была такая проблема, поделитесь пожалуйста опытом ее решения. Заранее благодарен за ответы.

 


    • 0
  • Наверх

#2 Обычный пользователь, не сотрудник AndrewTishkin (WMID 282697973392 )

  • Группа: Модераторы
  • сообщений 16 602
  • Регистрация: 17-ноября 08
  • МестоположениеРоссия/Глазов
  • Webmoney BL

Отправлено 04 июня 2013 - 01:33

я уже упростил код до невозможности

Ну-ну...
У меня вопрос простой - эта штукенция

public function result()

у Вас где располагается? Чтобы она работала, то должна быть засунута в класс

class MyClass {
public function result() { ... }
}

и ещё потом вызвана на исполнение!

$myclass = new MyClass;
$myclass->result();

Очень просто, дальше некуда, :D куда там до неё непостижимо навороченному ResultURL.php со следующим кодом внутри

<?php

echo 'YES';

?>


1zpt4647mzk.png.png Реферально-партнёрские ссылки и откровенная (само)реклама на форуме допускаются только в личной подписи :excl:
    • 0
  • Наверх

#3 Новичок 403257322155 (WMID 403257322155 )

  • Группа: Пользователи
  • сообщений 4
  • Регистрация: 29-мая 13
  • Webmoney BL

Отправлено 04 июня 2013 - 01:56

На самом деле все очень просто. Это фреймворк. result это метод класса pay. 

class Pay extends CI_Controller
{
    public function result()
    {     
        if(isset($_POST['LMI_PREREQUEST']))
        { 
            echo 'YES';exit(0);                           
        }
        else
        { 
           if( ! isset($_POST['LMI_PAYEE_PURSE']) )
           {
               exit('ERR: Отсутствует номер кошелька продaвца');
           }
           print_r($_POST);
               
        }
    }
}

 

Не буду рассказывать здесь каим образом загружается конроллер Pay и почему он наследуется от CI_Controller :P 

Важно, что он доступен по адресу http://site.ru/pay/result

Причем я отсылал сэмулированный пост запрос с $_POST['LMI_PREREQUEST'] равным 1. Мне браузер вывел YES. 

Но когда форма оплаты отправляется мерчанту, происходит ошибка описанная в первом посте.

Такое, впечатление, что мерчант не видит моего ответа? Или не понимает?

Может быть в настройках кошелька проблема?

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

Ох хо... Вопросы - вопросы.


    • 0
  • Наверх

#4 Обычный пользователь, не сотрудник AndrewTishkin (WMID 282697973392 )

  • Группа: Модераторы
  • сообщений 16 602
  • Регистрация: 17-ноября 08
  • МестоположениеРоссия/Глазов
  • Webmoney BL

Отправлено 04 июня 2013 - 03:09

Непонятно, мерчант LMI_PREREQUEST = 1 присылает, или вообще ничего на ResultURL не шлёт, ни разу к Вам не стучится?

А если шлёт, что именно, в каком виде?

print_r($_POST);

 

 

Мне кажется проблема в этом, вначале проглядел:

accept-charset="utf-8"

Сами придумали, или где позаимствовали? Мерчант наоборот всегда был нацелен на кодировку windows-1251, о чём немало обсуждений в сети.

Меняйте, может сразу чудо и свершится. :)


1zpt4647mzk.png.png Реферально-партнёрские ссылки и откровенная (само)реклама на форуме допускаются только в личной подписи :excl:
    • 0
  • Наверх

#5 Новичок 403257322155 (WMID 403257322155 )

  • Группа: Пользователи
  • сообщений 4
  • Регистрация: 29-мая 13
  • Webmoney BL

Отправлено 04 июня 2013 - 12:32

Непонятно, мерчант LMI_PREREQUEST = 1 присылает, или вообще ничего на ResultURL не шлёт, ни разу к Вам не стучится?

Я смотрел логи сервера. Есть два зпароса к site.ru/pay/result. Имеют статус 200. Но вот отловить что пришло в POST не получается.

print_r($_POST);

Ничего не выводит, да и не может. Поскольку страница result вызывается не в браузере.

accept-charset="utf-8"

В начале было accept-charset="windows-1251"

Потом было accept-charset="cp1251"

Но результат был тот же самый.

Я уж не знаю, что и делать. :(


    • 0
  • Наверх

#6 Новичок 403257322155 (WMID 403257322155 )

  • Группа: Пользователи
  • сообщений 4
  • Регистрация: 29-мая 13
  • Webmoney BL

Отправлено 04 июня 2013 - 12:48

Сохранил, пост в сессию, вот результат

Первый запрос:
array(5) {
  ["LMI_PAYMENT_AMOUNT"]=>
  string(4) "1.00"
  ["LMI_PAYMENT_DESC"]=>
  string(8) "test pay"
  ["LMI_PAYMENT_NO"]=>
  string(1) "1"
  ["LMI_PAYEE_PURSE"]=>
  string(13) "R415004259113"
  ["submit"]=>
  string(0) ""
}

Второй запрос
array(5) {
  ["LMI_PAYMENT_AMOUNT"]=>
  string(4) "1.00"
  ["LMI_PAYMENT_DESC"]=>
  string(8) "test pay"
  ["LMI_PAYMENT_NO"]=>
  string(1) "1"
  ["LMI_PAYEE_PURSE"]=>
  string(13) "R415004259113"
  ["submit"]=>
  string(0) ""
}

Вообще ничего не пнимаю. Где же ответ от мерчанта?

 

Кстати интересный момент. Поставил вместо адреса страницы в resultUrl свой email. На почту пришло письмо со всеми параметрами как положено. Какая то мистика.

 

UPD

Ай-яй-яй причина нашлась. Скажем так причина была очень
нетривиальной. У меня на сайте стоит проверка на авторизованного
пользователя. И по умолчанию распостраняется на все действия
пользователя. Для того, что бы какие то действия пользователь мог
совержать ему это нужно разрешить.

Получается такая
неприятная штука. Мерчант отсылает пост запрос. Идет проверка. Мерчант
определяется как неавторизованный пользователь и отсылается на форму
авторизации. В итоге мерчант не получает ответ YES при первом запросе. И
не отправляет данные при втором.

Нда... Невнимательность, причина всех бед.

Думаю тему не стоит удалять, вдруг кто то еще окажется не внимательным. Избавится человек от многодневных поисков.


Сообщение отредактировал 403257322155: 04 июня 2013 - 13:21

    • 1
  • Наверх

#7 Обычный пользователь, не сотрудник AndrewTishkin (WMID 282697973392 )

  • Группа: Модераторы
  • сообщений 16 602
  • Регистрация: 17-ноября 08
  • МестоположениеРоссия/Глазов
  • Webmoney BL

Отправлено 05 июня 2013 - 15:30

Ай-яй-яй причина нашлась. Скажем так причина была очень нетривиальной.
Мерчант определяется как неавторизованный пользователь и отсылается на форму авторизации

Ну вот и хорошо, что всё хорошо закончилось. :)

Интересно было почитать разгадку, спасибо


1zpt4647mzk.png.png Реферально-партнёрские ссылки и откровенная (само)реклама на форуме допускаются только в личной подписи :excl:
    • 0
  • Наверх