Как формируется цифровая подпись?
1. массив объединяется в строку без разделителя
2. результат шифруется методом sha1 без всяких "ключей", с бинарным выводом
3. результат кодируется base64
4. к результату добавляется секретный ключ спереди и сзади
5. результат  шифруется методом md5 с бинарным выводом
6. результат кодируется base64
В целом этот этот алгоритм выглядит так, как будто его составлял пятиклассник, где-то краем уха слашавший про хэширование. Я бы не доверял платёжной системе, которая подписывает транзакции таким способом.
Полностью согласен с FanatPHP. А по вашему вопросу: скорее всего вы проигнорировали какое то требование типа расположения параметров в $data строго в алфавитном порядке.