お世話になります。

Paypalでの決済をDjango上に実装を行っております。
どうしても解決できませんでしたので、投稿いたしました。

Django 1.6でdjango-paypalの0.2バージョンを使ってます。
PayPalの「IPN」を使用しています。
購入のボタンをPayPalPaymentsFormで生成し、
サンドボックスのアカウント設定をし、そのアカウントで購入できるところまでは動作しています。

PayPalPaymentsFormに渡す辞書には、

    paypal_dict = {
        "business": settings.PAYPAL_RECEIVER_EMAIL,
        "amount": "100",
        "item_name": name,
        "invoice": "invoice-1",
        "notify_url": reverse('paypal-ipn'),
        "return_url": PAYPAL_URL + "/return-location/",
        "cancel_return": PAYPAL_URL + "/cancel-location/",
        "currency_code": "JPY",
    }


url.pyには以下の様な記載をしています。

(r'^something/paypal/', include('paypal.standard.ipn.urls')),
url(r'^payment-url/$', login_required(view_that_asks_for_money), name=
'paypal'),
(r'^return-location/$', 'fbuser_app.views.return_location'),
(r'^cancel-location/$', 'fbuser_app.views.cancel_location'),


意図したreturn-locationとcancel-locationにも遷移は出来ます。
notify_urlはどういったものかよく理解できませんでしたが、
https://github.com/spookylukey/django-paypal/blob/07d61a4e9a5ce78153bc4ff6fd99b8eed77983bc/paypal/standard/ipn/urls.py
こちらのようにpaypal-ipnで定義されてあるので大丈夫と思います。

PDTでしか使わないと思われる、「IDトークン」も取得してsettings.pyに記載しております。

http://django-paypal.readthedocs.org/en/latest/standard/ipn.html
の公式ドキュメントを参考にしました。

valid_ipn_receivedとinvalid_ipn_receivedでの
シグナルをディスパッチできません。

valid_ipn_received.connect(show_me_the_money)
invalid_ipn_received.connect(error_show_me_the_money)

のようにviws.pyへ記載しています。

おそらくこれらの処理はviews.pyの各メソッド内に書くのではなくて、
そのままviews.pyへ記載して購入時にコールバックされる的なものという認識です。

以下のコードは何を示すのかわかりませんが、1は支払い完了の条件、
2がよくわかりませんが、これらのコードも省いて実験してもうまく動作しませんでした。

1
if ipn_obj.payment_status == ST_PP_COMPLETED:

2
if ipn_obj.custom == "Upgrade all users!":


そもそも、スレッドが違うせいかログが出ないだけかもしれないので、
の以下のようにDBに何らかしらの入れる処理を記載しましたが、
DBは変化しませんでした。

※「DBになにか入れる処理」については、直接叩いてみてエラーのないことを確認しています。

def show_me_the_money(sender, **kwargs):
    # DBになにか入れる処理


※error_show_me_the_moneyも同様の処理。

さらにログに残るように、
http://w3facility.org/question/django-paypal-does-not-receive-ipn-signal/
を参考にして(※このサイトはエラーで見えない時もあります)、
以下の様な必要最低限の処理をしました。

def show_me_the_money(sender, **kwargs):
    ipn_obj = sender
    try:
        ipn_obj.verify(item_check_callable)
    except:
        traceback.print_exc(file=sys.stdout)



※error_show_me_the_moneyも同様の処理。

しかし、tail -f /var/log/httpd/access20150311.log
には何も出てきませんでした。

どうかご教示よろしくお願い致します。

-- 
-- 
-----------------                       http://djangoproject.jp/                
         -----------------
You received this message because you are subscribed to the Google Groups 
"django-ja" group.
To post to this group, send email to django-ja@googlegroups.com
To unsubscribe from this group, send email to 
django-ja-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/django-ja
--- 
このメールは Google グループのグループ「django-ja」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com 
にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

メールによる返信