services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); // 判断设备平台是否开启 $platform_open = 0; $platform_trades = []; switch ($app_platform) { case User::PLATFORM_APP: !empty($settings['joinpay_platform_app_open']) && $platform_open = $settings['joinpay_platform_app_open']; !empty($settings['joinpay_app_trades']) && $platform_trades = json_decode($settings['joinpay_app_trades'], true); break; case User::PLATFORM_H5: !empty($settings['joinpay_platform_h5_open']) && $platform_open = $settings['joinpay_platform_h5_open']; !empty($settings['joinpay_h5_trades']) && $platform_trades = json_decode($settings['joinpay_h5_trades'], true); break; case User::PLATFORM_WECHAT: !empty($settings['joinpay_platform_wechat_open']) && $platform_open = $settings['joinpay_platform_wechat_open']; !empty($settings['joinpay_wechat_trades']) && $platform_trades = json_decode($settings['joinpay_wechat_trades'], true); break; case User::PLATFORM_MP_WX: !empty($settings['joinpay_platform_mp_wx_open']) && $platform_open = $settings['joinpay_platform_mp_wx_open']; !empty($settings['joinpay_mp_wx_trades']) && $platform_trades = json_decode($settings['joinpay_mp_wx_trades'], true); break; } if (empty($platform_open)) return []; // 是否添加金额限制支付方式 if (!empty($settings['price_limit_open'])) { if (!empty($params['pay_money']) && !empty($settings['price_limit_exceed_price']) && $params['pay_money'] >= $settings['price_limit_exceed_price'] && !empty($settings['price_limit_exceed_trades'])) { $price_limit_trades = json_decode($settings['price_limit_exceed_trades'], true); }else { $price_limit_trades = !empty($settings['price_limit_normal_trades']) ? json_decode($settings['price_limit_normal_trades'], true) : ['wechat', 'alipay', 'fastpay', 'unionpay']; } }else { $price_limit_trades = ['wechat', 'alipay', 'fastpay', 'unionpay']; } // dd(3333, $settings); $enable_pay_type = []; if (!empty($settings['joinpay_status'])) $enable_pay_type[] = 'joinpay'; if (!empty($settings['joinpay_fast_pay_status']) && in_array('fastpay', $price_limit_trades) && in_array('fastpay', $platform_trades)) $enable_pay_type[] = 'joinpay_fast'; $all_payment = JoinPayTypeEnum::allTypeConf(); // dd($all_payment); $enable_payment = []; foreach ($enable_pay_type as $pay_type) { $payment_info = $all_payment[$pay_type] ?? []; if (empty($payment_info)) continue; $trade_type = ''; $payment_type = ''; switch ($payment_info['pay_type']) { case PayTypeEnum::JOINPAY: $payment_type = PayTypeEnum::JOINPAY; $trade_type = JoinPayTypeEnum::getTypeByPlatform($app_platform); if (!empty($trade_type)) { $name = '汇聚'; if (is_array($trade_type)) { foreach ($trade_type as $item) { if (in_array($item, [JoinPayTypeEnum::ALIPAY_H5]) && in_array('alipay', $price_limit_trades)) { //支付宝支付 $new_pay['name'] = $settings['joinpay_alipay_trade_name'] ?? $name . '-' . '支付宝支付'; $new_pay['img'] = str_replace('joinpay', 'alipay', $payment_info['img']); $new_pay['pay_type'] = $payment_type; $new_pay['trade_type'] = $item; $new_pay['action'] = JoinPayTypeEnum::action($payment_type); $enable_payment['joinpay'][] = $new_pay; } elseif (in_array($item, [JoinPayTypeEnum::WEIXIN_H5, JoinPayTypeEnum::WEIXIN_GZH, JoinPayTypeEnum::WEIXIN_APP3, JoinPayTypeEnum::WEIXIN_XCX, JoinPayTypeEnum::WEIXIN_CJXCX]) && in_array('wechat', $price_limit_trades)) { //微信支付 $new_pay['name'] = $settings['joinpay_wechat_trade_name'] ?? $name . '-' . '微信支付'; $new_pay['img'] = str_replace('joinpay', 'wechat', $payment_info['img']); $new_pay['pay_type'] = $payment_type; $new_pay['trade_type'] = $item; $new_pay['action'] = JoinPayTypeEnum::action($payment_type); $enable_payment['joinpay'][] = $new_pay; } elseif (in_array($item, [JoinPayTypeEnum::UNIONPAY_APP, JoinPayTypeEnum::UNIONPAY_H5]) && in_array('unionpay', $price_limit_trades)) { //银联云闪付 $new_pay['name'] = $settings['joinpay_unionpay_trade_name'] ?? $name . '-' . '银联云闪付'; $new_pay['img'] = str_replace('joinpay', 'cloud', $payment_info['img']); $new_pay['pay_type'] = $payment_type; $new_pay['trade_type'] = $item; $new_pay['action'] = JoinPayTypeEnum::action($payment_type); $enable_payment['joinpay'][] = $new_pay; } } } else { if (in_array($trade_type, [JoinPayTypeEnum::ALIPAY_H5]) && in_array('alipay', $price_limit_trades)) { $payment_info['img'] = str_replace('joinpay', 'alipay', $payment_info['img']); $payment_info['name'] = $settings['joinpay_alipay_trade_name'] ?? $name . '-' . '支付宝支付'; } elseif (in_array($trade_type, [JoinPayTypeEnum::WEIXIN_H5, JoinPayTypeEnum::WEIXIN_GZH, JoinPayTypeEnum::WEIXIN_APP3, JoinPayTypeEnum::WEIXIN_XCX, JoinPayTypeEnum::WEIXIN_CJXCX]) && in_array('wechat', $price_limit_trades)) { $payment_info['img'] = str_replace('joinpay', 'wechat', $payment_info['img']); $payment_info['name'] = $settings['joinpay_wechat_trade_name'] ?? $name . '-' . '微信支付'; } $payment_info['trade_type'] = $trade_type; $payment_info['action'] = JoinPayTypeEnum::action($payment_type); $enable_payment[$pay_type] = $payment_info; } } break; case PayTypeEnum::JOINPAY_FAST_PAY: // 汇聚快捷支付 $new_pay['name'] = $settings['joinpay_fastpay_trade_name'] ?? '汇聚-快捷支付'; $new_pay['img'] = str_replace('wechat', 'joinpay_fast', $payment_info['img']); $new_pay['pay_type'] = PayTypeEnum::JOINPAY_FAST_PAY; $new_pay['trade_type'] = 'joinpay_fast'; $new_pay['action'] = JoinPayTypeEnum::action(PayTypeEnum::JOINPAY_FAST_PAY); $enable_payment['joinpay_fast'] = $new_pay; break; } } // dd($enable_payment); // 支付--汇聚支付渠道,1:商品订单,2:余额充值 $joinpay_trade_channel = json_decode($settings['joinpay_trade_channel'], true); if(empty($joinpay_trade_channel)) $joinpay_trade_channel = []; // 提现--汇聚代付支付渠道,1: $joinpay_alternative_channel = json_decode($settings['joinpay_channel_alternative'], true); if(empty($joinpay_trade_channel)) $joinpay_alternative_channel = []; // 汇聚支付的支付渠道为空,不支持汇聚支付 if (empty($joinpay_trade_channel) && empty($joinpay_alternative_channel)) unset($enable_payment['joinpay'], $enable_payment['joinpay_fast']); if (JoinPayTypeEnum::JOINPAY_CHANNEL_ORDER == $req_source) { if (!in_array(1, $joinpay_trade_channel)) { // 商品订单不支持汇聚支付 unset($enable_payment['joinpay'], $enable_payment['joinpay_fast']); } } elseif (JoinPayTypeEnum::JOINPAY_CHANNEL_RECHARGE == $req_source) { if (!in_array(2, $joinpay_trade_channel)) { // 余额充值不支持汇聚支付 unset($enable_payment['joinpay'], $enable_payment['joinpay_fast']); } } elseif (JoinPayTypeEnum::JOINPAY_CHANNEL_ALTERNATIVE_BALANCE == $req_source) { unset($enable_payment['joinpay']); if ($settings['joinpay_alternative_status'] != 1 || !in_array(1, $joinpay_alternative_channel)) { // 余额提现不支持汇聚代付 unset($enable_payment['joinpay_fast']); } } elseif (JoinPayTypeEnum::JOINPAY_CHANNEL_ALTERNATIVE_COMMISSION == $req_source) { unset($enable_payment['joinpay']); if ($settings['joinpay_alternative_status'] != 1 || !in_array(2, $joinpay_alternative_channel)) { // 佣金提现不支持汇聚代付 unset($enable_payment['joinpay_fast']); } } if (!empty($enable_payment['joinpay'])) { $joinpay_info = $enable_payment['joinpay']; unset($enable_payment['joinpay']); $arr = JoinPayTypeEnum::getJoinpayTradeMap(); // dd($arr); if (count($joinpay_info) == count($joinpay_info, 1)) { // 支付方式开关过滤 if (in_array($arr[$joinpay_info['trade_type']], $platform_trades)) { $enable_payment[strtolower($joinpay_info['trade_type'])] = $joinpay_info; } } else { foreach ($joinpay_info as $val) { if (in_array($arr[$val['trade_type']], $platform_trades)) { $enable_payment[strtolower($val['trade_type'])] = $val; } } } } return $enable_payment; } public static function getPaymentType($params) { $mall_id = $params['mall_id']; $settings = \Yii::$app->services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); $enable_pay_type = []; if (!empty($settings['joinpay_status'])){ $enable_pay_type[] = [ "name" => '汇聚支付', "pay_type" => PayTypeEnum::JOINPAY, ]; } if (!empty($settings['joinpay_fast_pay_status'])){ $enable_pay_type[] = [ "name" => '汇聚-快捷支付', "pay_type" => PayTypeEnum::JOINPAY_FAST_PAY, ]; } return $enable_pay_type; } }