Django-paypal внезапно перестает получать сигналы от Paypal

Я работаю над интеграцией Paypal в мой проект Django с использованием пакета Django-Paypal. Я успешно настроил все, и он работал, но внезапно сигналы из PayPal прекратились.

Какая проблема может возникнуть?

Вот что я сделал:

из view.py:

def payment_process(request):
minutes = int(request.user.tagging.count()) * 5
testhours = minutes / 60
hours = str(round(testhours, 3))
# pdb.set_trace()
# What you want the button to do.
invoice = generate_cid()
userInfo = {
    "name": str(request.user.first_name + ' ' + request.user.last_name),
    "hours": str(hours),
    "taggedArticles": str(request.user.tagging.count())
}
paypal_dict = {
    "business": settings.PAYPAL_RECEIVER_EMAIL,
    "item_name": "Certificate of Completion from Nami Montana",
    "custom": userInfo,
    "invoice": str(invoice),
    "amount": "5.00",
    "notify_url": "https://6fd5e31b.ngrok.io/users/paypal/",
    # "return_url": "https://6fd5e31b.ngrok.io/users/profile/",
    "cancel_return": "https://6fd5e31b.ngrok.io/users/cancel/",
}
print(paypal_dict)
# Create the instance.
form = PayPalPaymentsForm(initial=paypal_dict)
context = {"form": form}
return render(request, "users/generateCert.html", context)

из urls.py:

urlpatterns = [
   url('^paypal/', include('paypal.standard.ipn.urls')),
   url('^profile/buildCertificate/$', views.CertificateProcess.as_view(), name='certificate'),
   url('^cancel/$', views.payment_canceled, name='cancel'),
   url('^done/$', views.payment_done, name='done'),
   url('^process/$', views.payment_process, name='payment'),
]

Из signal.py:

def show_me_the_money(sender, **kwargs):
ipn_obj = sender
custom = ipn_obj.custom
# Undertake some action depending upon `ipn_obj`.
if ipn_obj.payment_status == ST_PP_COMPLETED:
    print('Get success signal')
    user_info = ast.literal_eval(ipn_obj.custom)
    if int(user_info['taggedArticles']) > 11:
        # here i need to generate and send a pdf file to the user in a new tab
        pass
else:
    print('Get fail signal')


payment_was_successful.connect(show_me_the_money)

Update: When I have tested it with live IPN sandbox it returns IPN was sent and the handshake was verified


Payment is successfully depositing to the PayPal sandbox merchant account, only the signal is doing some problem.

Помоги мне, пожалуйста!

Заранее спасибо!

По моему опыту, песочница PayPal иногда может работать довольно медленно. Как долго вы ждали сигнала? Также, если вы не знали, вы также можете проверить полученные вызовы ipn в администраторе django, что очень полезно

hwhite4 10.03.2018 10:29

Привет @ hwhite4, даже в админке Django IPN PayPal не приходит.

Abdul Rehman 10.03.2018 10:34

Хорошо, как долго вы этого ждали? Песочница иногда медленно отправляет ipn

hwhite4 10.03.2018 10:35

Привет @ hwhite4, если вы имеете в виду ожидание ответа, то я думаю, что проверил его, подождав даже 2-3 минуты!

Abdul Rehman 10.03.2018 10:42

Хорошо, iv провела тестирование в песочнице с помощью ngrok, где иногда для получения ipn требовалось 20+ минут, но в других случаях это было бы очень быстро.

hwhite4 10.03.2018 10:43

Так что, если он иногда работает, это может быть проблемой

hwhite4 10.03.2018 10:43

Итак, я думаю, мне следует немного подождать, прежде чем вносить какие-либо изменения в свой исходный код, я прав?

Abdul Rehman 10.03.2018 10:50

Да, наверное, лучше немного подождать

hwhite4 10.03.2018 14:34

см. обновление вопроса, пожалуйста!

Abdul Rehman 10.03.2018 14:38

с живым запросом песочницы IPN я нашел флаг Invalid form. (payment_date: Invalid date format Sat Mar 10 2018 18:32:10 GMT+0500 (PKT): too many values to unpack (expected 5)) в моем администраторе django. Что это значит?

Abdul Rehman 10.03.2018 14:39

Привет @ hwhite4, я думаю, что это проблема, потому что, если проблема была в песочнице, она не должна отправлять сигнал из песочницы IPN.

Abdul Rehman 10.03.2018 14:54

Возможно, проблема в отправляемой вами форме. Также способ, которым вы передаете словарь на заказ, вероятно, не сработает. Вы можете преобразовать его в строку json, хотя

hwhite4 10.03.2018 15:05

Также, возможно, стоит прочитать stackoverflow.com/questions/16798206/…

hwhite4 10.03.2018 15:09

Теперь я протестировал его, удалив словарь userInfo, но все равно он не работает.

Abdul Rehman 10.03.2018 16:32

Привет @ hwhite4, еще одна вещь, которую я заметил, в консоли показывает предупреждение, в котором говорится: «UserWarning: этот метод (или ветвь) не покрывается автоматическими тестами. warn_untested () `

Abdul Rehman 10.03.2018 16:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
15
156
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня та же проблема. Мое приложение работало, а теперь нет. Я много чего пробовал (с python3.5, а не 3.6, удалил все .pyc, удалил и установил django-paypa, сменил порт ...) Кажется, это ничего не меняет.

Я сдавался, но получил все свои сигналы за один раз. После этого прошло много времени. Я попробовал сразу после и ничего, никаких сигналов.

Итак, для меня проблема на сервере PayPal. На это нужно время. Нам придется подождать.

Надеюсь, мой опыт вам поможет :)

Currently, it works normally for me (11 march 2018 11am). I hope it's the same for you :)

Привет, @Romain, ты был прав, теперь он работает и у меня. Спасибо,

Abdul Rehman 12.03.2018 11:11

Другие вопросы по теме