芝麻web文件管理V1.00
编辑当前文件:/home/c7lekhnath/silverray.com.au/Modules/BasicPayment/app/Services/PaymentMethodService.php
'Stripe', self::PAYPAL => 'PayPal', self::BANK_PAYMENT => 'Bank Payment', self::RAZORPAY => 'Razorpay', self::FLUTTERWAVE => 'Flutterwave', self::MOLLIE => 'Mollie', self::INSTAMOJO => 'Instamojo', self::PAYSTACK => 'Paystack', default => null, }; } /** * Undocumented function */ public function getGatewayDetails(string $gatewayName): ?object { $basicPayment = $this->get_basic_payment_info(); $paymentSetting = $this->get_payment_gateway_info(); return match ($gatewayName) { self::STRIPE => (object) [ 'stripe_key' => $basicPayment->stripe_key ?? null, 'stripe_secret' => $basicPayment->stripe_secret ?? null, 'currency_id' => $basicPayment->stripe_currency_id ?? null, 'stripe_status' => $basicPayment->stripe_status ?? null, 'charge' => $basicPayment->stripe_charge ?? null, 'stripe_image' => $basicPayment->stripe_image ?? null, ], self::PAYPAL => (object) [ 'paypal_client_id' => $basicPayment->paypal_client_id ?? null, 'paypal_secret_key' => $basicPayment->paypal_secret_key ?? null, 'paypal_account_mode' => $basicPayment->paypal_account_mode ?? null, 'currency_id' => $basicPayment->paypal_currency_id ?? null, 'charge' => $basicPayment->paypal_charge ?? null, 'paypal_status' => $basicPayment->paypal_status ?? null, 'paypal_image' => $basicPayment->paypal_image ?? null, ], self::BANK_PAYMENT => (object) [ 'bank_information' => $basicPayment->bank_information ?? null, 'bank_status' => $basicPayment->bank_status ?? null, 'bank_image' => $basicPayment->bank_image ?? null, 'charge' => $basicPayment->bank_charge ?? null, 'currency_id' => $basicPayment->bank_currency_id ?? null, ], self::RAZORPAY => (object) [ 'razorpay_key' => $paymentSetting->razorpay_key ?? null, 'razorpay_secret' => $paymentSetting->razorpay_secret ?? null, 'razorpay_name' => $paymentSetting->razorpay_name ?? null, 'razorpay_description' => $paymentSetting->razorpay_description ?? null, 'razorpay_theme_color' => $paymentSetting->razorpay_theme_color ?? null, 'razorpay_status' => $paymentSetting->razorpay_status ?? null, 'razorpay_image' => $paymentSetting->razorpay_image ?? null, 'currency_id' => $paymentSetting->razorpay_currency_id ?? null, 'charge' => $paymentSetting->razorpay_charge ?? null, ], self::FLUTTERWAVE => (object) [ 'flutterwave_public_key' => $paymentSetting->flutterwave_public_key ?? null, 'flutterwave_secret_key' => $paymentSetting->flutterwave_secret_key ?? null, 'flutterwave_app_name' => $paymentSetting->flutterwave_app_name ?? null, 'charge' => $paymentSetting->flutterwave_charge ?? null, 'currency_id' => $paymentSetting->flutterwave_currency_id ?? null, 'flutterwave_status' => $paymentSetting->flutterwave_status ?? null, 'flutterwave_image' => $paymentSetting->flutterwave_image ?? null, ], self::PAYSTACK => (object) [ 'paystack_public_key' => $paymentSetting->paystack_public_key ?? null, 'paystack_secret_key' => $paymentSetting->paystack_secret_key ?? null, 'paystack_status' => $paymentSetting->paystack_status ?? null, 'charge' => $paymentSetting->paystack_charge ?? null, 'paystack_image' => $paymentSetting->paystack_image ?? null, 'currency_id' => $paymentSetting->paystack_currency_id ?? null, ], self::MOLLIE => (object) [ 'mollie_key' => $paymentSetting->mollie_key ?? null, 'charge' => $paymentSetting->mollie_charge ?? null, 'mollie_image' => $paymentSetting->mollie_image ?? null, 'mollie_status' => $paymentSetting->mollie_status ?? null, 'currency_id' => $paymentSetting->mollie_currency_id ?? null, ], self::INSTAMOJO => (object) [ 'instamojo_account_mode' => $paymentSetting->instamojo_account_mode ?? null, 'instamojo_client_id' => $paymentSetting->instamojo_client_id ?? null, 'instamojo_client_secret' => $paymentSetting->instamojo_client_secret ?? null, 'charge' => $paymentSetting->instamojo_charge ?? null, 'instamojo_image' => $paymentSetting->instamojo_image ?? null, 'currency_id' => $paymentSetting->instamojo_currency_id ?? null, 'instamojo_status' => $paymentSetting->instamojo_status ?? null, ], default => (object) false, }; } /** * Undocumented function */ public function isActive(string $gatewayName): bool { $gatewayDetails = $this->getGatewayDetails($gatewayName); $activeStatus = config('basicpayment.default_status.active_text'); return match ($gatewayName) { self::STRIPE => $gatewayDetails->stripe_status == $activeStatus, self::PAYPAL => $gatewayDetails->paypal_status == $activeStatus, self::BANK_PAYMENT => $gatewayDetails->bank_status == $activeStatus, self::MOLLIE => $gatewayDetails->mollie_status == $activeStatus, self::RAZORPAY => $gatewayDetails->razorpay_status == $activeStatus, self::FLUTTERWAVE => $gatewayDetails->flutterwave_status == $activeStatus, self::INSTAMOJO => $gatewayDetails->instamojo_status == $activeStatus, self::PAYSTACK => $gatewayDetails->paystack_status == $activeStatus, default => false, }; } /** * Undocumented function */ public function getIcon(string $gatewayName): string { return match ($gatewayName) { self::STRIPE => 'fa-cc-stripe', self::PAYPAL => 'fa-cc-paypal', self::BANK_PAYMENT => 'fa-credit-card', self::MOLLIE => 'fa-cc-mollie', self::RAZORPAY => 'fa-cc-razorpay', self::FLUTTERWAVE => 'fa-cc-flutterwave', self::INSTAMOJO => 'fa-cc-instamojo', self::PAYSTACK => 'fa-cc-paystack', default => null, }; } /** * Undocumented function * * @param [type] $gatewayName */ public function getLogo($gatewayName): ?string { $basicPayment = $this->get_basic_payment_info(); $paymentSetting = $this->get_payment_gateway_info(); return match ($gatewayName) { self::STRIPE => $basicPayment->stripe_image ? asset($basicPayment->stripe_image) : asset('uploads/website-images/stripe.png'), self::PAYPAL => $basicPayment->paypal_image ? asset($basicPayment->paypal_image) : asset('uploads/website-images/paypal.png'), self::BANK_PAYMENT => $basicPayment->bank_image ? asset($basicPayment->bank_image) : asset('uploads/website-images/bank-pay.png'), self::MOLLIE => $paymentSetting->mollie_image ? asset($paymentSetting->mollie_image) : asset('uploads/website-images/mollie.png'), self::RAZORPAY => $paymentSetting->razorpay_image ? asset($paymentSetting->razorpay_image) : asset('uploads/website-images/razorpay.png'), self::FLUTTERWAVE => $paymentSetting->flutterwave_image ? asset($paymentSetting->flutterwave_image) : asset('uploads/website-images/flutterwave.png'), self::INSTAMOJO => $paymentSetting->instamojo_image ? asset($paymentSetting->instamojo_image) : asset('uploads/website-images/instamojo.png'), self::PAYSTACK => $paymentSetting->paystack_image ? asset($paymentSetting->paystack_image) : asset('uploads/website-images/paystack.png'), default => null, }; } protected static array $additionalActiveGateways = []; /** * Add additional active gateways to the list. * * @param array $additionalActiveGatewaysList */ public static function additionalActiveGatewaysList(array $additionalActiveGatewaysList): void { static::$additionalActiveGateways = array_merge(static::$additionalActiveGateways, $additionalActiveGatewaysList); } public function getActiveGatewaysWithDetails(): array { $basicPayment = $this->get_basic_payment_info(); $paymentSetting = $this->get_payment_gateway_info(); $activeStatus = config('basicpayment.default_status.active_text'); // Base gateways $gateways = [ self::STRIPE => [ 'name' => 'Stripe', 'logo' => asset($basicPayment->stripe_image ?? 'uploads/website-images/stripe.png'), 'status' => $basicPayment->stripe_status == $activeStatus, ], self::PAYPAL => [ 'name' => 'PayPal', 'logo' => asset($basicPayment->paypal_image ?? 'uploads/website-images/paypal.png'), 'status' => $basicPayment->paypal_status == $activeStatus, ], self::BANK_PAYMENT => [ 'name' => 'Bank Payment', 'logo' => asset($basicPayment->bank_image ?? 'uploads/website-images/bank-pay.png'), 'status' => $basicPayment->bank_status == $activeStatus, ], self::RAZORPAY => [ 'name' => 'RazorPay', 'logo' => asset($this->paymentSetting->razorpay_image ?? 'uploads/website-images/razorpay.png'), 'status' => $paymentSetting->razorpay_status == $activeStatus, ], self::FLUTTERWAVE => [ 'name' => 'FlutterWave', 'logo' => asset($this->paymentSetting->flutterwave_image ?? 'uploads/website-images/flutterwave.png'), 'status' => $paymentSetting->flutterwave_status == $activeStatus, ], self::PAYSTACK => [ 'name' => 'PayStack', 'logo' => asset($this->paymentSetting->paystack_image ?? 'uploads/website-images/paystack.png'), 'status' => $paymentSetting->paystack_status == $activeStatus, ], self::MOLLIE => [ 'name' => 'Mollie', 'logo' => asset($this->paymentSetting->mollie_image ?? 'uploads/website-images/mollie.png'), 'status' => $paymentSetting->paystack_status == $activeStatus, ], self::INSTAMOJO => [ 'name' => 'Instamojo', 'logo' => asset($this->paymentSetting->instamojo_image ?? 'uploads/website-images/instamojo.png'), 'status' => $paymentSetting->instamojo_status == $activeStatus, ], ]; // Merge base gateways with additional gateways $allGateways = array_merge($gateways, static::$additionalActiveGateways); // Filter only active gateways return array_filter($allGateways, fn($gateway) => $gateway['status'] === true); } /** * Undocumented function * * @param [type] $gatewayName * @param [type] $code */ public function isCurrencySupported($gatewayName, $code = null): bool { if (is_null($code)) { $code = getSessionCurrency(); } return match ($gatewayName) { self::STRIPE => BasicPaymentSupportedCurrencyListEnum::isStripeSupportedCurrencies($code), self::PAYPAL => BasicPaymentSupportedCurrencyListEnum::isPaypalSupportedCurrencies($code), self::BANK_PAYMENT => str($code)->lower() == str(MultiCurrency::where('is_default', 'yes')->first()->currency_code)->lower(), self::MOLLIE => PaymentGatewaySupportedCurrencyListEnum::isMollieSupportedCurrencies($code), self::RAZORPAY => PaymentGatewaySupportedCurrencyListEnum::isRazorpaySupportedCurrencies($code), self::FLUTTERWAVE => PaymentGatewaySupportedCurrencyListEnum::isFlutterwaveSupportedCurrencies($code), self::INSTAMOJO => PaymentGatewaySupportedCurrencyListEnum::isInstamojoSupportedCurrencies($code), self::PAYSTACK => PaymentGatewaySupportedCurrencyListEnum::isPaystackSupportedCurrencies($code), default => false, }; } /** * Undocumented function * * @param [type] $gatewayName */ public function getSupportedCurrencies($gatewayName): array { return match ($gatewayName) { self::STRIPE => BasicPaymentSupportedCurrencyListEnum::getStripeSupportedCurrencies(), self::PAYPAL => BasicPaymentSupportedCurrencyListEnum::getPaypalSupportedCurrencies(), self::BANK_PAYMENT => MultiCurrency::where('is_default', 'yes')->pluck('currency_code')->toArray(), self::MOLLIE => PaymentGatewaySupportedCurrencyListEnum::getMollieSupportedCurrencies(), self::RAZORPAY => PaymentGatewaySupportedCurrencyListEnum::getRazorpaySupportedCurrencies(), self::FLUTTERWAVE => PaymentGatewaySupportedCurrencyListEnum::getFlutterwaveSupportedCurrencies(), self::INSTAMOJO => PaymentGatewaySupportedCurrencyListEnum::getInstamojoSupportedCurrencies(), self::PAYSTACK => PaymentGatewaySupportedCurrencyListEnum::getPaystackSupportedCurrencies(), default => [], }; } /** * @param string $gatewayName */ public function getBladeView(string $gatewayName): ?string { return match ($gatewayName) { self::STRIPE => 'basicpayment::gateway-actions.stripe', self::PAYPAL => 'basicpayment::gateway-actions.paypal', self::BANK_PAYMENT => 'basicpayment::gateway-actions.bank', self::MOLLIE => 'basicpayment::gateway-actions.mollie', self::RAZORPAY => 'basicpayment::gateway-actions.razorpay', self::FLUTTERWAVE => 'basicpayment::gateway-actions.flutterwave', self::INSTAMOJO => 'basicpayment::gateway-actions.instamojo', self::PAYSTACK => 'basicpayment::gateway-actions.paystack', default => null, }; } /** * Undocumented function * * @param [type] $gatewayName * @param [type] $amount * @param int $discount * @param int $deliveryCharge */ public function getPayableAmount($gatewayName, $amount): object { return $this->calculate_payable_charge($amount, $gatewayName); } /** * Undocumented function */ public static function removeSessions(): void { Session::forget([ 'after_success_url', 'after_failed_url', 'payable_amount', 'gateway_charge', 'currency_rate', 'after_success_transaction', 'payable_with_charge', 'payable_currency', 'paid_amount', 'payment_details', 'delivery_charge', 'shipping_method_id', ]); } }