За последние 24 часа нас посетили 17865 программистов и 1607 роботов. Сейчас ищут 1023 программиста ...

API LiqPay или велосипед не едет

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

  1. Zadorozhniy

    Zadorozhniy Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Приветствую всех, товарищи и недоброжелатели!
    Вообщем, суть такова, нужно принимать оплату на сайте, я выбрал систему LiqPay украинского ПриватБанка. Кнопку приёма оплаты установил, настроил, но возникла проблема.

    Я хотел начать получать уведомления о смене статуса платежа и если платёж успешный - заносить в БД данные введённые пользователем в форму, которая расположена на одной странице с кнопкой приёма платежа. Нашел в документации такую штуку, как "Callback - уведомление о статусе платежа", порылся в интернете и написал код.

    Оформил тестовый платеж, начал тестить - результат отрицательный. Выводит: Wrong Signature. Где-то прочитал, что необходим сертификат SSL для получения статуса платежа, но тут 50/50, раньше просто уведомление об отсутствии сертификата вылазило.

    Вообщем, не могу додумать почему мои костыли не работают, вроде всё по феншую сделал. Из вариантов только отсутствие сертификата или неправильные костыли.
    API(здесь именно информация про статусы платежа): https://www.liqpay.com/ru/doc/callback
    Мои костыли: http://pastebin.com/n8brcSf9
    Прошу, не нужно злиться и заводить негатив. На негатив всегда отвечаю добром.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну ты не используешь $_POST['data'] при формировании подписи.
     
  3. Zadorozhniy

    Zadorozhniy Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    извините меня за мою тугость, где его можно применить в моём коде?
    Ранее я пробовал заменить $POST_['signature'] заменить на $POST_['data'], но тогда это результата не дало.
    Заранее спасибо за внимание к проблеме.
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну это алхимия уже, тыканье в небо пальцем.

    Там в документации сказали, что пришлют тебе $_POST['signature'] и $_POST['data'], там же есть пример, можно его ближе к реальности
    PHP:
    1. $private_key .
    2. base64_decode($_POST['data']) .
    3. $private_key
    4. , 1 ));
    5.  
    6. if(strcmp($sign, $_POST['signature']) === 0)) {
    7. // всё в шоколаде
    8. }
    Надо внимательные читать, может и я что-то накрутил нет так.
     
  5. Zadorozhniy

    Zadorozhniy Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Попробовал опять заняться алхимией, но безрезультатно. Из поддержки LiqPay вообще не отвечают :(
    Мои пробы:
    http://pastebin.com/58BTXx8R
    http://pastebin.com/RHw1Lfua
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну тогда сделай var_export($_POST); и выложи его сюда, потом давай ключ, потом его сменишь
     
  7. Zadorozhniy

    Zadorozhniy Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    в это время поражаюсь работе тех.поддержки LiqPay, такое ощущение, что она отсутствует. Чтоб бы конкретно не парить мозги постараюсь решить проблему до ночи самостоятельно, дальше буду опять просить всех помочь.
     
  8. denis01

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

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

    Zadorozhniy Новичок

    С нами с:
    19 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Написал в поддержку, обещают ответить на почтовый ящик, надеюсь завтра получить завтра ответ. Если найду ответ - отпишу, может кому-нибудь да пригодится.
    --- Добавлено ---
    продвинулся в решении проблемы, создал отдельный файл callback_robot.php, теперь в него поступает в виде массива значение signature и data, оттуда я их вытянул в файл process.php, который и выполняет сценарий по добавлению данных формы в БД. Проверил, значения signature и data поступают, но файл process.php все равно выдаёт ошибку. Досадно.
     
  10. skortes

    skortes Новичок

    С нами с:
    21 фев 2017
    Сообщения:
    36
    Симпатии:
    2
    Ты уже решил свой проблему?