EC-CUBE3 (3.017)ソニーペイメントで、ポイントプラグインが動作しない。

クレジット決済だけポイントが付いてくれない。

確か2019年でも発症していた、ポイントがクレジット決済のみ0ポイント付与になるという現象。

今後も対処する必要があると思うので、備忘録としても記録する事にした。

EC-CUBE3用、無償のポイントシステムプラグインだが、ソニーペイメント決済と相性が悪い。

ポイントが正常に加算されず、0ポイントで決済が完了してしまう。恥ずかしい事にお客様からの指摘で気が付いた。

ソニーペイメント側としては、他のプラグインには感知しないので対応はされていない。実は、2019年にこの障害が既に発生しており、その際にソース改修対応していたが、2021年の最新版にアップデートした段階で修正箇所が元に戻ってしまい、現象が再発してしまっていた。自分の管理が悪いのだが、数年放置していた頭の中からすっかりこの不具合の事は飛んでしまっていた。

EC-CUBEフォーラムでも投稿されており、解決方法はそれを見ればいいのだが、スレッドを追っていくのが時間がかかり、ドンピシャな回答が書かれていないので、分かりやすいように書いておく事にする。

対応方法

インストールプラグイン

  • ソニーペイメントサービス決済プラグイン (SlnPayment) Ver.1.0.13
  • Pointプラグイン(Point)Ver.1.0.0

修正対象ソース

以下ソースの指定行数にコメントStart~Endまでを夫々挿入するだけ。

\ルート\app\Plugin\SlnPayment\Controller\PaymentController.php

// 400行目      // 受注IDをセッションにセット
                $app['session']->set($this->sessionOrderKey, $Order->getId());

//ポイントが付かない修正 Start
            	$app['eccube.service.shopping']->notifyComplete($Order);
//ポイントが付かない修正 End
                  
                // メール送信
                $app['eccube.service.shopping']->sendOrderMail($Order);

\ルート\app\Plugin\SlnPayment\Service\MailService.php

// 54行目
        $this->app->mail($message);

    //ポイントが付かない修正 Start
    	$event = new EventArgs(
            array(
                'message' => $message,
                'Order' => $Order,
                'MailTemplate' => $MailTemplate,
                'BaseInfo' => $BaseInfo,
            ),
            null
        );
        $this->app['eccube.event.dispatcher']->dispatch(EccubeEvents::MAIL_ORDER, $event);
    //ポイントが付かない修正 End
        
        // 送信履歴を保存.

クレジット決済ですので、独自で十分に検証をして展開してください。

考察

EC-CUBE3は脆弱性からクレジット被害の報告が多数あり、総務省からも注意喚起が行われる程のものであった。以前より疑問視していたこのEC-CUBE3だったが、やはり名は体を表すではないが、何か引っかかる部分があったのは確かで、やっぱりかと感じてしまった。どのシステムでも障害、脆弱性はあるのだが、いかんせん設計に歪があるように思う。

兎に角、対象プラグインのバージョンアップなのだから不具合も直っている筈と言う甘えからもきていたのかもしれない。プログラムも車の運転も「だろう」は事故の元。バージョンアップ後でも、「かもしれない」と考え、必ず検証をする事が必要だ。

宜しければ、シェアお願いします。

コメントを残す

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

CAPTCHA