Реализация Django-PayPal PDT не может получать сигналы - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь реализовать django-paypal (версия dcramers из git), используя PDT с подписками.

Работает нормально (это означает, что return_url запрошен и получен ответ), однако сигналы не срабатывают (поместите в models.py). Я использую следующие сигналы, связанные с двумя различными функциями.

from paypal.standard.pdt.signals import pdt_successful, pdt_failed

При просмотре журналов доступа я заметил, что я получаю запрос POST от PayPal, который отклонен.

"POST /an-obscure-string/pdt/ HTTP/1.0" 401 401 "-" "-"

Я пытался изменить /paypal/standard/pdt/views.py, чтобы он принимал запросы POST, но все равно получаю ошибку 401. Я думаю, что это причина, по которой сигналы не срабатывают.

У меня плохое время с этим. Любая помощь будет принята с благодарностью.

PS: я использую учетную запись песочницы

РЕДАКТИРОВАТЬ Это мои значения PAYPAL POSTBACK от conf.py

POSTBACK_ENDPOINT = "https://www.paypal.com/cgi-bin/webscr"
SANDBOX_POSTBACK_ENDPOINT = "https://www.sandbox.paypal.com/cgi-bin/webscr"

1 Ответ

2 голосов
/ 20 марта 2012

Вы правы, именно поэтому сигнал не вызывается, поскольку сигналы отправляются в самом конце просмотра, если проверка модели успешна.

Ваше решение действительно неверно, Paypal определенно будетотправьте запрос GET с идентификатором транзакции на URL своего приложения, если вы решили использовать PDN.

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_html_paymentdatatransfer

Я действительно рекомендую вам проверить свои настройки (в учетной записи PayPal), поскольку вывозможно, с использованием IPN, в котором используются запросы POST.

Другая возможная причина этого заключается в том, что после получения запроса GET от PayPal ваше приложение отправляет данные POST в приложение, а не в конечную точку обратной передачи PayPal.(https://github.com/johnboxall/django-paypal/blob/master/standard/pdt/models.py#L47)

Я бы посмотрел журналы доступа, чтобы увидеть, приходит ли запрос POST после запроса GET (для того же URL-адреса), если да, я бы проверил значение настроек SANDBOX_POSTBACK_ENDPOINT и POSTBACK_ENDPOINT.

...