Почему не добавляется внешний ключ?
Для создания ключа в таблице `payment_types` должны существовать записи со всеми `id`, соответствующими всем имеющимся `payments`.`type_id`.
Определения полей должны совпадать.
int и unsigned int - разные типы полей.
Ну и, конечно, таковая строка должна существовать.