エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


GMOペイメントゲートウェイのjava.io.IOExceptionのエラー

      2016/04/02

GMOペイメントゲートウェイでjava.io.IOExceptionのエラー

 

java.io.IOExceptionのエラーとは?

 
ECCUBEを利用して ECサイトを構築しています。
決済モジュールとして GMOペイメントゲートウェイを導入することにしました。
 
マニュアルに従って導入しましたが、結果通知プログラムから送信されてくるメールが「Error report」となっていました。
 
タイトル「Error report」
以下、本文。
——————————————————-
「PGマルチペイメントサービス」の結果通知にて、エラーが発生しました。
Shop ID = [tshop01010101]
Day Time = [2015-01-01 01:01:01.01]
Error = [送信に失敗しました。 発生例外[java.io.IOException]]
——————————————————-
 
 

java.io.IOExceptionの原因と解決方法

 
java.io.IOExceptionのエラーの原因と解決方法について、マニュアルには下記の様に記載されています。しっかり書かれています。
——————————————————-
・結果通知プログラムファイル:
  pg_mulpay_recv.php に実行権限(パーミッション)が付与されているか 。
・結果通知プログラムファイル:
  pg_mulpay_recv.php が 外部からアクセス可能な状態となっているか。
  IPアドレスや、基本認証によるアクセス制限をされている場合は、
  結果通知を受信いただくことができません。
 
※ 結果通知通知プログラムの保存場所
  EC-CUBEインストールディレクトリ/html/user_data/pg_mulpay_recv.php
——————————————————-
 
原因と解決方法を要約すると
 
【原因】
決済モジュールからメールを送信するため「pg_mulpay_recv.php」を実行しようとしましたが、正常に実行することができませんでした。
 
【解決方法】

  • パーミッションを変更する
  • アクセス制限を解除する

 
【対象ファイル】
 {ECCUBEルート}/html/user_data/pg_mulpay_recv.php
 
 
開発中の場合は、開発中なので Basic認証を設定して開発を行っている場合も多々あると思いますが、Basic認証を設定していると外部からアクセスできないのでエラーになりますよ、という内容です。
IPでの制限をしている場合も同じです。
 
もう一つの可能性としては、「ECCUBEの新規追加ページがInternal Server Error・Not Foundに」で紹介しましたが、決済モジュールを追加すると新規でプログラムファイルが設置されますので、「pg_mulpay_recv.php」のパーミッションが正しい設定になっていない場合もあります。
 
 
今回私が遭遇した不具合はこの両方だったワケなのですが、「ECCUBEの新規追加ページがInternal Server Error・Not Foundに」が発生していた同じ案件でしたので、パーミッションにばかり気を取られてしまい、Basic認証を設定していたことをすっかり忘れてしまっていた、ということが原因でした。
 
 
ネットで調べると、「サポートに問い合わせてみると良さそうです」と言う回答がありましたので、サポートにメールで問い合わせをすると、わざわざ不具合の原因も調べてくれました。
レスポンスも早かったですね。
そして、お恥ずかしいばかりの原因でした...
 
 

java.io.IOExceptionの原因と解決方法

 
今回の不具合はさておき、クレジットカード決済の動作確認を行うにはクレジットカード番号が必要です。
 
ですが、GMOペイメントゲートウェイではテスト用のカード番号の提供などはありませんが、適当な番号を入力してもカード番号の妥当性チェックではじかれてしまいます。
とは言え、自分のクレジットカード番号を利用するなんてことは考えられないワケで、どうしようかと悩んでいた時に下記のサイトを発見しました。
 
 https://webpay.jp/docs/mock_cards
 
テスト環境で使用できるテスト用のカード番号の情報を提供してくれています。
これを使って決済モジュールの設定が正しいかどうかの確認が行えます。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。また、マニュアルにはない注意点なども解説。

PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較
PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較

PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。

数値文字参照コード変換ツール(HTML特殊文字コード変換ツール)

テキストを数値文字参照コード(特殊文字コード)に変換するツール。テキストを数値文字参照コードに簡単変換。数値文字参照、文字実体参照、特殊文字などの違いも解説。

Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説

お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。

ECCUBEのポイント設定、ポイント付与率を一括で変更する方法解説

ECCUBEの商品個別に設定してあるポイントを一括で変更する方法を解説。ECCUBEには商品個別のポイントを一括して変更する機能がありません。SQLを作成して一括置換!

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。

Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace

ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。

ECCUBEでカード決済NGの受注情報をマイページ購入履歴に表示しない方法解説

ECCUBEでカード決済に失敗しても購入履歴一覧に注文情報(受注情報)が表示される問題への対処方法を解説。受注情報レコードの作成の流れとステイタスについても解説。

PHP画面が真っ白 header(“Location: $url”);

PHPの開発で header(“Location: $url”);を使うと画面が真っ白になる不具合が出る場合もあります。

cURLを利用する際の注意点「&」があるURLは「"」で囲む
cURLを利用する際の注意点「&」があるURLは「」で囲む

cURLでURLはダブルクォーテーションで囲む。LinuxでもWindowsでもコマンドでは「&」は意味を持つ文字のためエラー原因になる。クォーテーションは常につけておく方が無難。