| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?php
- namespace addons\JoinPay\common\global_func\payment_list;
- use addons\JoinPay\common\enums\JoinPayTypeEnum;
- use common\enums\AddonsEnum;
- use common\enums\PayTypeEnum;
- use common\models\user\User;
- class PaymentList
- {
- public static function getPaymentList($params)
- {
- $app_platform = $params['app_platform'];
- $mall_id = $params['mall_id'];
- $req_source = $params['req_source'] ?? 1;
- $settings = \Yii::$app->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;
- }
- }
|