Django Paypal IPN:只有在live模式下才有错误的内容类型(它在沙盒中工作)

2024-03-29 05:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成功地集成了沙盒模式下的django贝宝,以及django调试设置。我的付款完成了,并且连接到接收到的有效IP的信号被触发。你知道吗

当我移动到贝宝直播模式,付款也收到,但我不再收到任何信号。以下是通常触发PayPal IPN的代码:

class StoreItemView(SomeUserCheckMixin, SomeAjaxMixin, View):
    # …some business logic…

    paypal_dict = {
        'business': settings.PAYPAL_RECEIVER_EMAIL,
        'item_name': 'my item',
        'amount': '20',
        'discount_amount': '10',
        'currency_code': 'USD',
        'invoice': generate_uuid_as_string(),
        'payment_date': timezone.now().strftime('%H:%M:%S %b %d, %Y') + ' CET',
        'lc': 'FR',
        'bn': 'SomeCompany_BuyNow_WPS_FR',
        'email': request.user.email,
        'first_name': request.user.first_name,
        'last_name': request.user.last_name,
        'address1': request.user.profile.adress.street,
        'address2': request.user.profile.adress.extension,
        'zip': request.user.profile.adress.zip,
        'city': request.user.profile.adress.city,
        'country': 'FR',
        'night_phone_a': '33',
        'night_phone_b': request.user.profile.phone_number,

        'notify_url': notify_url,
        'return': return_url,
        'cancel_return': cancel_return_url,
        'custom': request.user.username + _separateur + str(cible),
    }

    return render(request, self.template_name, {
        'form': PayPalPaymentsForm(initial = paypal_dict)
    })

# After my functions to hook to the Following signals
valid_ipn_received.connect(store_check_transaction)
invalid_ipn_received.connect(store_alert_bad_transaction)

我的配置设置是这样设置的,管理员包含邮件提醒如果发生任何错误,一些日志信息将出现在我的自定义日志(我知道它在我的网站上的其他操作工作),我的贝宝设置如下:

# In debug mode:
ALLOWED_HOSTS = ['localhost', '.paypal.com', 'paypal.com.']
PAYPAL_TEST = True
PAYPAL_RECEIVER_EMAIL = 'somemail-facilitator@somecompany.fr'
PAYPAL_BUY_BUTTON_IMAGE = 'https://www.somecompany.fr/static/media/pay.png'

# …and in production / live mode:
ALLOWED_HOSTS = ['.somecompany.fr', '123.234.34.56', 'paypal.com.', 'paypal.com.']
PAYPAL_TEST = False
PAYPAL_RECEIVER_EMAIL = someemail@somecompany.fr'

没有信号出现。我错过了什么?有没有办法检查我的IPN呼叫在哪里结束?我在PayPal开发者仪表盘上什么也没找到。你知道吗

更新:我收到这个断言错误,但只有在实时模式下。你知道吗

AssertionError: Invalid Content-Type - PayPal is only expected to use application/x-www-form-urlencoded. If using django's test Client, set `content_type` explicitly

我知道它接收的是json。正常吗?你知道吗


Tags: djangonamecomurlreturn信号request模式