You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
3.7 KiB
PHTML

4 years ago
<?php
namespace Base\Service;
use Base\Facade\Request;
class PaymentMerchantService {
const WAY_ALIPAY = 1;
const WAY_WEIXIN = 2;
const WAY_EXPRESS = 4;
const STATUS_ACTIVE = 1;
const STATUS_INACTIVE = 0;
public static $statusList = [
0 => '禁用',
1 => '启用',
];
public static $channels = [
1 => '支付宝',
2 => '微信支付',
3 => '易宝支付',
4 => '双乾支付',
5 => '汇付宝支付',
2 years ago
6 => '酷点支付',
7 => '丰付支付',
8 => '趣智连支付',
4 years ago
];
public static $ways = [
self::WAY_ALIPAY => '支付宝',
self::WAY_WEIXIN => '微信',
self::WAY_EXPRESS => '快捷支付',
];
public function getStatusText($status)
{
return self::$statusList[$status] ?? '未知';
}
public function getChannelText($channel)
{
return self::$channels[$channel] ?? '未知';
}
public function getMerchantsByIds(array $ids, $fields = '*')
{
if (count($ids) == 0) {
return [];
}
$rules = M('payment_merchant', 'tab_')->field($fields)->where(['in' => ['in', $ids]])->select();
return index_by_column('id', $rules);
}
public function getMerchantsByWay($way)
{
$conditions = [];
$conditions['_string'] = 'ways&' . $way . '=' . $way;
$conditions['status'] = self::STATUS_ACTIVE;
return M('payment_merchant', 'tab_')->where($conditions)->select();
}
public function getWaysValue($ways)
{
$waysValue = 0;
foreach ($ways as $way) {
$waysValue = $waysValue | $way;
}
return $waysValue;
}
public function getWaysRow($waysValue)
{
$row = [];
foreach (self::$ways as $key => $name) {
if (($waysValue & $key) == $key) {
$row[] = $key;
}
}
return $row;
}
public function getWaysName($waysValue)
{
$nameList = [];
$keys = $this->getWaysRow($waysValue);
foreach ($keys as $key) {
$nameList[] = self::$ways[$key] ?? '未知';
}
return $nameList;
}
4 years ago
public function getIdentifierByConfig($config, $channel)
{
$identifier = '';
switch($channel) {
case 1:
$identifier = $config['app_id'] ?? '';
break;
case 2:
$identifier = $config['partner'] ?? '';
break;
case 3:
$identifier = $config['partner'] ?? '';
break;
case 4:
$identifier = $config['merno'] ?? '';
break;
case 5:
$identifier = $config['merno'] ?? '';
break;
}
return $identifier;
}
4 years ago
public function setDefault($way, $merchantId)
{
$merchantBefore = $this->getDefault($way);
if ($merchantBefore && $merchantBefore['id'] == $merchantId) {
return;
}
$merchantAfter = M('payment_merchant', 'tab_')->where(['id' => $merchantId])->find();
if ($merchantAfter) {
$afterData = ['is_default' => $merchantAfter['is_default'] | $way];
M('payment_merchant', 'tab_')->where(['id' => $merchantId])->save($afterData);
}
if ($merchantBefore) {
$beforeData = ['is_default' => $merchantBefore['is_default'] ^ $way];
M('payment_merchant', 'tab_')->where(['id' => $merchantBefore['id']])->save($beforeData);
}
}
public function getDefault($way)
{
4 years ago
return M('payment_merchant', 'tab_')->where(['_string' => 'ways&' . $way . '=' . $way . ' and is_default&' . $way . '=' . $way])->find();
4 years ago
}
}