PaymentList.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace addons\HuijuBill\common\global_func;
  3. use addons\HuijuBill\common\enums\HuijuBillTypeEnum;
  4. use common\enums\AddonsEnum;
  5. use common\enums\PayTypeEnum;
  6. use Yii;
  7. use yii\helpers\Json;
  8. /**
  9. * 获取支付方式公共调用
  10. */
  11. class PaymentList
  12. {
  13. /**
  14. * 获取支付方式
  15. *
  16. * @param array $params
  17. * @return array
  18. */
  19. public static function getPaymentList($params)
  20. {
  21. // 当前商城ID
  22. $mall_id = $params['mall_id'];
  23. // 当前平台
  24. $app_platform = $params['app_platform'];
  25. $req_source = $params['req_source'] ?? 1;
  26. $settings = Yii::$app->services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_HUIJU_BILL, 'basic');
  27. $enable_pay_type = [];
  28. // 是否开启支付
  29. if (!(!empty($settings['huijubill_status']) && $settings['huijubill_status'])) {
  30. return [];
  31. }
  32. if (!empty($settings['huijubill_status'])) $enable_pay_type[] = HuijuBillTypeEnum::HUIJU_BILL_JOINPAY;
  33. $all_payment = HuijuBillTypeEnum::allTypeConf();
  34. $enable_payment = [];
  35. foreach ($enable_pay_type as $pay_type) {
  36. // 当前支付
  37. $payment_info = $all_payment[$pay_type] ?? [];
  38. if (empty($payment_info)) continue;
  39. $trade_type = '';
  40. $payment_type = '';
  41. switch ($payment_info['pay_type']) {
  42. case HuijuBillTypeEnum::BILL_JOINPAY:
  43. $payment_type = PayTypeEnum::HUIJU_BILL;
  44. $trade_type = HuijuBillTypeEnum::getTypeByPlatform($app_platform);
  45. if (!empty($trade_type)) {
  46. $name = '汇聚分账';
  47. if (is_array($trade_type)) {
  48. foreach ($trade_type as $item) {
  49. if (in_array($item, [HuijuBillTypeEnum::ALIPAY_H5])) {
  50. //支付宝支付
  51. $new_pay['name'] = $settings['huijubill_alipay_trade_name'] ?? $name . '-' . '支付宝支付';
  52. $new_pay['img'] = str_replace('huiju_bill', 'alipay', $payment_info['img']);
  53. $new_pay['pay_type'] = $payment_type;
  54. $new_pay['trade_type'] = $item;
  55. $new_pay['action'] = HuijuBillTypeEnum::action($payment_type);
  56. $enable_payment['huiju_bill'][] = $new_pay;
  57. }
  58. if (in_array($item, [HuijuBillTypeEnum::WEIXIN_GZH, HuijuBillTypeEnum::WEIXIN_XCX])) {
  59. //微信支付
  60. $new_pay['name'] = $settings['huijubill_wechat_trade_name'] ?? $name . '-' . '微信支付';
  61. $new_pay['img'] = str_replace('huiju_bill', 'wechat', $payment_info['img']);
  62. $new_pay['pay_type'] = $payment_type;
  63. $new_pay['trade_type'] = $item;
  64. $new_pay['action'] = HuijuBillTypeEnum::action($payment_type);
  65. $enable_payment['huiju_bill'][] = $new_pay;
  66. }
  67. }
  68. } else {
  69. if (in_array($trade_type, [HuijuBillTypeEnum::ALIPAY_H5])) {
  70. $payment_info['name'] = $settings['huijubill_alipay_trade_name'] ?? $name . '-' . '支付宝支付';
  71. $payment_info['img'] = str_replace('huiju_bill', 'alipay', $payment_info['img']);
  72. }
  73. if (in_array($trade_type, [HuijuBillTypeEnum::WEIXIN_GZH, HuijuBillTypeEnum::WEIXIN_XCX])) {
  74. $payment_info['name'] = $settings['huijubill_wechat_trade_name'] ?? $name . '-' . '微信支付';
  75. $payment_info['img'] = str_replace('huiju_bill', 'wechat', $payment_info['img']);
  76. }
  77. $payment_info['trade_type'] = $trade_type;
  78. $payment_info['action'] = HuijuBillTypeEnum::action($payment_type);
  79. $enable_payment[$pay_type] = $payment_info;
  80. }
  81. }
  82. break;
  83. }
  84. }
  85. // 支付--汇聚支付渠道,1:商品订单,2:余额充值
  86. $huijubill_trade_channel = Json::decode($settings['huijubill_trade_channel']);
  87. if(empty($huijubill_trade_channel)) $huijubill_trade_channel = [];
  88. // 汇聚支付的支付渠道为空,不支持汇聚支付
  89. if (empty($huijubill_trade_channel)) {
  90. unset($enable_payment['huiju_bill']);
  91. }
  92. if (HuijuBillTypeEnum::JOINPAY_CHANNEL_ORDER == $req_source) {
  93. if (!in_array(1, $huijubill_trade_channel)) {
  94. // 商品订单不支持汇聚支付
  95. unset($enable_payment['huiju_bill']);
  96. }
  97. }
  98. if (HuijuBillTypeEnum::JOINPAY_CHANNEL_RECHARGE == $req_source) {
  99. if (!in_array(2, $huijubill_trade_channel)) {
  100. // 余额充值不支持汇聚支付
  101. unset($enable_payment['huiju_bill']);
  102. }
  103. }
  104. if (!empty($enable_payment['huiju_bill'])) {
  105. $joinpay_info = $enable_payment['huiju_bill'];
  106. unset($enable_payment['huiju_bill']);
  107. $arr = [
  108. HuijuBillTypeEnum::WEIXIN_GZH => 'huijubill_wechat_open',
  109. HuijuBillTypeEnum::WEIXIN_XCX => 'huijubill_mp_wx_open',
  110. HuijuBillTypeEnum::ALIPAY_H5 => 'huijubill_alipay_h5_open',
  111. ];
  112. if (count($joinpay_info) == count($joinpay_info, 1)) {
  113. // 支付方式开关过滤
  114. if (1 == $settings[$arr[$joinpay_info['trade_type']]]) {
  115. $enable_payment[strtolower($joinpay_info['trade_type'])] = $joinpay_info;
  116. }
  117. } else {
  118. foreach ($joinpay_info as $val) {
  119. if (1 == $settings[$arr[$val['trade_type']]]) {
  120. $enable_payment[strtolower($val['trade_type'])] = $val;
  121. }
  122. }
  123. }
  124. }
  125. return $enable_payment;
  126. }
  127. /**
  128. * 获取支付方式
  129. *
  130. * @param array $params
  131. * @return array
  132. */
  133. public static function getPaymentType($params)
  134. {
  135. // 当前商城ID
  136. $mall_id = $params['mall_id'];
  137. $settings = Yii::$app->services->setting->addons->get($mall_id, AddonsEnum::ADDONS_NAME_HUIJU_BILL, 'basic');
  138. $enable_pay_type = [];
  139. // 是否开启支付
  140. if (!(!empty($settings['huijubill_status']) && $settings['huijubill_status'])) {
  141. return [];
  142. }
  143. if (!empty($settings['huijubill_status'])) $enable_pay_type[] = [
  144. "name" => '汇聚分账支付',
  145. "pay_type" => PayTypeEnum::HUIJU_BILL,
  146. ];
  147. return $enable_pay_type;
  148. }
  149. }