72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php
|
||
|
||
namespace Common;
|
||
|
||
require_once __DIR__ . '/PaymentInterface.php';
|
||
|
||
/**
|
||
* クレジットカード決済を行うクラス
|
||
*/
|
||
class CreditCardPayment implements PaymentInterface
|
||
{
|
||
/** @var string カード番号 */
|
||
private $cardNumber;
|
||
|
||
/** @var string カード名義人 */
|
||
private $cardHolder;
|
||
|
||
/**
|
||
* コンストラクタ
|
||
*
|
||
* @param string $cardNumber カード番号
|
||
* @param string $cardHolder カード名義人
|
||
*/
|
||
public function __construct($cardNumber, $cardHolder)
|
||
{
|
||
// TODO: カード番号とカード名義人をプロパティに設定してください
|
||
}
|
||
|
||
/**
|
||
* クレジットカードで決済を実行する
|
||
*
|
||
* @param int $amount 決済金額(円)
|
||
* @return bool 決済が成功したかどうか
|
||
*/
|
||
public function pay($amount)
|
||
{
|
||
// TODO: 以下の情報を表示して、最後に true を返してください
|
||
// - "💳 クレジットカード決済処理"
|
||
// - "カード番号: " に続けてマスキングされたカード番号(maskCardNumber メソッドを使用)
|
||
// - "名義人: " に続けてカード名義人
|
||
// - "決済金額: ¥" に続けて金額をカンマ区切りで表示(number_format 関数を使用)
|
||
// - "決済が完了しました。"
|
||
// ※各行の最後に <br> を付けること
|
||
}
|
||
|
||
/**
|
||
* 決済方法の名前を取得する
|
||
*
|
||
* @return string 決済方法名
|
||
*/
|
||
public function getPaymentMethodName()
|
||
{
|
||
// TODO: "クレジットカード" という文字列を返してください
|
||
}
|
||
|
||
/**
|
||
* カード番号をマスキングする(セキュリティのため)
|
||
*
|
||
* @param string $cardNumber カード番号
|
||
* @return string マスキングされたカード番号
|
||
*/
|
||
private function maskCardNumber($cardNumber)
|
||
{
|
||
// TODO: カード番号を「****-****-****-最後の4桁」の形式でマスキングしてください
|
||
// ヒント:
|
||
// 1. explode('-', $cardNumber) でカード番号を '-' で分割して配列にする
|
||
// 2. 配列の要素数が4つの場合、最後の要素($parts[3])以外を「****」に置き換える
|
||
// 3. "****-****-****-" と最後の4桁を結合して返す
|
||
// 4. 配列の要素数が4つでない場合は "****-****-****-****" を返す
|
||
}
|
||
}
|