EC-CUBE / EC-CUBE/ec-cube

利用条件を満たさない支払方法がセットされることがある

Open
#4,208 2 comments 0 reactions 0 assignees View on GitHub
bug:Middle
Dominant language
PHP
Stars
788
Forks
719
Avg merge
4d 4h
Merged PRs (30d)
39

Description

## 概要(Overview)
一番上に表示されている支払方法が利用条件を満たさない場合、見た目上支払方法が表示されなくなるが、受注データ上では一番上の支払方法がセットされており、見た目上でもラジオボタンの初期値が表示されていない。
※テンプレートの機能でラジオボタンが選択されていないことを検知して辛うじて止まっているが、
 データも正しくあるべきでは?

これによって、プラグインなどでFormExtensionを利用している場合に利用条件を満たさないにも関わらずフォームのみ表示されてしまうなどといった問題がある。

## 期待する内容(Expect) or 要望 (Requirement)
支払方法が利用条件を満たさない場合は、その支払方法を取得しないようにする。(PaymentRepository::findAllowedPayments()の返り値に含めない)

## 再現手順(Procedure)
・購入フロー中、一番上に表示されている支払方法に支払条件を設ける。
・支払条件を満たさないカート状態として、購入フローへ進む。
・ラジオボタンで選択されている支払方法が表示されていないことがわかります。
・このときの$Orderインスタンスをデバッグすることで、支払方法を満たさない支払方法が受注にセットされていることが確認できます。

### 環境 (environment)
+ EC-CUBE: 4.0.2
+ PHP: 7.x.x
+ DB:
- PostgreSQL x.x.x
- MySQL x.x.x

## 関連情報 (Ref)
下記、現象発生時のエビデンスを添付します。

条件:
「郵便振替」に 0~¥1000の利用条件を設定
カートを1000円以上にして、購入フローに遷移

![無題](https://user-images.githubusercontent.com/42460318/60500286-079a8b00-9cf5-11e9-8328-114d8fdafee1.png)

補足:
$Orderの出力箇所↓
ShoppingController::index(110行目にてdumpで出力)
```
// 受注の初期化.
log_info('[注文手続] 受注の初期化処理を開始します.');
$Customer = $this->getUser() ? $this->getUser() : $this->orderHelper->getNonMember();
$Order = $this->orderHelper->initializeOrder($Cart, $Customer);

dump($Order);
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.