public static paymentDriverClass ( $provider ) : string | ||
$provider | ||
return | 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';
}
}
/** * @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; }