Алгоритм проверки данных IPN

Чтобы проверить подпись нужно:
1) запомнить из данных пришедшую подпись (поле sign)
2) убрать из данных поле sign
3) отсортировать данные по ключу в порядке возрастания
4) сформировать строку - склеить значения данных (без ключей) через ':'
если значение имеет тип 'массив' (labels, ids), то используйте для склейки значение 'Array'
5) добавить к строке ':' и MD5 хеш от ВАШ_API_КЛЮЧ
6) получить SHA1 хеш строки (в php это функция sha1())
7) сравнить подпись из п.1 с хешем из п.6


Пример обработчика IPN на php