За последние 24 часа нас посетили 35539 программистов и 1819 роботов. Сейчас ищут 818 программистов ...

Проблема с merchant или в коде?

Тема в разделе "PHP для новичков", создана пользователем 1Feniks1, 19 янв 2016.

  1. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Здравствуйте! Несколько дней назад я уже здесь писал, ну тогда мне помогли, и скрипт заработал, но радость моя длилась не долго...
    Дело в том, что оплата происходит.. но информация об оплати мне не приходит, то есть это на сколько пополнял пользователь и Secret Key. Дани у webmoney указал, правильно как я думаю, но когда питаюсь просто проверить приходять дани или нет, то их нет.. Но при попытки подменять кошелек, то оплата не происходит, но Secret Ke и на сколько пополняли мне не приходит.. в чем тут может быть проблема?(
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В документации написано что Secret Key будет приходить если в настройках указано чтобы его отправлять и соединение было безопасное, то есть веб сервер отвечает по https, и адрес Result URL тоже с https.
    Но secret key можно не получать, достаточно проверить хэш на своей стороне, зная этот secret key, его самостоятельно можно в настройках веб мани мерчанта вписать.
     
  3. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    То вы хотите сказать что если у меня просто http:// а я выбрал отправить " Высылать на Result URL, если обеспечивается секретность " то информация не будет получена так как у меня просто http:// без шифровки в https://? И по этому у меня не отправляется или я не так понял?(
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    оставь http, сними галочку получать secret key, проверяй хеш. если верить документации, то данные всегда будут приходить от webmoney на result url
     
  5. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Конечно это очень тупой вопрос, а как проверить хеш?

    Добавлено спустя 24 минуты 48 секунд:
    Может ли не приходить дани из за того, что у меня идет оплата в текстовом режиме?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    1Feniks1 а как ты узнал что данные не приходят?

    Как всё происходит
    https://wiki.webmoney.ru/projects/webmoney/wiki/Web_Merchant_Interface#4

    Читай этот раздел, там всё написано как проверить хэш.
    https://wiki.webmoney.ru/projects/webmoney/wiki/Web_Merchant_Interface#ПРОВЕРКА-ИНФОРМАЦИИ-О-ПЛАТЕЖЕ

    Как проверить подпись
    https://wiki.webmoney.ru/projects/webmoney/wiki/Web_Merchant_Interface#14

    При формировании контрольной подписи сервис Web Merchant Interface "склеивает" значения полей, передаваемых "Формой оповещения о платеже", в одну строку в следующем порядке:
    Кошелек продавца (LMI_PAYEE_PURSE);
    Сумма платежа (LMI_PAYMENT_AMOUNT);
    Внутренний номер покупки продавца (LMI_PAYMENT_NO);
    Флаг тестового режима (LMI_MODE);
    Внутренний номер счета в системе WebMoney Transfer (LMI_SYS_INVS_NO);
    Внутренний номер платежа в системе WebMoney Transfer (LMI_SYS_TRANS_NO);
    Дата и время выполнения платежа (LMI_SYS_TRANS_DATE);
    Secret Key (LMI_SECRET_KEY);
    Кошелек покупателя (LMI_PAYER_PURSE);
    WMId покупателя (LMI_PAYER_WM).
     
  7. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Я так и делаю... но дани не приходят( вот скрипт:
    Код (PHP):
    1.    if($_POST['LMI_PREREQUEST']==1){
    2.     if($_POST['LMI_PAYEE_PURSE']=="R393107******")echo "YES";
    3. }else{
    4.     $key = $_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'].'AersTus;5'.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM'];
    5.         if(strtoupper(hash("sha256",$key)) != $_POST['LMI_HASH']){exit;}else{
    6.             session_start();$_SESSION[1]=1;require'config.php';
    7.             $row=mysql_fetch_assoc(mysql_query("SELECT points FROM users WHERE id={$_SESSION['userID']}"));
    8.             $suma=$row['points']+5;//$_POST['LMI_PAYMENT_AMOUNT']
    9.             mysql_query("UPDATE`users` SET `points` = $suma WHERE `id` = {$_SESSION['userID']}") or die(mysql_error());
    10.         }
    11. }
    12.  
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что содержит $_POST, webmoney твой скрипт выполняет?
     
  9. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Почему-то при попытки вывести глобальный массив $_POST мне вивело пустоту, но я поигрался не много и вот что оказалось:
    Если выводить глобальный массив в:(но тогда оплата не делается из за ошибки)
    Код (PHP):
    1. if($_POST['LMI_PREREQUEST']==1){
    2.     if($_POST['LMI_PAYEE_PURSE']=="R393*******")echo "YES";
    3.     echo'<pre>';print_r($_POST);echo'</pre>';
    Код (PHP):
    1.     [LMI_PREREQUEST] => 1
    2.     [LMI_MODE] => 1 
    3.     [LMI_PAYMENT_AMOUNT] => 13.00 
    4.     [LMI_PAYEE_PURSE] => *************
    5.     [LMI_PAYMENT_NO] => 0 
    6.     [LMI_PAYER_WM] => ***********
    7.     [LMI_PAYER_PURSE] => ******************
    8.     [LMI_PAYER_COUNTRYID] => UA
    9.     [LMI_PAYER_PCOUNTRYID] => UA 
    10.     [LMI_PAYER_IP] => ***********
    11.     [LMI_PAYMENT_DESC] => ������: ******
    12.     [LMI_LANG] => ru-RU
    А вот если это самое попытаться вивести в поле:
    Код (PHP):
    1. if($_POST['LMI_PREREQUEST']==1){
    2.     if($_POST['LMI_PAYEE_PURSE']=="R393*******")echo "YES";
    3. }else{  echo'<pre>';print_r($_POST);echo'</pre>';}
    То пусто.
    Но значение: $_POST['LMI_HASH'] нету..
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Предзапрос отключён? скрипт вписан как Result URL?
    http://forum.webmoney.ru/index.php?/topic/17668-%D0%BF%D0%B ... %B8%D1%82/

    как ты эти данные видишь, если запрос делает webmoney? я же давал код который пишет в файл wm.log
     
  11. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Не много не понял? что именно отключёно?
    Да!
    Ну этот же файл был нужен для того, что бы понять работает мой скрипт и мы тогда поняли, что да и я его убрал.. или я не так понял?(

    Добавлено спустя 2 минуты 45 секунд:
    Оно мне показало в окне с ошибкой у webmoney. Что:
    " Продавец не дал разрешение .. и этот код "
    В последнем окне оплаты, дает ошибку и этот код( а если вывод убрать, то код работает
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    не мучай webmoney просто возвращай ему текст success.

    странно почему пишет "Продавец не дал разрешение", может из-за того что ты много текста возвращаешь? надо почитать документацию, что webmoney ждёт от result url

    Добавлено спустя 3 минуты 18 секунд:
    Ну вот всё из-за того что нам лень читать документацию полностью, советую тебе это сделать.

    https://wiki.webmoney.ru/projects/webmoney/wiki/Web_Merchant_Interface
    Понял почему ошибка?
     
  13. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Вместо YES ?
    Нет, текста я вывожу только вывод через print_r($_POST) и все, а если без него то работает.. возможно не можно делать выводы..

    Добавлено спустя 2 минуты 7 секунд:
    Я это уже прочитал и у меня после проверки идет этот вывод и все равно(
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Да, я писал это до того как почитал документацию.
    Вместо YES пиши когда например ХЭШ неверный и скажи что ошибка приёма платежа.

    Да, там должно быть только YES и всё, если что-то другое, то webmoney думает что произошла ошибка, ты же теперь знаешь какие у неё инструкции.
    Посмотри на мой код, в самом начале, я писал данные post в файл и ничего не выводил, пальцы то помнят, что там это лишнее.

    Даже когда вернул в RESULT URL только YES у тебя даже тогда выходит ошибка и пишет причину YES?
     
  15. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Нет, тогда у меня делает оплату и перекидывает на страницу где оплата успешно! Но дани ключ не отправляет(
    Я сейчас попытаюсь вместо YES написать как ты писал success
    Дало ошибку и вот что написало в красном:
    продавец не дал разрешение на выполнение операции : success
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что ты там придумываешь? Result Url должна вернуть YES если ты проверил и всё хорошо, или текст ошибки, если что-то пошло не так.
    Ты понимаешь что Result Url использует только webmoney? Пользователь на неё не заходит. Для пользователя есть Success URL.

    Добавлено спустя 55 секунд:
    Webmoney всегда будет выдавать ошибку если получил что-то кроме YES. Это закон.
     
  17. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Да я это понимаю... потому и там указаны другие ссылки...
    У меня и передает YES ты писал, что бы я написал вместо YES это Success для того, что бы посмотреть какая ошибка..
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну тут уже запутались, я писал про success когда ещё не читал документацию, давал верную наводку, думал ты почитаешь, но ты писал что всё равно происходит ошибка, и я полез читать документацию и дал тебе цитату, ты сказал что всё понял, но зачем тогда пихать success, если в документации пишут, что если всё хорошо, то верни YES.
    Старайся за последовательностью тоже следить.
     
  19. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Та я подумал, что вместо YES если написать success дасть другую ошибку..
    А про то что там должно быть только YES я уже читал в документации и в других статтях и еще с несколько видео..
    Но у меня вот так, первый раз когда webmoney проверяет мой скрипт, то идет проверка на LMI_PREREQUEST равен 1 и еще проверка равен ли номер кошелька и тогда вывожу YES это все делается, а вот по документации webmoney еще второй раз(если оплата успешна) должен зайти на мой скрипт и отдать дани это ключи и еще.. а он этого не делает почему-то..
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    так отключи предзапрос
    и будешь получать один запрос на result url когда деньги уже переведены
     
  21. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    А где его отключить у webmoney а то я не совсем понимаю о каком предзапрос речь(
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    https://merchant.webmoney.ru/conf/purses.asp -> (ДЛЯ кошелька) настроить -> Result URL -> снять галочку: Передавать параметры в предварительном запросе
     
  23. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Сделал так.. и все равно, оплату сделало, а от ключ не отправило..
     
  24. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а хэш пришёл? покажи какие данные прислал webmoney
     
  25. 1Feniks1

    1Feniks1 Активный пользователь

    С нами с:
    27 дек 2013
    Сообщения:
    93
    Симпатии:
    1
    Как мне проверить этот хэш??
    При оплаты webmoney мне не чего не отправляет..
    Но когда я питался содержимое POST то у меня POST имел значение только в случае если я писал его у условие проверки кошелька и отправки YES а в других местах пусто..(