質問 > フロント機能 > PayPal即時支払い通知の警告 Ver.2.13.1 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tenso |
投稿日時: 2014/7/14 18:27
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
PayPal即時支払い通知の警告 Ver.2.13.1 PayPal即時支払い通知の警告 Ver.2.13.1
(利用環境) ========== EC-CUBE 2.13.1 決済モジュール:PayPalウェブペイメントプラス サーバー:ロリポプラン ========== PayPal社から【PayPal即時支払い通知の警告】のメールを受け取りまして、 "PayPal即時支払い通知(IPN)を処理しているサーバーをご確認ください。 PayPal側から送信している指定URLでのIPNが正常に実行されていません。" と言われています。 また、PayPalから当方のIPNサーバーからHTTPレスポンス400エラーコードを受けている とも言われていますが、そもそも初心者の私には、400エラーコードの修正方法が全く判りません。 本当に困ってしまいました。 まず対策として、PayPalマイアカウント内の【即時支払い通知(IPN)設定の編集】画面で、 通信URL欄にhttp://(当方のドメイン)/user_data/paypal_recv.php を入力して、受信を有効設定にしてみました。 それでも問題は改善されません。 PayPalテクニカルサポート相談していますが、以下のURLを参照して欲しいとの回答で、 元々プログラミング初心者である上に、英文ページでは全く手助けになりません。。。 ----<PayPalからの返答一部抜粋>-------------- 下記はIPNの使用ガイドになりますので、ご参照お願い致します。 https://developer.paypal.com/webapps/developer/docs/classic/ipn/gs_IPN/ 下記はIPNのサンプルコードになります。 https://github.com/paypal/ipn-code-samples 400エラーを解決する方法なんですが、ご参照お願い致します。 http://www.wiki-errors.com/err.php?wiki=400 通知 URL:http://(当方のドメイン)/user_data/paypal_recv.phpが正しく設定されていても、 IPN情報をPayPalからもらって、更新処理を行うスクリプトがまだ動作しな場合も お客様に警告メールが送信されます。 paypal_recv.phpこのスクリプトはIPN受信用だと思いますが、上記のIPNサンプルコードを 参照して関連コード直して、IPNが正常に受信するように直して頂けますでしょうか。 現在の状況から見ますと、送信し続けているPayPal即時支払い通知の警告に、 お客様のIPNサーバーからHTTPレスポンス400エラーコードをもらいました。 正常の場合は、HTTPレスポンスコードが「200」をPayPalに返す必要がございます。 ----<以上>-------------------------------- 果たして、paypal_recv.phpのファイル内のどこを修正すべきか、 同じような"HTTPレスポンス400エラーコード"のトラブルを経験された方、または このような問題に詳しい方からのご助言を何卒、宜しくお願い致します。 |
nanasess |
投稿日時: 2014/7/14 19:55
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 HTTPレスポンス400の原因は、以下のスレッドに記載した通りです。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=14859&forum=10&post_id=66558#forumpost66558 また、前出のスレッドに書きそびれてしまったのですが data/logs/paypal.log に原因になりそうなログが出力されていませんか? また、 paypal_recv.php の以下の部分をコメントアウト or 削除することで 400エラーは解消すると思いますが、解消したとしても何らかの異常な状態な状態だと思われますので、そのまま運用されるのはおすすめしません。 (4ヶ所あると思います)
|
tenso |
投稿日時: 2014/7/15 16:08
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 nanasess 様
ご返信ありがとう御座います。 ご指摘頂いた点の data/logs/site.log に出力されている内容の一部(直近で関係ありそうなところ) を以下に抜き出してみました。 ==================== 2014/07/14 13:00:37 [/shopping/confirm.php] order complete. order_id=71 from 120.150.253.100 2014/07/14 13:55:14 [/shopping/confirm.php] order complete. order_id=72 from 14.100.132.116 2014/07/14 14:55:26 [/shopping/confirm.php] order complete. order_id=73 from 203.116.6.114 2014/07/14 17:52:27 [/index.php] order cancel.(time expire) order_id=73 from 66.249.80.61 2014/07/14 18:47:31 [/index.php] order cancel.(time expire) order_id=71 from 67.177.14.152 2014/07/15 06:18:13 [/shopping/confirm.php] order complete. order_id=74 from 62.157.47.253 2014/07/15 06:40:17 [/mypage/login.php] order cancel.(time expire) order_id=74 from 189.253.152.190 ==================== このログデータについて詳しく理解できませんが、情報を私なりに、EC-CUBEの管理ページと比較して精査してみましたところ order_id=71 は確かに 2014/07/14 13:00 決済完了となっていました。 PayPalアカウントでも以下の通り確認済みです。 ========== 請求書 ID: 71 日付: 2014年7月14日 時刻: 13:01:28 JST ステータス: 完了 ========== しかし、上記ログデータでは、その約4時間後に 2014/07/14 18:47:31 [/index.php] order cancel.(time expire) order_id=7 と出力されています。 これが、恐らくですが、PayPalからIPNを何度も送信してきて、当方からは400エラーコードをPayPalに跳ね返えしているからではないかと考えております。 order cancelとありますが、決済自体がキャンセルされているわけではありません。 尚、私には全く不明な点が2箇所ありました。 1)order_id=72 これはEC-CUBEの受注管理>受注管理ページに記録が無く、またPayPalの取引履歴にも全く見当たりません。 2)order cancelが/index.phpと/mypage/login.phpで行われていることの違い [/index.php] order cancel.(time expire) order_id=73 [/index.php] order cancel.(time expire) order_id=71 [/mypage/login.php] order cancel.(time expire) order_id=74 >data/logs/paypal.log に原因になりそうなログが出力されていませんか? このご指摘については、データが膨大で、どこをどのように読み解いたらいいのやら。。。 PayPalやEC-CUBEの管理ページと比較して、異常な点や不明点を探し出してみます。 >また、 paypal_recv.php の以下の部分をコメントアウト or 削除することで 400エラーは解消すると思いますが、解消したとしても何らかの異常な状態な状態だと思われますので、そのまま運用されるのはおすすめしません。(4ヶ所あると思います) この事につきましては、おすすめ出来ないのであれば、最終手段と考えていまして、まずは何とか原因を特定して、問題解決を目指しております。 data/logs/paypal.log に原因となりようなログを見つけましたら、掲示板に記載いたしますので、引き続き宜しくお願い致します。 |
nanasess |
投稿日時: 2014/7/15 17:41
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 いろいろ誤解がありそうですので、簡単で恐縮ですが、とり急ぎ。。
引用:
これは、「決済処理中」の注文が一定時間経過したため「キャンセル」処理をしたというログです。 IPNのログでは無さそうです。 EC-CUBEでは、PayPal決済画面に遷移する前に order_id を発行し、「決済処理中」という受注ステータスとなります。 引用:
おそらく、前出の「決済処理中」となったがタイムアウトやカートに戻る等の遷移で受注が削除された(受注ロールバック)のだと思います。 引用:
これは、 /index.php や /mypage/login.php で、前出の受注ロールバック処理が行われるためです。 引用:
400 エラーの場合は「Failed」を含むエラーメッセージが出力されます。 あとは「invoice is not numeric!」や「Requests by」を含むエラーメッセージが無いか探してみてください。 |
tenso |
投稿日時: 2014/7/16 15:39
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 nanasess 様
ご親切に何度も適切なご返信を頂きまして、感謝しております。 さて、data/logs/paypal.log を確認してみましたところ、 PayPal IPN receive Failed! や[/user_data/paypal_recv.php] POST Requests byArray となっている箇所を見つけました。 それ以外に気になる点は、Illegal receiver_email! from となっている箇所くらいでしょうか? 「invoice is not numeric!」は見つかりませんでした。 参考までに、下記にログの一部を抜粋しました。(※カードで決済のケースです) ============ [mc_gross] => 3325 [invoice] => 73 [protection_eligibility] => Ineligible [payer_id] => MS6X33YU [tax] => 0 [payment_date] => 22:56:28 Jul 13, 2014 PDT [payment_status] => Completed [charset] => Shift_JIS [first_name] => (顧客情報) [mc_fee] => 160 [notify_version] => 3.8 [custom] => [payer_status] => unverified [business] =>(当方のメールアドレス) [quantity] => 1 [verify_sign] => AIOdBBbi4npzX0AuVhWhL8n5JRdc5fGHxU55V2Am4u1ze [txn_id] => 457905600X [payment_type] => instant [last_name] => (顧客情報) [receiver_email] =>(当方のメールアドレス) [payment_fee] => [receiver_id] => 52V97PETU [txn_type] => pro_hosted [item_name] => (当方の情報) [mc_currency] => JPY [item_number] => [residence_country] => JP [receipt_id] => 1316-5079-6040 [handling_amount] => 0 [transaction_subject] => [payment_gross] => [shipping] => 0 [ipn_track_id] => 2b3b66180d [/user_data/paypal_recv.php] ************************** PayPal IPN receive START ************************* from 173.0.81.1 Received Parameters by... from 173.0.81.1 mc_gross => 3325 from 173.0.81.1 invoice => 73 from 173.0.81.1 protection_eligibility => Ineligible from 173.0.81.1 payer_id => (顧客情報) from 173.0.81.1 tax => 0 from 173.0.81.1 payment_date => 22:56:28 Jul 13, 2014 PDT from 173.0.81.1 payment_status => Completed from 173.0.81.1 charset => Shift_JIS from 173.0.81.1 first_name => a[ from 173.0.81.1 mc_fee => 160 from 173.0.81.1 notify_version => 3.8 from 173.0.81.1 custom => from 173.0.81.1 payer_status => unverified from 173.0.81.1 business =>(当方のメールアドレス)from 173.0.81.1 quantity => 1 from 173.0.81.1 verify_sign => AIc5fGHxU55V2Am4u1ze from 173.0.81.1 txn_id => 457930600X from 173.0.81.1 payment_type => instant from 173.0.81.1 last_name => P from 173.0.81.1 receiver_email =>(当方のメールアドレス)from 173.0.81.1 receiver_id =>(当方の情報)from 173.0.81.1 txn_type => pro_hosted from 173.0.81.1 item_name => ]T[rX from 173.0.81.1 mc_currency => JPY from 173.0.81.1 item_number => from 173.0.81.1 residence_country => JP from 173.0.81.1 receipt_id => 1316-5079-5430 from 173.0.81.1 handling_amount => 0 from 173.0.81.1 transaction_subject => from 173.0.81.1 payment_gross => from 173.0.81.1 shipping => 0 from 173.0.81.1 ipn_track_id => 2b3b66 from 173.0.81.1 Illegal receiver_email! from 173.0.81.1 ************************** PayPal IPN receive Failed! *********************** from 173.0.81.1 ========= さて、これらを調べていて、もしやと気になる事がありました。 今更と言われてしまうかもしれませんが、当方のサイトでは少々変わったサービスを行っておりまして、 そのため、会員登録ページの入力フォームのカスタマイズが普通とは違い、 そのことがエラーと関係してるのかもしれません。。。 そのことを簡単に説明しますと、 1)海外在住者向けのサービスを行っている(日本国内ユーザーは0%) 2)会員登録者は全て海外住所を入力するようにフォームを変更済み 3)郵便番号欄は海外のZIPコードやPostalコード入力に変更済み 4)住所の都道府県選択欄は、【海外】という項目を追加して、会員はそれを選択している 以上のような、会員登録フォームのカスタマイズが大きく影響している可能性は無いでしょうか? もしも、それが影響しているのであれば、 phpファイル内の修正は、私には手におえない事かも知れません。 そうであれば、最終手段としていた、paypal_recv.php のご指摘頂いた4ヶ所をコメントアウト or 削除して、400エラーの解消を行うしかありません。 もしも、それを行うことで、会員様に【ご注文の確認メール】が届くようになるのであれば、 それを実行しようと思います。 |
tenso |
投稿日時: 2014/7/17 12:24
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 【追加】掲載となります。
nanasess様 初心者ながら、paypal_recv.php の中身を nanasess様 からこれまでご指摘頂いた事を考えながら調べていましたところ、 Illegal receiver_email! のログが目に止まりました。 =========== // 設定情報のメールアドレスと receiver_email が一致するかどうか if ($arrConfig['business'] != $arrResponse['receiver_email']) { GC_Utils_Ex::gfPrintLog("Illegal receiver_email!", PAYPAL_LOG_PATH); GC_Utils_Ex::gfPrintLog( "************************** PayPal IPN receive Failed! ***********************", PAYPAL_LOG_PATH); header("HTTP/1.1 400 Bad Request"); exit; } =========== そして、data/logs/paypal.log をもう一度確認してみましたところ、確かにその記載がありました。 そこで、paypal_recv.php の中身にある // 設定情報のメールアドレスと receiver_email が一致するかどうか if ($arrConfig['business'] != $arrResponse['receiver_email']) { ですが、これはメールアドレスが一致していればOKと言うことなのでしょうか? 以下は、以前にも添付したdata/logs/paypal.logの一部抜粋です。 ************************** PayPal IPN receive START ************************* from 173.0.81.1 business => cs@弊社名.com from 173.0.81.1 receiver_email => cs@弊社名.com from 173.0.81.1 Illegal receiver_email! from 173.0.81.1 ************************** PayPal IPN receive Failed! *********************** from 173.0.81.1 上記の通り、 business も receiver_email もEC-CUBE管理ページに登録済みの弊社メールアドレスと全く同じで間違いありません。 現状が問題であって、その事が原因でPayPal側に400エラーコードが返っているのであれば、どのように修正したら良いのでしょうか? 修正方法がお判りでありましたら、どうかご教授ください。 何卒、宜しくお願い致します。 |
nanasess |
投稿日時: 2014/7/17 14:11
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 もしかしたら、 EC-CUBE に設定してある情報を、正常に読み出せてないのかもしれません。
以下のように、 $arrConfig['business'] の箇所をハードコーディングしてみてはいかがでしょうか?
/user_data/paypal_recv.php は、決済モジュールの設定パネルを再設定すると上書きされてしまいますので、カスタマイズの際はご注意ください。 |
tenso |
投稿日時: 2014/7/17 17:02
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 nanasess様
いつもお世話になっております。何度もご返信頂いてありがとうございます。 すみません。。。シロウトなもので、ちょっと"カスタマイズの際はご注意ください。"のコメントが気になってしまって。。。 申し訳ないですが、 引用:
この意味をもう少し詳しく、特にどのように上書きされないようにカスタマイズすべきか教えて下さい。 私のいつものやり方ですが、 1)paypal_recv.phpのオリジナルを別フォルダーにバックアップしておいて、 2)$arrConfig['cs@弊社名.com'] と変更(ハードコーディング)したファイルをアップロードして、 3)/data/Smarty/templates_c のキャッシュを削除 こんな感じで問題ないでしょうか? "決済モジュールの設定パネルを再設定すると上書きされてしまいます"が気になっております。 早速、ハードコーディングを試みようと思いますので、宜しくご教授ください。お願い致します。 |
nanasess |
投稿日時: 2014/7/17 17:30
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 管理画面→オーナーズストア管理→モジュール管理の一覧に表示される、決済モジュールの設定画面で、設定を実行したタイミングで、 /user_data/paypal_recv.php が上書きされます。
手順は問題ありませんので、決済モジュールの設定を再設定した場合は、バックアップから戻す等の対応をすれば問題ありません。 ただし、あくまでも自己責任ということで。。 ご自身での対応が難しいようでしたら、対応可能な業者などに依頼した方が良いと思います。 |
tenso |
投稿日時: 2014/7/18 11:03
対応状況: −−−
|
一人前 登録日: 2014/3/17 居住地: 投稿: 74 |
Re: PayPal即時支払い通知の警告 Ver.2.13.1 nanasess様
早速のご丁寧なご返信、誠にありがとう御座います。 引用:
なるほど、そういうことでありましたか。良く理解できました。 nanasess様のこれまでのご指摘の御蔭で、ようやく原因が突き止められたような感じがします。 今回の件、念のためPayPalのテクニカル・サポートにも報告しておりまして、ご指摘いただいた箇所を直接ハードコーディング書き換えするか、もしくはコメントアウトするかして問題が解決するか試してみたいと考えています。 修正テストの結果は、実行次第またご報告させて頂きます。 いつも有難う御座います。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |