Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Формирование подписи INTERKASSA

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gheka
Отправлено: 30 Января, 2015 - 16:52:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Здравствуйте.

Может кто писал или знает как формируется подпись у INTERKASSA.COM

Пишу модуль оплаты INTERKASSA для своего магазина вроде всё сделал но вот подпись в файле RESULT не проходит. Чего только не делал не пойму.
До этого написал несколько модулей подобных сервисов и таких проблем не было но тут прям не знаю.
Подпись формы запроса проходит оплата тоже, но выполнение дальнейших функции не происходит

В форме запроса отправляю:
PHP:
скопировать код в буфер обмена
  1.  
  2. ik_am=1.00
  3. ik_co_id=bbc32bbf4efccb0e405b
  4. ik_cur=RUB
  5. ik_desc=тестовый
  6. ik_pm_no=7730
  7. ik_x_type=goods
  8.  


На файл RESULT приходят данные

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. ik_sign=gBJ5b20PDhuCTzq2C8vRS1nS41pHCJHQ9jRH4Vqllxw=
  4. ik_am=1.00
  5. ik_co_id=bbc32bbf4efccb0e405b
  6. ik_cur=RUB
  7. ik_desc=тестовый
  8. ik_pm_no=7730
  9. ik_x_type=goods
  10.  


PHP:
скопировать код в буфер обмена
  1.  
  2. Секретный ключ
  3. m_key=vgL3EWJ56l4eS
  4.  


формирую подпись из полученных данных

PHP:
скопировать код в буфер обмена
  1.  
  2. $arHash = array( $ik_am, $ik_co_id, $ik_cur, $ik_desc, $ik_pm_no, $ik_x_type, $m_key );
  3.  
  4. $sign = base64_encode ( hash ('sha256', implode(':', $arHash), true) );
  5.  

Получается okZya+5jfc+zY0pSlAJ5++MpHA3PT4zXMhJ+rb67Yp4=

От них же приходит gBJ5b20PDhuCTzq2C8vRS1nS41pHCJHQ 9jRH4Vqllxw=

Как там у них формируется подпись не пойму. Может что то они ещё в подпись добавляют но в инструкции у них на сайте я не нашёл

Может что то я упустил если знаете напишите.

(Отредактировано автором: 30 Января, 2015 - 21:51:23)

 
 Top
gheka
Отправлено: 30 Января, 2015 - 21:50:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Проблема решена тему можно закрыть
 
 Top
SAD
Отправлено: 30 Января, 2015 - 22:19:57
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Может, расскажите как решили? Другим будем полезно это знать.
 
 Top
shevket
Отправлено: 23 Апреля, 2016 - 20:08:36
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2016  


Помог: 0 раз(а)




gheka пишет:
Проблема решена тему можно закрыть


ТОЧНО такая же проблема. Пожалуйста, подскажите в чём ошибку допускаем?
 
 Top
gheka
Отправлено: 23 Апреля, 2016 - 23:53:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




shevket пишет:
gheka пишет:
Проблема решена тему можно закрыть


ТОЧНО такая же проблема. Пожалуйста, подскажите в чём ошибку допускаем?


видимо не правильно всё таки формовал подпись в файле RESULT

Сделал так.

PHP:
скопировать код в буфер обмена
  1.  
  2. $LMI_HASH = isset ( $_POST ['ik_sign'] ) ? strval ( $_POST ['ik_sign'] ) : '';
  3. $dataSet = $_POST; // Записываем в переменную $dataSet полученный массив от interkassa
  4. unset ( $dataSet['ik_sign'] ); // Удаляем из массива строку ik_sign
  5. ksort ( $dataSet, SORT_STRING ); // Сортирует массив по ключам
  6. array_push ( $dataSet, $SecretKeyInterkassa ); // Добавляет СЕКРЕТНЫЙ КЛЮЧ INTERKASSA в конец массива
  7. $signString = implode ( ':', $dataSet ); // Объединяет элементы массива в строку через : (двоеточие)
  8. $code = base64_encode ( hash ( 'sha256', $signString, true )); // кодирует данные способом MIME base64. Алгоритм формирования подписи sha256
  9.  
  10. // Сверяем подписи
  11. if ( strtolower ( $code ) == strtolower ( $LMI_HASH )) {
  12. // Верная подпись продолжаем выполнение скрипта
  13. } else {
  14. // Не верная подпись, останавливаем работу скрипта
  15. }
  16.  
  17.  


И ВСЁ ЗАРАБОТАЛО.

(Отредактировано автором: 27 Апреля, 2016 - 09:19:09)

 
 Top
shevket
Отправлено: 24 Апреля, 2016 - 17:05:07
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2016  


Помог: 0 раз(а)




gheka, спасибо огромное. РАБОТАЕТ!

2 дня мучался...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB