ペイパル(PayPal)決済モジュールについて
こんにちは。
PayPal決済モジュールがほぼ完成いたしましたのでDevelopment Version にてアップいたしました。
/usc-e-shop/settlement/ にpaypal_sample.php が有りますので適宜編集して任意のフォルダーに設置することになります。
Development Version はあくまでテスト版としてのご利用となります。十分に動作確認を行ってからご利用くださいますようお願いいたします。また、不具合等見つかりましたら是非ご連絡をお願いいたします。
なお、paypal_sample.php の追加だけではなくいろんなところを修正していますのでDevelopment Version にアップデートしていただく必要があります。
以下、利用方法について簡単に説明いたします。
【PayPal マイアカウントの設定】
PayPal にログインしてマイアカウントページに入ります。英語表記の場合は右上のリンクにより日本語表記に切り替えられます。
「個人設定」ページから「ウェブペイメントの設定」ページに入り、以下を設定します。
自動復帰 : オン
復帰URL : (ショップトップページのURL)/?page_id=(カートのページID)&acting=paypal&acting_return=1
支払いデータ転送 : オン
(カートのページIDはWelcartの管理画面のホームで確認できます)
保存を押して確定します。
次に、「個人設定」ページから「即時支払い通知の設定」ページに入り、以下を設定します。
通知URL : ショップトップページのURL
IPNメッセージ : 有効(推奨)
保存を押して確定します。
【paypal_sample.php の編集】
以下の設定を編集してpaypal.php のファイル名で任意のディレクトリに保存します。設置場所については次の「設置場所について」で説明いたします。
$usces_paypal_business =
PayPal に登録したメールアドレスを入力します。
$usces_paypal_url =
本稼動の場合は ”www.paypal.com” を、sandbox を利用する場合は”www.sandbox.paypal.com” となります。
$auth_token =
ウェブペイメントの設定の際に払い出されたIDトークンをコピーします。
いずれもsandbox を利用する場合はsandbox 用の設定となりますのでご注意下さい。
【設置場所について】
設置場所はWelcartのアップグレードの際に上書きされないよう、usc-e-shopディレクトリ若しくはplugins ディレクトリの外に任意のディレクトリを作成し、その中にpaypal.php のファイル名で保存します。そして、その保存場所をWelcart に認識させるため Welcart管理画面のシステム設定ページより、「決済モジュールパス」を設定します。パスはURLではなく、ディレクトリのフルパスとなります。

素晴しいプラグインをありがとうございます。
PayPal決済モジュールをテストしています。
現在、次のような現象が起きておりますのでご報告いたします。
■「自サイトに復帰後、エラーとなりカート内が削除されない
(sandboxにて確認)
・自サイト
「カートの中」→「お客様情報」→「発送・支払方法」→「内容確認」までは問題なし
・PayPal
「ログイン」→「支払いの確認」→「今すぐ支払う」までは問題なし。
PayPal上は注文を正しく処理される。
・自サイト
PayPalで設定した復帰URLに復帰すると、「ご注文が完了しませんでした。(error 1)」と表示される。
カートの中は削除されていない。
以上です。
こんにちは。
ご報告ありがとうございます。
ショップへ戻ってエラーメッセージが出ているので遷移はうまく行ってると思います。注文が完了しないうちはカートの中は消さないようにしています。
恐らくPayPal がPDT のステイタスにFAIL を返してきているんだと思います。
次の設定をチェックしてみて下さい。
1.登録メールアドレス
sandbox 用のメールアドレスは「アカウント名_******_biz@ドメイン」となっているはずです。
_biz は_per でも良いのかもしれません。(この辺確認不足です)いずれにしてもこれはPayPalのsandboxが発行したメールアドレスです。
2.PayPal URL
「www.sandbox.paypal.com」となります。
3.ID トークン
sandbox のアカウントページの個人設定で発行されたIDトークンです。これは僕も最初勘違いしたのですが、本アカウントのIDトークンを設定しまいがちです。
なお、PayPalの設定はこちらのサイトの説明がわかりやすいです。(kotaroさんに教えていただきました)
Paypal「PDT」「IPN」を使った決済とバックエンドの統合(2)
管理画面の受注リストには記録されていますでしょうか。もし記録が無ければ登録メールアドレスが、もし記録が有ればID トークンが怪しいと推測します。
よろしくお願いいたします
返信ありがとうございます。
確認したところ、買い手の取引リストには情報があるものの、
売り手の受注リストに登録されていないのでメールアドレスが問題のようです。
(IDトークンはsandboxのものを設定しておりますので、問題ないようです。)
sandbox用の登録メールアドレスとは、
sandboxのビジネスアカウントで登録し、売り手としてログインする
メールアドレスではないということでしょうか?
ちなみに、メールアドレスを「アカウント名_******_biz@ドメイン」に変えてみたところ、
welcartからpaypalへ推移後、当該のメールアドレスがないので設定も読み込めず、
paypalからwelcartへ復帰もしないような状況になりました。
売り手でログインするメールアドレスで戻すと、少なくとも復帰はできるので、
paypalはメールアドレスを正しく認識しているようにも思えます。
(当該メールアドレスで復帰URLなどの情報を正常に読み込んでいる)
もう少し、調べてみることにしたいと思います。
もし、その他の情報がありましたら、コメントいただけますと幸いです。
こんにちは。
sandbox でテストを行うには、sandbox 内で「売り手」と「買い手」の最低2アカウントを作成します。
作成されると「売り手」は「アカウント名_******_biz@ドメイン」、「買い手」は「アカウント名2_******_per@ドメイン」などというメールアドレスが発行されます。(メールアドレスはこの通りではないかもしれません。)また同じく仮のクレジット番号なども発行されていますよね。
さてここからです。
「売り手」のradioボタンにチェックを入れてテストサイトに入ります。ログイン画面が出るので「売り手」のメールアドレスとパスワードを入れてログインします。ここがテスト用のお店の設定場所となります。このページの「個人設定(Profile)」からDTPやIPNの設定を行います。モジュールにはこの「売り手」のメールアドレスとここで発行されたIDトークンを反映させます。
Development Version にDTP通信する際のログを残すよう施してみました。ログはモジュールと同じ場所にできます。設定のどこが悪いのかまではわかりませんが、接続不良なのかPayPal の認証がおりないのかはわかりますので良かったらアップデートしてみて下さい。
コメントありがとうございます。
オープンソースということだけでもありがたいのに、
親身に問題を解決して下さる姿勢に感謝いたします。
ありがとうございます。
sandboxアカウントについては、
[Manually create accounts.]で作成していたものを
[Create a preconfigured buyer or seller account.]に変えたら、
ご指摘のアカウントになりました。ありがとうございます。
ログを残すソース、ありがとうございます。
こちらの環境(レンタルサーバ)の問題かと思いますが、
ログ出力フラグを立ててもログが出力できずに困っています。
ファイル名をフルパスに変えたり、パーミッションを確認しても原因が分かりませんが、
ログが出力されれば対応策が見えてくるかもしれません。
正式版リリース時には、エラーメッセージがブラウザ上で確認できれば、
(ご注文が完了しませんでした。(error 1)の部分が、)
問題の原因追求が容易になるかもしれませんね。
こんにちは。
take さん、すみません。説明不足でした。
paypal_sample.php の46行目当たりに$usces->log_flg というログを取るか取らないかのフラグが有ると思います。この値を1に設定してください。それでもログが作成されないようでしたらプラグインフォルダのパーミッションをお確かめ下さい。
nanbu様
明けましておめでとうございます。本年もお世話になります。
Paypal決済完成、「感謝、感謝」です。
早速テストを実施し問題なく決済できる事を確認いたしました。
最初、決済は完了するのに受注リストが作成されず...何故?
「ログ」を取る設定に変更し、決済検証したところ入金状況が
「Pending」となり全て問題なく稼動することを確認できました。
※レンタルサーバーは、お名前.comのSDを利用
本当に有難うございました。
こんにちは。
kataro さん、いつも有難うございます。
参考までに、決済は完了するのに受注リストが作成されなかった原因はなんだったんでしょうか。
sandbox でのテストは結構ややこしいので、他の皆さんのためにも教えていただけると助かります。
nanbu様
お世話になります。
paypal(sandbox)でのテストは確かに検証が面倒ですね。
私がテスト環境を構築する際に参考した情報を簡単に書き残します。
1.テストアカウントの作成方法は、こちらのサイトで詳しく説明されております。
Paypal Sandbox(テスト環境)の利用方法
2.sanboxでのテストが終了した後に本番への移行手順はここです。
Paypal Sandboxでテストを実施して、本番環境へ移行する
「決済は完了するのに受注リストが作成されなかった原因」について
・検証手順は、上記1.に基いてテスト環境を構築し、sandbox.paypalにテスト用アカウントでログイン。
・別にブラウザを起動し「welcart」を立上げ、ユーザー登録>買物>paypal決済。
・この時、「paypal.php」の設定は次の通りとなります。
46行目:$usces->log_flg = 0;//0:ログを取らない
49行目:$usces_paypal_business = “ビジネスアカウント”;
51行目:$usces_paypal_url = “www.sandbox.paypal.com”;
54行目:$auth_token = “支払いデータ転送のIDトークン”;
・上記の環境で決済テストを実行した際、paypal決済は完了するが受注データが作成されませんでした。
・「46行目:$usces->log_flg = 1;//1:ログを取る」に変更して、再び決済テストを行なうことで無事に受注データが作成されました。
・「paypal.php」を配置したフォルダ(属性:755)に、「paypal.log」が自動生成されます。
[sandbox.paypalを検証した環境]
・最新版usc-e-shop_Development Version
・wordpress 2.9
・サーバーは、お名前.comの共有を使用
以上です。
なお、この他に不明点など抱えている方がおりましたら、wlcartコミュニティーへ投稿ください。私が知り得る可能な範囲で返信いたします。
はじめまして。
Welcartを利用させて頂いております。
PayPal決済の件で投稿させて頂きます。
takeさんの現象
「ご注文が完了しませんでした。(error 1)」
と同じ状況から抜け出せません。
sandboxの設定等は、過去のログを読んだり自分なりにググって調べて問題ないような気がします。
paypal.logの中身は毎回
[2010-03-14 20:29:43] PDT開始
[2010-03-14 20:29:45] PDT非認証
PayPalが「FAIL」を返しています。設定を確認してください。
のような感じです。
受注リストは作成されており、Pendingの状態です。
1.登録メールアドレス
2.PayPal URL
3.ID トークン
何度も確かめました。
sandbox 内で「売り手」と「買い手」のアカウントも4個取得して色々試しました。
テストの間は.htaccessで弊社のIPのみ許可できるようにしております。
アクセス解除しても変わらない状況でした。
WordPress バージョン 2.9.2
Welcart Shop Version 0.4
お忙しいとは思いますが、アドバイス頂けたらと思います。
よろしくお願いします。
@miamo さん
こんにちは。
受注データが作成されているようでしたら非同期(IPN)の処理はうまく行っているようです。
PDTで認証がおりないのはIDトークンが違っている可能性が高いと思います。
再度確認してみてください。
もしどうしても解決できない場合はpaypal.phpを添付してメールを送ってください。
その際はsandboxへのログインアカウントも教えていただかなくてはなりません。
よろしくお願いします。
nanbuアットusconsort.com
nanbu様
早速のご回答有難うございました。
メールさせて頂きましたので、よろしくお願いします。
sandbox拝見いたしました。
IDトークンが-(ハイフン)で始まっていますが、paypal.phpにはありませんでした。これが原因ではないでしょうか。一度確かめてみてください。
お世話になります。
今までのテストでIDトークンの-もとったり、付けたりでテストをしておりました。
再度付けてテストしましたが、現象変わらず
PayPalが「FAIL」を返しています。設定を確認してください。
のログ、
ご注文が完了しませんでした。(error 1)
のメッセージで終わります。
今現在も色々見ておりますが、現象変化無しです。
アカウントが Unverified となっています。
Verified でなくてはいけないと思います。
何故そうなるかは解りませんが、正常なアカウントを作成してテストしてみてください。
お世話になります。
アカウントをUnverifiedからVerifiedで作成しなおしました。
お蔭様でテスト成功しました。
あのまま、自分で考えてテストを繰り返してても
自分だけでは、見落としたまま気が付かなかったと思います。
本当に有難うございました。
うまく行ってよかったです。
それにしてもpaypal sandboxは便利なのかどうか解らなくなります(^^;