Files
jk8_admin/app/common/service/JK8Services.php
2026-04-16 14:16:41 +08:00

188 lines
5.1 KiB
PHP

<?php
namespace app\common\service;
use think\Exception;
class Jk8Services
{
private $config = [];
private $domain = '';
private $accessId = '';
private $token = '';
public function __construct()
{
$this->config = config('jk8');
$this->domain = config('jk8.domain');
$this->accessId = config('jk8.access_id');
$this->token = config('jk8.token');
}
/**
* 构建请求参数
* @param string $method
* @param array $params
* @return array
*/
public function createParam(string $method, array $params): array
{
return [
'module' => $method,
'accessId' => $this->accessId,
'accessToken' => $this->token,
...$params,
];
}
/**
* 用户注册
* @param string $username
* @param string $nickname
* @param string $referrerCode
* @return string
* @throws Exception
*/
public function register(string $username, string $nickname, string $referrerCode): string
{
$params = $this->createParam('/member/register', [
'username' => $username,
// 'name' => $nickname,
'referrerCode' => $referrerCode,
]);
$result = doCurl($this->domain, $params);
if (($result['status'] ?? '') === 'ERROR') {
throw new Exception($result['data']['message'] ?? 'Remote API Error');
}
return $result['data']['id'];
}
/**
* 获取促销列表
* @param string $userId
* @return array|mixed|null
* @throws Exception
*/
public function getPromotionList(string $userId): mixed
{
$params = $this->createParam('/users/getPromotionList', [
'userId' => $userId,
]);
$result = doCurl($this->domain, $params);
if (($result['status'] ?? '') === 'ERROR') {
throw new Exception($result['data']['message'] ?? 'Remote API Error');
}
return $result;
}
/**
* 转账
* @param string $username
* @return array|mixed|null
* @throws Exception
*/
public function setScore(string $username): mixed
{
$params = $this->createParam('/member/setScore', [
'username' => $username,
]);
$result = doCurl($this->domain, $params);
if (($result['status'] ?? '') === 'ERROR') {
throw new Exception($result['data']['message'] ?? 'Remote API Error');
}
return $result;
}
/**
* 存款
* @param array $params 参数
* @return array
* @throws Exception
* @throws GameException
*/
public function deposit(array $params): array
{
$auth = $this->auth($params);
if (!$auth['status']) {
throw new GameException($auth['message']);
}
$data = [
'username' => $params['name'],
'auth' => $auth['auth'],
'amount' => $params['amount'],
'currency' => 'MYR',
'orderid' => $params['orderNo'],
'redirect_url' => $this->returnUrl . '?orderNo='.$params['orderNo'],
];
return doFormCurl($this->domain . '/merchant/generate_orders',$data);
}
/**
* 代付
* @param array $params 参数
* @throws GameException|Exception
*/
public function payout(array $params): array
{
$params['type'] = 'online';
$auth = $this->auth($params);
if (!$auth['status']) {
throw new GameException($auth['message']);
}
$data = [
'auth' => $auth['auth'],
'amount' => $params['amount'],
'currency' => 'MYR',
'orderid' => $params['orderNo'],
'bank_id' => $params['bankCode'],
'holder_name' => $params['bankAccountName'],
'account_no' => $params['bankAccountNo'],
];
return doFormCurl($this->domain . '/merchant/withdraw_orders',$data);
}
/**
* 验证
* @param array $params 参数
* @throws Exception
*/
public function depositVerifySign(array $params)
{
$orderInfo = PlayerRechargeRecord::query()
->where(['tradeno' => $params['order_id']])
->first();
if (empty($orderInfo)) {
return false;
}
return MD5($this->config[$orderInfo['payment_method']]['secret_key'] . $params['order_id']);
}
/**
* 验证
* @param array $params 参数
* @throws Exception
*/
public function withdrawalVerifySign(array $params)
{
return MD5($this->config['online']['secret_key'] . $params['order_id']);
}
/**
* 订单查询
* @param $orderNo
* @return array
* @throws Exception
*/
public function query($orderNo): array
{
$orderInfo = PlayerRechargeRecord::query()
->where(['tradeno' => $orderNo])
->first();
$data = [
'username' => $this->config[$orderInfo['payment_method']]['merchantId'],
'id' => $orderNo,
];
return doFormCurl($this->domain . '/merchant/check_status',$data);
}
}