ECCUBE4のイプシロン決済プラグインで購入時にエラーが
ECCUBE4のプラグイン「イプシロン決済プラグイン(4.0系)」を利用してクレジット決済をする際、
システムエラーが発生しました。商品名の指定が異常です
とエラー画面が表示されるという現象が発生しました。
特定の商品をクレジット決済しようとした時だけこの現象が起きるので原因を調べてみると、商品名の長さが原因のようでした。
商品名の文字数は64バイトまで
イプシロン決済システムの仕様では商品名が「64バイト以下」という制限があるようです。
64バイトと言えば全角で32文字。結構短いです。楽天やAmazonのように長い商品名をつけることに慣れている利用者さんがいた場合、軽々とオーバーしそうです。
そこでプラグインをカスタマイズし、イプシロンにデータを送信する際に、商品名を64バイト以内に丸める処理を入れることで対処することにしました。
対処法
対象プラグインはイプシロン決済プラグイン(4.0系)のバージョン1.07です。
app\Plugin\GmoEpsilon4\Service\Method\GmoEpsilon.php
の239行目付近
修正前
$itemInfo['item_name'] = $orderItem->getProductName().'x'.$orderItem->getQuantity().'個(代表)';
修正後
$itemInfo['item_name'] = mb_strimwidth($orderItem->getProductName(),0,64,'…','UTF-8').'x'.$orderItem->getQuantity().'個(代表)';
※’UTF-8’の部分は環境によっては変わる可能性があります。修正後は商品名が文字化けせずにイプシロン側に送信されるかテストしてください。
これで商品名が長い場合でもエラーなしで決済できるようになりました。