Я только что закончил проходить тот же самый кошмар, кроме как с PayPal, с AlertPay. Скорее всего, проблемы похожи.
Как оказалось, в моем случае, по крайней мере, Запрещенный код 403 вводит в заблуждение. У меня была ошибка в моем коде кнопки. Я использовал один и тот же аргумент дважды. Я скопировал строку настраиваемого аргумента, чтобы добавить другой настраиваемый аргумент, но я забыл изменить имя аргумента.
Итак, я отправлял кнопку с повторяющимся аргументом, и она выдала мне ошибку 403 Forbidden. Не очень полезная ошибка, так как она заставила меня искать все неправильные места. Я тоже думал, что это проблема с разрешениями на моем слушателе ipn, но это не имеет к этому никакого отношения.
В связи с этим после того, как я решил эту проблему, я начал получать 500 (Внутренняя ошибка сервера). Эта ошибка 500 оказалась еще одной ошибкой кодирования с моей стороны, но на этот раз в моем сценарии прослушивания ipn. Я использовал «перерыв»; оператор внутри оператора if (PHP), который не допускается. Технически это не синтаксическая ошибка, поэтому скрипт все еще загружался, и код все еще выполнялся вокруг него, но это было недопустимое утверждение, и это вызывало 500 внутренних ошибок сервера в моем IPN.
Надеюсь, это поможет кому-то еще с такой же проблемой.