ペイパル(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メッセージ : 有効(推奨)
保存を押して確定します。
復帰URLは、(ショップトップページのURL)/index.php?page_id=(カートのページID)&acting=paypal&acting_return=1 のように index.php を入れるようにしましょう。
SSL を使用している場合はSSLの「ショップトップページのURL」となります。
現バージョン(v0.7.3)以降は、自動復帰オフでも決済できるようになっています。
【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は便利なのかどうか解らなくなります(^^;
お世話になります。教えてください。
初めてwelcartの設定をします。paypalのビジネスアカウントを作ったところです。
【PayPal マイアカウントの設定】で、
復帰URL の設定で(カートのページIDはWelcartの管理画面のホームで確認できます)とありますが、Welcartの管理画面のホームを見てもどこに書いてあるのか解りませんでした・・・このページIDは「カートの中」というページのIDでしょうか?
こんにちは、@himeji さん。
そうでした、AdminSSLを使わなくなってからトップではIDが出なくなったのでした。
はい、「カートの中」と言うページのIDでOKです。
ご報告ありがとうございます。
nanbuさん。お返事ありがとうございます。
>>「カートの中」と言うページのIDでOKです。
解りました。ありがとうございます。
■paypal(sandbox)でのテストについて教えてください。
発送・支払方法画面で、paypal決済 (cannot use this payment method now.)と表示されてしまいますが、何が足りないでしょうか?
また、基本設定⇒支払方法の設定で「決済モジュール」と書いてあるところには、【paypal.php】と記入すればよかったですか?
————やってきたことは以下です—————
#9のkotaroさんのコメント等を参考に
・Paypal Sandboxのビジネスとパーソナルのテストアカウントの作成
・ビジネステストアカウントで、ウェブペイメントの設定と即時支払い通知の設定
・【paypal_sample.php の編集と設置】ビジネステストアカウントのアドレスとIDトークンで設定し、/wp-content/plugins/kessai/paypal.php/を設置
・welcartのシステム設定で、決済モジュールパスを変更
・Welcartの基本設定で、しょっぷ設定と支払設定でpaypal決済を追加(代行業決済として、決済モジュール欄にpaypal.phpと記載)
・ひとつ商品を登録。
・パーソナルテストアカウントで、会員登録⇒カートに入れる⇒発送と支払方法でpaypal決済 (cannot use this payment method now.)と表示されてしまう
決済モジュールが見つからない時に(cannot use this payment method now.)と表示されます。
決済モジュールパスの設定を確認してみてください。パスはディレクトリ名まででファイル名paypal.php は記述しません。
決済モジュールの場所は公の場で公開しない方がいいです。さらにディレクトリ名は推測しにくいものにした方がいいですよ。
nanbuさん、こんばんわ。
決済モジュールパスの設定を確認し、paypal.php を記述せずディレクトリ名までにしましたら、正常に決済ができるようになりました。
いわれるとおりに、ディレクトリ名は、変更しました。
ありがとうございました。
以前、PayPalモジュールでご相談させていただきましたtakeです。
その節はお世話になりました。
前回は、ログが出力されなかったために、結局、原因が分からずに諦めてしまいました。
PayPalモジュールが正式リリースされたこともあり、今回、改めて設定に挑戦しています。
結論から申し上げますと、現象が変わらず、
ご注文が完了しませんでした。(error 1)
となり、うまく動いておりません。
ですが、今回はログが出力されております。
[2010-05-20 11:18:43] IPN開始
[2010-05-20 11:18:44] IPN[SUCCESS]
さらに、管理画面の受注リストには記録されていることまで確認できました。
カートには、まだ商品が残っています。
カートの商品消しこみなどでエラーが起きているのかもしれません。
このような状況なのですが、どのような問題が考えられますでしょうか?
ご教示いただけますと幸いです。
こんにちは。
「PDT開始」というログは残っていなかったでしょうか。もし残っていなかったとしたらPayPalの「復帰URL」の設定をもう一度確認してみてください。
・復帰URL:ショップトップページのURL/?page_id=カートページのID&acting=paypal&acting_return=1
この中のacting=paypal が違っているとこのような症状になります。
ご回答ありがとうございます。
ログは「IPN開始」からで、「PDT開始」というログは残っていませんでした。
paypal_check()が呼ばれていないのでしょうね。
また、復帰URLですが、
ショップトップページのURL/?page_id=カートページのID?acting=paypal&acting_return=1
となっていますね。
(acting以降のもじれるは、設定をそのままコピペしたものです。)
acting=paypal の前は(?)となっていますが(&)でなくてはいけません。
実際の記述はどうなっているでしょうか。
nanbu 様
ご回答ありがとうございます。
> acting=paypal の前は(?)となっていますが(&)でなくてはいけません。
(?)になっておりました。
些細な見落としで何度もお手数をおかけしてしまい、大変申し訳ありませんでした。
おかげさまで、動作を確認することができました。
モジュールだけでもありがたいのに、ご親切かつ、的確なサポートは本当に感激しています。
本当にありがとうございました!
いつもお世話になっております。
sandboxで上手く設定できました。みなさん、たくさんの情報を載せて頂きありがとうございます。
paypalのlogで確認したところ、successとなっており、全て上手くいっております。
一つ理解できないことは復帰URLで表示されたページに
”お取引は完了しておりません。
PayPalマイアカウント・ページから代金をご送金ください。ご入金確認後、商品発送の準備をさせていただきます。”
とでており、
受注リストでは支払い状況がPendingとなっております。
きちんと支払いがされていると思うのですが、なにか間違いをしているのでしょうか?
それともPaypalで支払いをした場合は、この表示が正しいのでしょうか。
知識を持ち合わせていませんので、愚問かもしれませんがよろしくお願いいたします。
こんにちは。
sandbox はいつもPending になるようです。
本稼動ではComplete になっているという報告を頂いています。
もし本稼動でもPending となった場合はPayPal の管理画面を確認して、入金が確定してから発送するようにした方が良いと思います。
nanbuさま
ご回答ありがとうございます。
それでは、本稼働をにうつります。
こんにちは。
素晴らしいプラグインでワクワクしています。
しかしながら、ひとつ問題が。
sandboxでは問題なく可動したのですが、なぜか本可動させると、『今すぐ購入』の
あとに、こんなメッセージが出てしまいます。これは SSLにしないとダメって事なの
でしょうか?
“売り手は、暗号化されたウェブ ペイメントのみを受取っています。暗号化されていないボタンを使用して売り手に支払うことはできません。詳細については売り手までお問い合わせください。”
でもって、SSLにしたら知識が無いためかボロボロに・・・。
サーバーはさくらインターネットです。
お忙しいところ恐縮ですが、よろしくお願いします。
こんにちは。
ご報告ありがとうございます。
まだ確認は取れていないですが、なんとなく原因は掴めそうです。
次のバージョンで修正版をアップしたいと思います。
よろしくお願いいたします。
@nanbu
nanbuさま
これは私にたいしてのレスでしょうか?
お忙しいところありがとうございます。
ということは、今のままでは解決策は無いって事なのでしょうか?
それからPayPalの運用はSSLは必須条件なのでしょうか?
質問ばかりでスミマセン。
よろしくお願いします。
こんにちは、hideo さん。
usc-e-shop/templates/cart/confirm.php の261行目辺りに
`
<form action="https://' . $usces_paypal_url . '/************
`
と書かれた行が有ります。
この中のスキーム https を http に変更してみてください。
それで問題が無くなれば、その修正を次のバーションに反映させたいと思います。
@nanbu
早速ありがとうございます。
結論からいいますと出来ました!です。
が、私は普段Google Choromeを使っているのですが、これだと[今すぐ購入]ボタンを押すとPayPalのトップページにある普通のログイン画面が表示されるだけで、お買い物はまったく無視されてしまいます。
で、もしやと思い、Firefoxで試したら、見事にお買い物も認識され、そのまま買うことが出来ました。どうしたもんでしょうか?
引き続き、よろしくお願いします。
@nanbu さま
その後、Windows IEでも問題無し。そして友人に協力をしていただき、macのFirefoxでも問題ありませんでした。
Windows Google Chromeだけがダメな感じですね。
まさか、自分が普段愛用しているブラウザーが引っかかるとは・・・。
とりあえず、但し書きをして対応したいと思います。
こんな素晴らしいプラグインを提供していただき感謝いたします。
ありがとうございます。
Chrome に限らず、ブラウザの再起動後の動作も確認してみてください。
@nanbu さま
再起動はもちろん、キャッシュも削除しました。
それでもNGでした。
いつもお世話になっております。
sandboxは上手く設定できました。
お尋ねしたいのですが、復帰URLで表示されたページに
”お取引は完了しておりません。PayPalマイアカウント・ページから代金をご送金ください。ご入金確認後、商品発送の準備をさせていただきます。”
とでており、
尚且つ、受注リストにリスト内容が反映されません。さらに、購入後のお客様へ行くメールとadminへのメールが届きません。
お手数ですが、原因と解決法を教えていただけますでしょうか。
こんにちは。
開発フォーラムの方で議論されていますので、そちらをご覧ください。
はじめまして、nanbu様。
Welcartを利用させて頂いております。
PayPal決済モジュールをsandboxでテストしています。
そこでmiamo様と全く同じ「ご注文が完了しませんでした。(error 1)」現象。
確かにVerifiedにすることで解決いたしましたが、実はこの先本番が問題です。
PayPal本アカウントではクレカの登録をしたくないので、入金(送金してもらう)専用にしており、
すなわち”Unverified”のままで運用したいのです。
これって無理でしょうか?
もしくはその環境で本稼動できてる方いらっしゃいますでしょうか?
こんにちは、mako さん。
これはモジュールの問題ではなく、PayPal 側でそういう使い方ができるかどうかということだと思いますので、一度PayPal に問い合わせてみていただけますでしょうか。
それと、ご質問はできるだけ「開発フォーラム」をご利用いただけると助かります。
よろしくお願いいたします。
@uscnanbu
ご丁寧にお返事頂きありがとうございます。
おっしゃるとおり、PayPal側の問題ですね。
同じような環境で本稼働されたいかたもいらっしゃるかも知れませんので、問い合せの結果はご報告したいと思います。
お世話になっております。
この度はありがたくwelcartを利用させていただいております。
上記で既出ですが、このたびpaypalのsandboxでテストをしているところで、
PayPalで設定した復帰URLに復帰すると、「ご注文が完了しませんでした。(error 1)」
と表示されてしまいます。
アカウントが Unverified となっているのが原因かと思い、Verifiedにしてみたのですが、それでも動かず、、
logは、
[2011-10-27 16:27:25] PDT開始
[2011-10-27 16:31:30] PDT開始
[2011-10-27 17:00:22] PDT開始
[2011-10-27 17:00:23] PDT開始
[2011-10-27 17:00:48] PDT開始
[2011-10-27 17:00:49] PDT開始
[2011-11-04 17:52:40] PDT開始
[2011-11-04 17:52:51] PDT開始
というように出ています。
お忙しいところ申し訳ありませんが、
原因と解決法を教えていただけますでしょうか。
よろしくお願いいたします。
引き続き申し訳ありません。
先ほどのログですが、
プラグインで使用していたMaintenance modeというプラグインの使用を停止したところ、
[2011-11-04 18:28:09] IPN開始
[2011-11-04 18:28:15] PDT開始
という先ほどは出なかったIPNというものがでました。
申し訳ありませんが引き続きこちらの原因教えていただけると助かります。
何卒よろしくお願いいたします。
申し訳ございません。使い方のご質問は「開発フォーラム」にてお願いいたします。
はじめまして。
一連の「ご注文が完了しませんでした。(error 1)」の件でお尋ねします。
こちらの場合もPaypal処理から復帰URLまでは問題なく、復帰後
ご注文が完了しませんでした。(error 1)」となります。
ログは#45さんと同じく
[2011-11-17 10:07:54] IPN開始
[2011-11-17 10:08:00] PDT開始
となっています。
かれこれこれで3日以上悩んでいます。
アドバイスいただけますよう何とぞよろしくお願いします。