岡野さん

お世話になります。

トレースログを確認したいのですが、

こういったsignalでの処理のログを見る方法や、そのための設定などはご存知だったりしますでしょうか。


何卒、よろしくお願い致します。

2015年3月13日金曜日 11時55分30秒 UTC+9 shinriyo:
>
> 岡野さん
>
> ご返信ありがとうございました。
>
> Django1.6でしたので、
> connectの処理を試しにROOT_URLCONFの指定先のurls.pyやmodels.py 
> <http://urls.xn--pymodels-4k4g.py>に変更してみました。
> しかしながら、PayPal購入時にコールされることがありませんでした。
>
> ソースコードを読みながらになるかもしれませんね・・・。
>
> 2015年3月12日木曜日 9時52分32秒 UTC+9 tokibito:
>>
>> 岡野です。
>>
>> django-paypalについてはわからないので、signalのconnectについてのみアドバイスします。
>>
>> > おそらくこれらの処理はviews.pyの各メソッド内に書くのではなくて、
>> > そのままviews.pyへ記載して購入時にコールバックされる的なものという認識です。
>>
>> はい、その認識であっています。
>> ただし、connect処理が記述されたモジュールが読み込まれる前にシグナル送信が行われると、通知されないので注意してください。
>> シグナル送信前に確実に登録したいのであれば、Djangoのプロジェクトがロードされるタイミングで読み込まれるモジュールに記述したほうがよいです。
>>
>>
>> Django1.6ということなので、ROOT_URLCONFに設定したurls.pyか、models.pyなどにconnect処理を記述すると良いかと思います。
>> Django1.7以上であれば、AppConfigのreadyメソッドで登録します。
>>
>> シグナルがそもそも発行されて無さそう、という場合だとソースコードを読みながらデバッグをがんばるしかないかもしれませんね...
>>
>>
>> 2015年3月11日水曜日 15時39分42秒 UTC+9 shinriyo:
>>>
>>> お世話になります。
>>>
>>> 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 にアクセスしてください。

メールによる返信