2011-09-06 22 views
0

私はpaypal ipnリスナーに取り組んでいました。信号が聞こえていないようですが、データベースが更新されたので、ipnがpaypal.standard.ipnパッケージ。Django-Paypal IPN 403エラー

今、私はipnシミュレータから403エラーが発生しました。なぜこれが起こるのか誰にも分かりませんか?リスナーURLに直接ナビゲートすると、エラーは発生しません。

@csrf_exemptをリスナーに追加しましたが、それは役に立たなかった。

ご提案は大歓迎です。

Listeners.py:

from django.dispatch import receiver 
from django.contrib.sites.models import Site 

from django.views.decorators.csrf import csrf_exempt 
from paypal.standard.ipn import signals as paypal_signals 
from messaging import send 
from utests.models import Test 
import logging 


@csrf_exempt 
@receiver(paypal_signals.payment_was_successful) 
def payment_was_succesful_listener(sender, **kwargs): 
    #:sender is the PayPalIPN model instance 
    logging.debug("in payment successful listener") 
    ... the rest of the code is commented out while I debug... 


@receiver(paypal_signals.payment_was_flagged, dispatch_uid="dl-payment_was_flagged") 
def payment_was_flagged_listener(sender, **kwargs): 
    #:sender is the PayPalIPN model instance 
    pass 

あなたが見ることができるように、起こることになっていることすべては、いくつかのデバッグですが、それはそこに取得していません。

+0

エラーログ/権限を確認してください。何らかの理由でスクリプトが403(Forbidden)を返しています。それがあなたのスクリプト/環境に依存する理由はわかりません。 – Robert

+0

@Robertは正しいですが、ログがなく(おそらく関連コードが表示されます)、この質問は答えが不可能で、ローカライズされすぎてしまいます。私は改善したら、他の人にとって、特に関連するコードを表示すると役に立つかもしれないので、(まだ)それを閉じているわけではありません。 –

+0

エラーログには何も表示されません。アクセスログにはリモートのip、url、および403が表示されます。403エラーが発生する前にアクセス権を変更していませんでしたが、彼らは大丈夫です。私は場合に備えてログを投稿します... – hgolov

答えて

2

もう一度同じ問題が発生しました。

@csrf_exemptをdjango-paypalパッケージ自体に追加する必要があります。ペイパルで

/標準/ IPN/views.py追加:輸入の残りの部分のうち、最上部に

from django.views.decorators.csrf import csrf_exempt 

を、関数宣言上記@require_POST上記

@csrf_exempt 

0

これは非常に遅い答えですが、私はまったく同じ問題を抱えていました。私たちのサーバー上のApacheの基本認証(開発時に使用されていた)をオフにしていなかったことが分かります。 PayPalはその認証レイヤーを通過できないため、応答で403が取得されます。それは別の問題かもしれませんが、これは確かに私たちの問題でした!

0

私は同じ問題がありました。 私のvirtualenvでは django-paypalがインストールされていて、私のプロジェクトにはpaypalというアプリがありました。 私のアプリケーションに@csrf_exemptを追加すると、djangoは常にVirtualenvのpaypalパッケージを呼び出してしまうため、機能しませんでした。 私はpipをアンインストールしてdjango-paypalをアンインストールしましたが、すべてうまくいっています(別の解決策はおそらくパッケージビューを修正しています)

私はそれが助けてくれることを願っています!

0

urls.pyのレイアウトが原因である可能性もあります。私はデフォルトの家の着陸ページのために '^'正規表現を持つのに十分なほど馬鹿でした。その文の前にipn urlを変更すると、すべてが機能しました。