xserverでEC-CUBE3 & クロネコwebコレクトを使おうとしたときにちょっとハマりそうになった書いておきます。
現象
専用IPアドレスを用意していても、クロネコwebコレクトの決済で「当該加盟店のAPI利用不可」というエラーになる
http://yamato-financial.okbiz.okwave.jp/faq/show/2804?site_domain=default
原因
EC-CUBEをインストールしたWebサーバーが複数のNICを持っていたため、ヤマトの決済サーバにアクセスする際に専用IPアドレスを使っていなかった。
対策
プラグイン内のcurl関数のオプションを設定している部分に、CURLOPT_INTERFACE
を追加して、専用IPアドレスを設定する
YamatoPayment\Service\Client\BaseClientService.php
の383行目から。
YamatoPayment\Service\Client\BaseClientService.php
// 通信実行
try {
$curlOptions = array('CURLOPT_SSLVERSION' => 0, 'CURLOPT_INTERFACE' => 'xxx.xxx.xxx.xx'); // 専用IPアドレスを指定
// 中略
$client->setConfig(array('curl.options' => $curlOptions));
環境
- xserverの共用サーバー + CoreSSL証明書 + 専用IPアドレスオプション
- php 7.1.4
- EC-CUBE 3.0.15
- クロネコヤマト カード・後払い一体型決済モジュール 1.1.0