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
Форумы портала PHP.SU :: Версия для печати :: Формирование подписи INTERKASSA
Форумы портала PHP.SU » » Вопросы новичков » Формирование подписи INTERKASSA

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

1. gheka - 30 Января, 2015 - 16:52:48 - перейти к сообщению
Здравствуйте.

Может кто писал или знает как формируется подпись у 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=

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

Может что то я упустил если знаете напишите.
2. gheka - 30 Января, 2015 - 21:50:42 - перейти к сообщению
Проблема решена тему можно закрыть
3. SAD - 30 Января, 2015 - 22:19:57 - перейти к сообщению
Может, расскажите как решили? Другим будем полезно это знать.
4. shevket - 23 Апреля, 2016 - 20:08:36 - перейти к сообщению
gheka пишет:
Проблема решена тему можно закрыть


ТОЧНО такая же проблема. Пожалуйста, подскажите в чём ошибку допускаем?
5. gheka - 23 Апреля, 2016 - 23:53:07 - перейти к сообщению
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.  


И ВСЁ ЗАРАБОТАЛО.
6. shevket - 24 Апреля, 2016 - 17:05:07 - перейти к сообщению
gheka, спасибо огромное. РАБОТАЕТ!

2 дня мучался...

 

Powered by ExBB FM 1.0 RC1