Здравствуйте! Несколько дней назад я уже здесь писал, ну тогда мне помогли, и скрипт заработал, но радость моя длилась не долго... Дело в том, что оплата происходит.. но информация об оплати мне не приходит, то есть это на сколько пополнял пользователь и Secret Key. Дани у webmoney указал, правильно как я думаю, но когда питаюсь просто проверить приходять дани или нет, то их нет.. Но при попытки подменять кошелек, то оплата не происходит, но Secret Ke и на сколько пополняли мне не приходит.. в чем тут может быть проблема?(
В документации написано что Secret Key будет приходить если в настройках указано чтобы его отправлять и соединение было безопасное, то есть веб сервер отвечает по https, и адрес Result URL тоже с https. Но secret key можно не получать, достаточно проверить хэш на своей стороне, зная этот secret key, его самостоятельно можно в настройках веб мани мерчанта вписать.
То вы хотите сказать что если у меня просто http:// а я выбрал отправить " Высылать на Result URL, если обеспечивается секретность " то информация не будет получена так как у меня просто http:// без шифровки в https://? И по этому у меня не отправляется или я не так понял?(
оставь http, сними галочку получать secret key, проверяй хеш. если верить документации, то данные всегда будут приходить от webmoney на result url
Конечно это очень тупой вопрос, а как проверить хеш? Добавлено спустя 24 минуты 48 секунд: Может ли не приходить дани из за того, что у меня идет оплата в текстовом режиме?
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).
Я так и делаю... но дани не приходят( вот скрипт: Код (PHP): if($_POST['LMI_PREREQUEST']==1){ if($_POST['LMI_PAYEE_PURSE']=="R393107******")echo "YES"; }else{ $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']; if(strtoupper(hash("sha256",$key)) != $_POST['LMI_HASH']){exit;}else{ session_start();$_SESSION[1]=1;require'config.php'; $row=mysql_fetch_assoc(mysql_query("SELECT points FROM users WHERE id={$_SESSION['userID']}")); $suma=$row['points']+5;//$_POST['LMI_PAYMENT_AMOUNT'] mysql_query("UPDATE`users` SET `points` = $suma WHERE `id` = {$_SESSION['userID']}") or die(mysql_error()); } }
Почему-то при попытки вывести глобальный массив $_POST мне вивело пустоту, но я поигрался не много и вот что оказалось: Если выводить глобальный массив вно тогда оплата не делается из за ошибки) Код (PHP): if($_POST['LMI_PREREQUEST']==1){ if($_POST['LMI_PAYEE_PURSE']=="R393*******")echo "YES"; echo'<pre>';print_r($_POST);echo'</pre>'; Код (PHP): Array( [LMI_PREREQUEST] => 1 [LMI_MODE] => 1 [LMI_PAYMENT_AMOUNT] => 13.00 [LMI_PAYEE_PURSE] => ************* [LMI_PAYMENT_NO] => 0 [LMI_PAYER_WM] => *********** [LMI_PAYER_PURSE] => ****************** [LMI_PAYER_COUNTRYID] => UA [LMI_PAYER_PCOUNTRYID] => UA [LMI_PAYER_IP] => *********** [LMI_PAYMENT_DESC] => ������: ****** [LMI_LANG] => ru-RU А вот если это самое попытаться вивести в поле: Код (PHP): if($_POST['LMI_PREREQUEST']==1){ if($_POST['LMI_PAYEE_PURSE']=="R393*******")echo "YES"; }else{ echo'<pre>';print_r($_POST);echo'</pre>';} То пусто. Но значение: $_POST['LMI_HASH'] нету..
Предзапрос отключён? скрипт вписан как Result URL? http://forum.webmoney.ru/index.php?/topic/17668-%D0%BF%D0%B ... %B8%D1%82/ как ты эти данные видишь, если запрос делает webmoney? я же давал код который пишет в файл wm.log
Не много не понял? что именно отключёно? Да! Ну этот же файл был нужен для того, что бы понять работает мой скрипт и мы тогда поняли, что да и я его убрал.. или я не так понял?( Добавлено спустя 2 минуты 45 секунд: Оно мне показало в окне с ошибкой у webmoney. Что: " Продавец не дал разрешение .. и этот код " В последнем окне оплаты, дает ошибку и этот код( а если вывод убрать, то код работает
не мучай webmoney просто возвращай ему текст success. странно почему пишет "Продавец не дал разрешение", может из-за того что ты много текста возвращаешь? надо почитать документацию, что webmoney ждёт от result url Добавлено спустя 3 минуты 18 секунд: Ну вот всё из-за того что нам лень читать документацию полностью, советую тебе это сделать. https://wiki.webmoney.ru/projects/webmoney/wiki/Web_Merchant_Interface Понял почему ошибка?
Вместо YES ? Нет, текста я вывожу только вывод через print_r($_POST) и все, а если без него то работает.. возможно не можно делать выводы.. Добавлено спустя 2 минуты 7 секунд: Я это уже прочитал и у меня после проверки идет этот вывод и все равно(
Да, я писал это до того как почитал документацию. Вместо YES пиши когда например ХЭШ неверный и скажи что ошибка приёма платежа. Да, там должно быть только YES и всё, если что-то другое, то webmoney думает что произошла ошибка, ты же теперь знаешь какие у неё инструкции. Посмотри на мой код, в самом начале, я писал данные post в файл и ничего не выводил, пальцы то помнят, что там это лишнее. Даже когда вернул в RESULT URL только YES у тебя даже тогда выходит ошибка и пишет причину YES?
Нет, тогда у меня делает оплату и перекидывает на страницу где оплата успешно! Но дани ключ не отправляет( Я сейчас попытаюсь вместо YES написать как ты писал success Дало ошибку и вот что написало в красном: продавец не дал разрешение на выполнение операции : success
Что ты там придумываешь? Result Url должна вернуть YES если ты проверил и всё хорошо, или текст ошибки, если что-то пошло не так. Ты понимаешь что Result Url использует только webmoney? Пользователь на неё не заходит. Для пользователя есть Success URL. Добавлено спустя 55 секунд: Webmoney всегда будет выдавать ошибку если получил что-то кроме YES. Это закон.
Да я это понимаю... потому и там указаны другие ссылки... У меня и передает YES ты писал, что бы я написал вместо YES это Success для того, что бы посмотреть какая ошибка..
Ну тут уже запутались, я писал про success когда ещё не читал документацию, давал верную наводку, думал ты почитаешь, но ты писал что всё равно происходит ошибка, и я полез читать документацию и дал тебе цитату, ты сказал что всё понял, но зачем тогда пихать success, если в документации пишут, что если всё хорошо, то верни YES. Старайся за последовательностью тоже следить.
Та я подумал, что вместо YES если написать success дасть другую ошибку.. А про то что там должно быть только YES я уже читал в документации и в других статтях и еще с несколько видео.. Но у меня вот так, первый раз когда webmoney проверяет мой скрипт, то идет проверка на LMI_PREREQUEST равен 1 и еще проверка равен ли номер кошелька и тогда вывожу YES это все делается, а вот по документации webmoney еще второй раз(если оплата успешна) должен зайти на мой скрипт и отдать дани это ключи и еще.. а он этого не делает почему-то..
https://merchant.webmoney.ru/conf/purses.asp -> (ДЛЯ кошелька) настроить -> Result URL -> снять галочку: Передавать параметры в предварительном запросе
Как мне проверить этот хэш?? При оплаты webmoney мне не чего не отправляет.. Но когда я питался содержимое POST то у меня POST имел значение только в случае если я писал его у условие проверки кошелька и отправки YES а в других местах пусто..(