エス技研

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.

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

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

  関連記事

SEO対策用タイトル、ディスクリプションの文字数カウントツール

SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ

CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。

ECCUBEの問い合わせフォームに任意の値を引数として渡す方法

ECCUBEのお問い合わせフォームに値を固有の情報を送りそれに基づいて処理をする方法を解説。ボタンの設置、受け取り側のテンプレート、プログラムのサンプルソースを提供。

数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!
数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!

PHPでintegerとdoubleが混在するような計算をする場合は要注意!計算結果が整数値であっても途中で使用する変数にdoubleの値が入っているときは計算結果がintegerではない場合があります。

リダイレクトループが原因で「ERR_TOO_MANY_REDIRECTS」「このページを表示できません」が出たときの対策12事例+α

リダイレクトループ、自動転送設定ループの原因の解説とその対応方法を含め事例 12例を挙げて説明。

路線・駅検索のために緯度経度からPHPで簡易的に距離を計算する処理解説
路線・駅検索のために緯度経度からPHPで2点間の距離を計算する処理解説

路線・駅検索の仕組みの構築は大変。それを簡易に実装するために緯度経度を元に距離計算をする仕組みを考案。まずは2点間の距離を計算する仕組みを解説し、距離計算にまつわる関連技術も紹介。

AdminerはphpMyAdmin代替のデータベース管理ツール

AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。

サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない

PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。