app\models\AccountGateway::paymentDriverClass PHP Метод

paymentDriverClass() публичный статический Метод

public static paymentDriverClass ( $provider ) : string
$provider
Результат string
    public static function paymentDriverClass($provider)
    {
        $folder = 'App\\Ninja\\PaymentDrivers\\';
        $class = $folder . $provider . 'PaymentDriver';
        $class = str_replace('_', '', $class);
        if (class_exists($class)) {
            return $class;
        } else {
            return $folder . 'BasePaymentDriver';
        }
    }

Usage Example

Пример #1
0
 /**
  * @return array
  */
 public function availableGatewaysIds()
 {
     if (!$this->relationLoaded('account_gateways')) {
         $this->load('account_gateways');
     }
     $gatewayTypes = [];
     $gatewayIds = [];
     foreach ($this->account_gateways as $accountGateway) {
         $paymentDriver = $accountGateway->paymentDriver();
         $gatewayTypes = array_unique(array_merge($gatewayTypes, $paymentDriver->gatewayTypes()));
     }
     foreach (Cache::get('gateways') as $gateway) {
         $paymentDriverClass = AccountGateway::paymentDriverClass($gateway->provider);
         $paymentDriver = new $paymentDriverClass();
         $available = true;
         foreach ($gatewayTypes as $type) {
             if ($paymentDriver->handles($type)) {
                 $available = false;
                 break;
             }
         }
         if ($available) {
             $gatewayIds[] = $gateway->id;
         }
     }
     return $gatewayIds;
 }