ip();
// $params['spbill_create_ip'] = '115.195.83.99';
$params['notify_url'] = 'http://sdkapi.newsdk.com/pay.php';
$params['trade_type'] = 'MWEB';
// $params['scene_info'] = '{"h5_info":{"type":"Wap","wap_url":"'.$wap_url.'","wap_name":"祈盟"}}';
$params['scene_info'] = '{"h5_info":{"type":"Wap","wap_url":"http://sdkapi.newsdk.com","wap_name":"祈盟"}}';
//获取签名数据
// $params['sign'] = $wxPay->MakeSign($params, Config::get('wxpay-h5')['key']);
$params['sign'] = $wxPay->MakeSign($params, '66052a198653943dbc6c8032f1a40a9c');
$xml = dataToXml($params);
$response = $wxPay->postXmlCurl($xml, 'https://api.mch.weixin.qq.com/v3/pay/partner/transactions/h5');
dump($response);
$result = $wxPay->xmlToArray($response);
}
public function index()
{
// echo phpinfo();
// $return_arr['mweb_url'] = 'http://sdkapi.46yx.com';
// $return_url = 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx05112758904301e15b6b8e875970b00000&package=2416986125';
// header("location:" . $return_arr['mweb_url'] . "&redirect_url={$return_url}");
// return json_encode(["code" => 200, "message" => "HELLO API!", "data" => ""]);
$gameid = input('gameid');
if(!$gameid){
return json_encode(["code" => 200, "message" => "HELLO API!", "data" => ""]);
}
$userAgent = $_SERVER["HTTP_USER_AGENT"];
if((stripos($userAgent, "iPhone") !== false || stripos($userAgent, "iPad") !== false)){
$gameIds = Config::get('ios_jump_game');
if(array_key_exists($gameid, $gameIds)){
header("location: ". $gameIds[$gameid]);
}
echo "请联系开发配置当前游戏跳转!";
}
}
// TODO:媒体对接测试(可删)
public function mediaTest(){
$input = input();
log_message('input:' . json_encode($input), 'log', LOG_PATH . 'mediaTest/');
$msg = "\n input=". json_encode($input) ." , \n date: ".date('Y-m-d H:i:s', time())." \n";
curlDD($msg,"https://oapi.dingtalk.com/robot/send?access_token=e129a024173c56f193a6343012edd4072cb8f1d1a771a72ca126fcfa4d521ba8");
return "success";
}
public function transpondUrlAction()
{
// $url = $request->get("url"); // 获取接口传入需要转发的url注意需要用url编码。由于基于Symfony框架实现$request可以直接获取url参数,原生可用$_GET['url']代替
$url = 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx05112758904301e15b6b8e875970b00000&package=2416986125';
$userAgent = $this->getAgent('user-agent');
if (empty($url) or $url == "") return false;
if (empty($userAgent)) $userAgent = $this->getAgent();
$ch = curl_init();
if (preg_match("/^https:\\/\\/.+/", $url)) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
}
$cip = '125.77.44.84';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
// curl_setopt ($ch, CURLOPT_COOKIEJAR, './cookie.txt'); // cookie日志
// 微信Wap支付需要伪造请求头Referer该参数,该参数需设置与微信支付配置都安全域名一致
curl_setopt($ch, CURLOPT_REFERER, "http://sdkapi.46yx.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["CLIENT-IP:$cip"]);// 这里需要设置客户端的Ip地址,用于伪造请求IP地址
curl_setopt($ch, CURLOPT_HEADER, 1); //显示返回的HEAD区域的内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
}
public function getAgent()
{
$agentarry = [
"iPhone11" => "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.18 NetType/WIFI Language/en",
"华为P9全网通" => "Mozilla/5.0 (Linux; Android 7.0; EVA-AL00 Build/HUAWEIEVA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 MicroMessenger/6.5.13.1100 NetType/WIFI Language/zh_CN",
"小米5X" => "Mozilla/5.0 (Linux; U; Android 7.1.2; zh-cn; MI 5X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.146 Mobile Safari/537.36 XiaoMi/MiuiBrowser/9.2.2",
"一加手机3" => "Mozilla/5.0 (Linux; Android 7.1.1; ONEPLUS A3000 Build/NMF26F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 MicroMessenger/6.5.13.1100 NetType/WIFI Language/zh_CN",
"努比亚Z11" => "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; NX531J Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/6.8 Mobile Safari/537.36",
"小米5s" => "Mozilla/5.0 (Linux; Android 6.0.1; MI 5s Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.2.0_730_YYB_D QQ/7.2.0.3270 NetType/WIFI WebP/0.3.0 Pixel/1080",
"华为nova" => "Mozilla/5.0 (Linux; Android 7.0; HUAWEI CAZ-AL10 Build/HUAWEICAZ-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.1.0_692_YYB_D QQ/7.1.0.3175 NetType/WIFI WebP/0.3.0 Pixel/1080",
"联想ZUK Z2 Pro" => "Mozilla/5.0 (Linux; Android 7.0; ZUK Z2121 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.2.0_730_YYB_D QQ/7.2.0.3270 NetType/4G WebP/0.3.0 Pixel/1080",
"魅蓝note 3" => "Mozilla/5.0 (Linux; Android 5.1; m3 note Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 T7/9.3 baiduboxapp/9.3.0.10 (Baidu; P1 5.1)",
"三星GALAXY S8+" => "Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; SM-G9550 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36",
"魅族MX6 " => "Mozilla/5.0 (Linux; Android 6.0; MX6 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 MicroMessenger/6.5.13.1100 NetType/4G Language/zh_CN",
"vivo Xplay5A" => "Mozilla/5.0 (Linux; Android 5.1.1; vivo Xplay5A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 T7/9.3 baiduboxapp/9.3.0.10 (Baidu; P1 5.1.1)",
"三星GALAXY C7" => "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; SM-C7000 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.6.2.948 Mobile Safari/537.36",
"三星GALAXY S8" => "Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; SM-G9500 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36",
"荣耀8青春版" => "Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; PRA-AL00 Build/HONORPRA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36",
"UCOpenwave" => "Openwave/ UCWEB7.0.2.37/28/999",
"UC Opera" => "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999",
"小米4S" => "Mozilla/5.0 (Linux; U; Android 5.1.1; zh-cn; MI 4S Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.146 Mobile Safari/537.36 XiaoMi/MiuiBrowser/9.1.3",
"OPPO R12" => "Mozilla/5.0 (Linux; U; Android 7.1.1; zh-CN; OPPO R11 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36",
"iPhone2" => "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.7 NetType/WIFI Language/zh_CN",
];
return $agentarry[array_rand($agentarry, 1)];
}
// ## 短信验证码
private function encode($str)
{
$res = urlencode($str);
$res = preg_replace("/\+/", "%20", $res);
$res = preg_replace("/\*/", "%2A", $res);
$res = preg_replace("/%7E/", "~", $res);
return $res;
}
private function fetchContent($url, $method, $body)
{
$ch = curl_init();
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
} else {
$url .= '?' . $body;
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"x-sdk-client" => "php/2.0.0"
));
if (substr($url, 0, 5) == 'https') {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
$rtn = curl_exec($ch);
if ($rtn === false) {
// 大多由设置等原因引起,一般无法保障后续逻辑正常执行,
// 所以这里触发的是E_USER_ERROR,会终止脚本执行,无法被try...catch捕获,需要用户排查环境、网络等故障
trigger_error("[CURL_" . curl_errno($ch) . "]: " . curl_error($ch), E_USER_ERROR);
}
curl_close($ch);
return $rtn;
}
public function senCode(){
$accessKeyId = 'LTAI5tMnwbRaFFNegZABs1i9';
$accessKeySecret = '1AFchDeuPoytXzcCD8HUU4gsMizwn3';
$params = [
'PhoneNumbers' => '13121776520',
'SignName' => '祈盟',
'TemplateCode' => 'SMS_496015161',
'TemplateParam' => json_encode(['name' => '顾长歌', 'money' => 999], JSON_UNESCAPED_UNICODE),
];
$params = array_merge($params, [
"RegionId" => "cn-hangzhou",
"Action" => "SendSms",
"Version" => "2017-05-25",
]);
$apiParams = array_merge([
"SignatureMethod" => "HMAC-SHA1",
"SignatureNonce" => uniqid(mt_rand(0,0xffff), true),
"SignatureVersion" => "1.0",
"AccessKeyId" => $accessKeyId,
"Timestamp" => gmdate("Y-m-d\TH:i:s\Z"),
"Format" => "JSON",
], $params);
// dump($apiParams);
ksort($apiParams);
$sortedQueryStringTmp = "";
foreach ($apiParams as $key => $value) {
$sortedQueryStringTmp .= "&" . $this->encode($key) . "=" . $this->encode($value);
}
$stringToSign = "POST&%2F&" . $this->encode(substr($sortedQueryStringTmp, 1));
$sign = base64_encode(hash_hmac("sha1", $stringToSign, $accessKeySecret . "&",true));
$signature = $this->encode($sign);
$content = $this->fetchContent("http://dysmsapi.aliyuncs.com/", "POST", "Signature={$signature}{$sortedQueryStringTmp}");
dump($content);
}
public function pay(){
die;
// 根据域名获取发起支付URL
// http://devsdkapi.youxi9.com/test_pay?customMoney=1
// http://devsdkapi.qmgames.cn/test_pay?customMoney=1
// http://sdkapi.newsdk.com/test_pay?customMoney=1
// http://sdkapi.newsdk.com/test_pay
// 根据URL做跳转
// $pay_url = input('pay_url');
// if($pay_url){
// $this->assign('pay_url', $pay_url);
// return $this->fetch();
// }else{
// 直接生成订单,发起支付
$pay = new PayService();
$notify_url = Config::get('wxpay-h5')['notify_url'];
$ip = $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1';
$orderid = 'DT'. time(). mt_rand(10000000,99999999);
$payInfoRes = $pay->getWxpayH5Param($orderid, 1, "测试商品", $ip, $notify_url);
$pay_url = "http://devsdkapi.youxi9.com/test_pay?pay_url=".$payInfoRes['data']['mweb_url'];
// header("Location: {$pay_url}");
// }
$this->assign('pay_url', $pay_url);
return $this->fetch();
}
public function notify(){
// 根据域名获取发起支付URL
// http://sdkapi.newsdk.com/notify
// $input = '{"gmt_create":"2026-04-16 20:33:08","charset":"utf-8","seller_email":"coolpads@126.com","notify_time":"2026-04-16 22:30:48","subject":"\u7279\u60e0\u793c\u5305","sign":"YsAqB42sE4rXglnlAo0rls1RaeP8xyznILR55y+IUK8oge2ktIBI+N9YqUu+GzOIomMzO5yhnMWvrdG\/xUa+Usop6gJZOPAYDpUON8pmYWunRoPWr9b1vEh+hVQFMxM4rQePyDx3e7gJ8GlpxEgrGohjJt2XETQyOSxKIXyRkENFKNxW93KwLp4gKNcLvB\/NutK4schqNtBaTuXrWIUX07bMDq7PAlzG7iOnFuNoouLwEAgMKHuzUSawgs7eD40No3FoDRZzJIhehyca9ZNTjGfMU\/dNF\/FOg+QHuyEmK6tvDICRYkwHOIQ0w099W\/1ToXyLp4aoYZMrq5HpQ+Y\/gA==","buyer_id":"2088822405920853","version":"1.0","notify_id":"2026041601222210402020851433505728","notify_type":"trade_status_sync","out_trade_no":"WL17763427819316214057","total_amount":"10.50","refund_fee":"0.00","trade_status":"TRADE_CLOSED","trade_no":"2026041623001420851437484237","auth_app_id":"2021002136682180","buyer_logon_id":"177****2043","gmt_close":"2026-04-16 21:04:02","app_id":"2021002136682180","sign_type":"RSA2","seller_id":"2088141187506144"}';
// $result = json_decode($input, true);
// dump($result);
// $orderid = 'DT'. time(). mt_rand(10000000,99999999);
// $orderid = 'WL17769362780609203154';
$orderid = 'WL17803075011896409072';
$orderid = 'WL17803175979579639315';
$refundData = [
"out_trade_no" => $orderid, // 商户订单号
// "order_no" => $order_no, // 交易流水号
"out_refund_no" => $orderid.'_T', // 商户退款单号
"refund_amount" => "0.01", // 退款金额(元)
"refund_reason" => "订单已取消,系统自动退款处理", // 退款原因
];
// $refundRsult = \app\common\factory\Pay::makeRefund('ali_pay', $refundData);
// $refundRsult = \app\common\factory\Pay::makeQuery('xty_pay', $refundData);
// $refundRsult = \app\common\factory\Pay::makeRefund('xty_pay', $refundData);
// $refundRsult = \app\common\factory\Pay::makeQuery('qzl_pay', $refundData);
$refundRsult = \app\common\factory\Pay::makeRefund('qzl_pay', $refundData);
dump("notify: ", $refundRsult);
}
// 接口测试专用
public function wen_test()
{
// http://sdkapi.newsdk.com/index/wen_test
// // 调用系统内置命令,例如 optimize:schema
// Console::call('ComplexSummaryGameServer', ['day'=>'2025-12-21']);
// // // 调用自定义命令,并传参
// $input = new Input(['day', '2025-12-17']);
// $output = new Output();
// Console::call('ComplexSummaryComplex', $input->getArguments(), $output);
// // 获取命令输出内容
// echo $output->fetch();
// die;
// dump(strtotime("2025-10-30 23:59:59"));
// dump(date("Y-m-d H:i:s", 1761799926), date("Y-m-d H:i:s", 1761809613));
// ## Hi支付测试
$payData = [
'productname' => '测试商品',
'attach' => 'DT'. time(). mt_rand(10000000, 99999999),
'amount' => 0.01,
'notify_url' => 'http://devsdkapi.qmgames.cn/payNotify',
];
$pay = new PayService();
$result = $pay->getSywPayParam($payData, 'wxh5');
// dump($result);
dump("http://qmpay.youxi9.com/?orderid=".$payData['attach']."&payurl=".$result['data']['mweb_url']);
// header("Location: " . $result['data']);
$mweb_url = $result['data'];
// $this->assign('data', $result['data']);
// $this->fetch();
// die;
// $res = (new HandleService())->getCacheGiftNum();
// dump($res);
// ## 短信
// config('ALI_SMS.channelAdvanceMobile')
// $result = (new \app\common\library\Sms)->sendNotify('13121776520', 'SMS_496015161', ['name' => 'xxx', 'money' => 999]);
// dump($result);
// ## 发起支付测试
// $orderid = makeOrderid();
// $notify_url = Config::get('wxpay-h5')['notify_url'];
// $result = (new PayService)->getHipayWxpayH5Param($orderid, 0.01, $notify_url, '测试商品', request()->ip(), 10);
// dump($result);
// ## 旅人三区活动
// $res = (new LvRenSdk())->sendRewards('103523_stable', '10082', '1008200125959', '250225', '1'); // 发放集结礼包
// $res = (new LvRenSdk())->getRoleList('103523_stable', '10082');
// $res = (new LvRenSdk())->getTagAndValByRole('10082', '1008200125959'); // 获取角色活动标签
// $res = (new LvRenSdk())->getRoleList('267973_stable', '10083'); // 账户角色数据
// $res = (new LvRenSdk())->getTagAndValByRole('10083', '1008300003478'); // 获取角色活动标签
// $res = (new LvRenSdk())->getRoleList('213910_stable', '10082');
// $res = (new LvRenSdk())->getTagAndValByRole('10082', '1008100200674'); // 获取角色活动标签
//
// dump($res);
// $res = Db::query("UPDATE `new_sdk`.`cy_members` SET `amount` = 4.5 WHERE `id` = 153196");
// dump($res);
// ## 订单号
// dump(makeOrderid());
// 加密
// $password = auth_code('123456', "ENCODE", Env::get('auth_key'));
//
// dump(urlEncode('J3YrYmrn7cOLBjIubTOz5HavJg39G3C40T/voMiuvR2nSIt5LknEs4r+o+MwVWho57cSBzGjOcF/sTB4HjhF8/W9ol0'));
// // 解密
// $password1 = auth_code('msVNNwhwHMAs8wiDo5Y6p07mK/EGEcrq2iUQX0vfiGxQE7jjkqj/B50uKYQxEhnzPpbUB9Kh7C/j3tOl+n8aoRmOfL1+kDBHOmTs8y7WKnzjPUnCDbu85EJBnf+3l2JlkiByW/JkWkjAMCfZf7YK3ZbzuxE0xJmunQwAIFuP0+Hey9+L84Jz0da9XqQiBX49iJwyYJEed+NYSRL6sejjQTgoYLz1UosR3B2Kwvl+yEbDbpisGfYenT803n0kpkOOd5dgmISVI350kxYSQeu1PsvIwxXzBV+oZ+LCYO99sjiatNI66r+M0KKBQ9SM9/owr/FZEu7XdrbAKmevVlTfag==
// ', "DECODE", Env::get('auth_key'));
// dump($password1);
// 获取支付的配置参数
// $public_key = Config::get('ali_pay_config')['configs'][Config::get('ali_pay_config')['default']['zfb']]['public_key'];
// dump($public_key);
// dump(Config::get('ali_pay_config')['sign_type']);
// 游戏订单回调签名生成 - 订单通知表: cy_paycpinfo
// $str = "orderid=WL17683337938759161607&username=298960_stable&gameid=645&roleid=10924&serverid=4&paytype=xty_wx_h5&amount=98&paytime=1768333793&attach=%7B%22gameOrderId%22%3A7594935792166765171%7D&sign=608a8a8d93ed552406f0550f98a05897"; // 订单数据拿过来的时候,这里记得去除sign参数
// $param = $str . "&appkey=d5bb829af0e9eb3b09f93f207c4a5364";
// $md5params = md5($param);
// $params = $str . "&sign=" . urlencode($md5params);
// dump($params);
// $params = [
// "mer_id" => "55282",
// "notify_url" => "http://xxx.xxx.com",
// "amt_type" => "RMB",
// "goods_inf" => "测试商品",
// "order_id" => rand(0,
// 999999999),
// "mer_date" => date("Ymd"),
// "amount" => "1",
// // "user_ip" => "127.0.0.1",
// "user_ip" => "115.196.65.151", // 要真实IP地址
// "open_id" => "o0jap60RiBbxuKoiM1tWm2oyurxU",
// "app_id" => "wx117849d0c0632d22",
// "scancode_type" => "WECHAT",
// "mer_flag" => "KMER",
// ];
// $service = new UmfService("55282");
// $res = $service->miniProgramPayMap($params); // 小程序
// // $res = $service->H5AutoConnectMap($params); // H5直连-范围URL地址
// // $res = $service->H5ConnectMap($params); // H5直连-返回请求参数
// dump($res);
// $payData = [
// 'productname' => '测试',
// 'order_id' => makeOrderid(),
// 'amount' => '1',
// 'open_id' => $param['open_id'],
// ];
// // $result = (new LdysPay())->getWxmpPay($payData);
// // $result = (new LdysPay())->getWxToekn($payData);
// $result = (new LdysPay())->generateWxmpPayUrl();
// dump($result);
// $res = Db::query("UPDATE `new_sdk`.`cy_memberstwo` SET `realname` = '', `idcard` = '' WHERE `id` = 56557");
// dump($res);
// $jule = new Jule();
// $data = [
// 'account' => '{"user_code":"104471097","user_name":"jolo666","game_code":"3143016315883","session_id":"12842658","id":"1573633923000"}',
// 'accountSign' => '13DersLTir22ofrzbxii4+N44gByUIZi6vg/ulP8ru9vid0GOY3sVvgSoAmBkNezKiUWEqei/gPrPERYUccbpM05yh1I4Bs81nunLx1GrlDl6FU3nPRzC4a8mtDbCcU3aZ+lzSXk/8ieymPXdrOMtq6ncmqgVf/jk2A8K151oXQ='
// ];
// $res = $jule->getSpecialParam($data);
// dump($res);
// ## 统计需要分包的相关游戏
// 订单
// $res = Db::query("select p.channel_id,p.gameid,g.nickname,SUM(p.amount) as sum_amount FROM cy_pay as p LEFT JOIN cy_game as g ON g.id=p.gameid where p.create_time BETWEEN 1704038400 AND 1711962953 GROUP BY p.gameid ORDER BY sum_amount desc");
// 登陆
// $res = Db::query("select * FROM nw_subaccount limit 1");
// dump($res);
// // APP 加固
// $rsa = new RsaSign();
// $str = '6f8ffbbc02059d05be0816953102f6cc425599';
// $jiaMiRes = $rsa->openssl_public_encrypt($str);
// $jieMiRes = $rsa->openssl_private_decrypt($jiaMiRes);
//
// // $jiaMiRes = $rsa->openssl_sign($str);
// // $jieMiRes = $rsa->openssl_verify($str, $jiaMiRes);
// dump($str, $jiaMiRes, $jieMiRes);
// dump(json_encode(input()));
// $sdk = new Yueyou();
// $res = $sdk->getSpecialParam(['channel_token' => 'RT_7D535DFD85F94A2FBB01072C58610E68', 'time' => 1711079997], ['param' => '{"app_id":"1011","server_key":"rqejOC0Jep"}']);
// dump($res);
// 发送分包请求
// $redis = Cache::init()->handler(); // 获取redis句柄
// // $redis_value ='{"filename":"mubaoANDROID","channel_id":"5215","apktype":0,"extend":{"channel_version":13,"pinyin":"mubaoANDROID","channel_id":"5215","admin_id":1,"512pngUrl":"https:\/\/cdn.' . QM_DOMAIN_URL . '\/image\/game\/icons\/2023091416266502c3cc46898.png","bundleID":"com.qimeng.mubao","gameChineseName":"\u6bcd\u5305ANDROID"},"target_filename":"6601454dc8b90.apk","finish_notice_url":"http:\/\/admin.7dgames.cn\/upload_notify\/index\/game_id\/10\/channel_id\/5215\/adminid\/1\/apktype\/0.html"}';
// $redis_value = '{"filename":"aaaaav1anzhuo","channel_id":"5215","apktype":0,"extend":{"channel_version":17,"pinyin":"aaaaav1anzhuo","channel_id":"5215","admin_id":1,"512pngUrl":"http:\/\/cdn.7dgame.cn\/","bundleID":"aaa.xxcc","gameChineseName":"aaaaa_v1(\u5b89\u5353)"},"target_filename":"66b46056b1b1d.apk","finish_notice_url":"http:\/\/admin.7dgames.cn\/upload_notify\/index\/game_id\/271\/channel_id\/5215\/adminid\/1\/apktype\/0.html","sign_ver":1}';
// $res = $redis->lpush('aoyou:apk:subpackage:task', $redis_value);
// dump($res);
// ## 分包通知-ws
// http://admin.7dgames.cn/upload_notify/makeExcelComplete?action=payList&adminid=1&file_path=https://static.7dgames.cn/excel_dev/20240806/充值记录管理导出_20240806144943_1.csv&time=1722926977
// $ws = new Websocket();
// $gamename = 'test'.'-'.'9527';
// $str = '{"error_code":0,"data":{"action":"subpackageFinish","data":{"code":0,"gamename":"'.$gamename.'", "message":"分包完成!"}}}';
// $res = $ws->sayToUid('1', $str);
// dump($res);
// $res = Db::query("SELECT * FROM `new_sdk`.`cy_members` where username='18947335139 '");
// dump($res);
// ## 代金卷使用通知
// $res = (new \app\common\logic\YqlHandle())->notifyCoupon('206'); -- 弃用
// $res = (new \app\api\controller\YqlData())->notifyCoupon('206');
// dump($res);
// 176 解密/加密
// $a = strEncrypt("13","Su)sjKsu23G0slow");
// var_dump('# $a: ', $a);
// $a = 'd7afaff8a880a0fe535318299fdf80b5';
// var_dump('# $b: ', strDecrypt($a,"Su)sjKsu23G0slow"));
// $res = RSACryptUtil::encrypt(['xxx' => 'xxx']);
// dump($res);
// $signStr = sprintf('token=%s&userID=%s&key=%s', 'db733736e9613e42f81f69b4309b9dca', '13028121', '0adc300369494b5f9e195024b2bdefee');
// $res = md5($signStr);
// dump($signStr, $res);
// 支付回调 - 微信H5
// $res = '{"charset":"UTF-8","req_data":"{\"order_no\":\"1010317672024080718032424646\",\"pay_scene\":\"H5\",\"order_desc\":\"\u9053\u5177\",\"order_name\":\"\u9053\u5177\",\"pay_time\":\"20240807180351\",\"ch_order_no\":\"4200002304202408074418206630\",\"payer_account\":\"oAVOM6yBC6zrc8MdVXQAMQ9p4gyE\",\"out_trade_no\":\"WL17230250041470115375\",\"total_amount\":10,\"reserved\":\"\",\"ch_out_trade_no\":\"5150147638240807\",\"trade_status\":\"SUCCESS\",\"pay_channel\":\"WX\",\"payer_id\":\"oAVOM6yBC6zrc8MdVXQAMQ9p4gyE\"}","method":"trade.order.notify","app_id":"A17222309452323464","version":"1.0.1","sign_type":"RSA2","timestamp":"20240807180351"}';
// 支付回调 - 支付宝H5
// $res = '{"charset":"UTF-8","req_data":"{\"order_no\":\"1010317672024080718071324962\",\"pay_scene\":\"H5\",\"order_desc\":\"\u9053\u5177\",\"order_name\":\"\u9053\u5177\",\"pay_time\":\"20240807180752\",\"ch_order_no\":\"2024080722001456531440275398\",\"payer_account\":\"ahj***@163.com\",\"out_trade_no\":\"WL17230252337046293807\",\"total_amount\":10,\"reserved\":\"\",\"ch_out_trade_no\":\"705150165776240807\",\"trade_status\":\"SUCCESS\",\"pay_channel\":\"ALI\",\"payer_id\":\"2088022151356531\"}","method":"trade.order.notify","app_id":"A17222309452323464","version":"1.0.1","sign_type":"RSA2","timestamp":"20240807180753"}';
// dump(json_decode($res));
// ## TC-喜钛游 支付
// $pay = new PayService();
// $data = [
// "orderid" => makeOrderid(),
// "productname" => '道具',
// "real_amount" => '0.01',
// "notify_url" => Config::get('xty_pay')['notify']['notify_url'],
// "ip" => request()->ip(),
// ];
// $payInfoRes = $pay->getXtyPayParam($data, 'payWxH5');
// // $payInfoRes = $pay->getXtyPayParam($data, 'payAliH5');
// dump($payInfoRes);
// $randomList = [
// ['pay_scene' => 'wx_h5', 'game_id' => 10, 'version' => 'v3.4.4'],
// ['pay_scene' => 'wx_h5', 'game_id' => 266, 'version' => 'v3.4.4'],
// ['pay_scene' => 'wx_h5', 'game_id' => 256, 'version' => 'v3.4.4'],
// ['pay_scene' => 'wx_h5', 'game_id' => 20, 'version' => 'v3.4.3'],
// ['pay_scene' => 'wx_h5', 'game_id' => 259, 'version' => 'v3.4.3'],
// ];
// $countNum = ['qzl_wx_h5' => 0, 'ldys_wx_h5' => 0, 'ybzf_wxmp_h5' => 0, 'yyyb_wx_h5' => 0, 'xty_wx_h5' => 0, 'qmf_wxmp_h5' => 0];
// for ($i = 0; $i < 100; $i++) {
// // $info =
// // 随机获取$randomList数据总数中的一条
// $data = $randomList[array_rand($randomList)];
// $newPayType = (new PayHandle())->getPayChannel($data['pay_scene'], $data['game_id'], $data['version']);
// $countNum[$newPayType['data']['paytype']] = $countNum[$newPayType['data']['paytype']] + 1;
// echo "
" . $newPayType['data']['paytype'] . ' - ' . $data['game_id'];
// }
// dump($countNum);
}
// shop 测试订单生成
public function wxPay()
{
$money = input('customMoney');
if (!$money) {
return json_encode(['code' => 0, 'msg' => '请输入金额!', 'data' => '']);
}
$title = input('title', '购买商品');
$pay = new PayService();
$notify_url = Config::get('wxpay-h5')['notify_url'];
$ip = $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1';
$payInfoRes = $pay->getWxpayH5Param(makeUniqueid('API'), $money, $title, $ip, $notify_url);
if($payInfoRes['error'] == true){
return json_encode(['data' => '', 'code' => 0, 'msg' => $payInfoRes['msg']]);
}
// $payInfoRes['data']['mweb_url'] = 'http://sdkapi.'.QM_DOMAIN_URL.'/jump?key=' . base64_encode($payInfoRes['data']['mweb_url']);
// $payInfoRes['data']['mweb_url'] = 'http://devsdkapi.youxi9.com/jump?key=' . base64_encode($payInfoRes['data']['mweb_url']);
return json_encode(['data' => $payInfoRes['data'], 'code' => 1, 'msg' => '订单生成成功']);
}
// 会长数据迁移
public function migrate_hz(){
$qy_id = input('qy_id', ''); // 迁移的会长
$js_id = input('js_id', ''); // 接收会长
if(!$qy_id || !$js_id){
return json_encode(["code" => 100, "message" => "缺少迁移或接收会长", "data" => ""]);
}
// 迁移会长
$qy_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id' => $qy_id, 'level' => 1])->find();
$js_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id' => $js_id, 'level' => 1])->find();
// $id_path = $info['id_path'].$info['id'].',';
// ## 数据统计 ##
// 子会长
$qy_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $qy_id, 'level' => 2])->count();
$js_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $js_id, 'level' => 2])->count();
// dump($qy_child_count, $js_child_count);
$qy_child_id_path = $qy_info['id_path'].$qy_info['id'].',';
$js_child_id_path = $js_info['id_path'].$js_info['id'].',';
// dump($qy_child_id_path, $js_child_id_path);
// 推广员
$qy_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$qy_child_id_path.'%'], 'level' => 3])->count();
$js_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$js_child_id_path.'%'], 'level' => 3])->count();
// dump($qy_promoter_count, $js_promoter_count);
$statisticsData = [
// 迁移
'qy' => [
'child_count' => $qy_child_count,
'promoter_count' => $qy_promoter_count,
],
// 接收
'js' => [
'child_count' => $js_child_count,
'promoter_count' => $js_promoter_count,
],
// 汇总
'hz' => [
'child_count' => $qy_child_count+$js_child_count,
'promoter_count' => $qy_promoter_count+$js_promoter_count,
],
// 实际数据(处理后)
'sj' => [
'child_count' => 0,
'promoter_count' => 0,
],
// 程序处理
'cx' => [
'child_count' => 0,
'promoter_count' => 0,
],
];
// dump($statisticsData);
// 子会长
$child_list = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $qy_info['id'], 'level' => 2])->select();
$child_list_ids = array_column($child_list, 'id');
$child_sql = [];
$child_count = 0;
$promoter_count = 0;
$id_path = $js_info['id_path'].$js_info['id'].',';
foreach ($child_list as $v){
$child_count++;
$child_sql[] = [
'id' => $v['id'],
'parent_id' => $js_info['id'],
'id_path' => $id_path,
];
// $v['parent_ids'] = $js_info['id'];
// $v['id_paths'] = $id_path;
// $child_sql[] = $v;
// 推广员
$promoter_list = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => ['in', $child_list_ids], 'level' => 3])->select();
$vp_id_path = $id_path.$v['id'].',';
foreach ($promoter_list as $vp){
$promoter_count++;
$child_sql[] = [
'id' => $vp['id'],
'parent_id' => $v['id'],
'id_path' => $vp_id_path,
];
}
}
// return (json_encode($child_sql));
// 启动事务
// Db::startTrans();
// try {
// $channel = new Channel();
// if (!$res = $channel->saveAll($child_sql)) {
// // 回滚事务
// Db::rollback();
// throw new \Exception('迁移失败!');
// }
// Cache::clear('channel_cache');
//
// // 提交事务
// Db::commit();
//
// } catch (\Exception $e) {
// // 回滚事务
// Db::rollback();
// return json_encode(['code' => 0, 'msg' => '操作失败:' . $e->getMessage()]);
// }
// ## 数据统计
$js_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $js_id, 'level' => 2])->count();
$js_child_id_path = $js_info['id_path'].$js_info['id'].',';
// 推广员
$js_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$js_child_id_path.'%'], 'level' => 3])->count();
$statisticsData['sj'] = [
'child_count' => $js_child_count,
'promoter_count' => $js_promoter_count,
];
$statisticsData['cx'] = [
'count' => count($child_sql),
'child_count' => $child_count,
'promoter_count' => $promoter_count,
];
return json_encode(['code' => 0, 'msg' => '操作成功', 'data' => $statisticsData]);
}
// 商务账号下的会长数据迁移
public function migrate_sw(){
$qy_id = input('qy_id', ''); // 迁移的商务
$js_id = input('js_id', ''); // 接收的商务
if(!$qy_id || !$js_id){
return json_encode(["code" => 100, "message" => "缺少迁移或接收商务", "data" => ""]);
}
// 迁移的商务
$qy_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id' => $qy_id, 'level' => 0, 'parent_id' => 0])->find();
$js_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id' => $js_id, 'level' => 0, 'parent_id' => 0])->find();
$qy_path = ','.$qy_info['id'].',';
$js_path = ','.$js_info['id'].',';
// dump($qy_path,' - ', $js_path);
// TODO: 以下流程只是复制上边的,还未完善。等韩辉后续需要再说。
// 迁移的会长
$qy_ids = [''];
$qy_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $qy_info['id'], 'level' => 1])->find();
$js_info = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $js_info['id'], 'level' => 1])->find();
// $id_path = $info['id_path'].$info['id'].',';
// ## 数据统计 ##
// 子会长
$qy_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $qy_id, 'level' => 2])->count();
$js_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $js_id, 'level' => 2])->count();
// dump($qy_child_count, $js_child_count);
$qy_child_id_path = $qy_info['id_path'].$qy_info['id'].',';
$js_child_id_path = $js_info['id_path'].$js_info['id'].',';
// dump($qy_child_id_path, $js_child_id_path);
// 推广员
$qy_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$qy_child_id_path.'%'], 'level' => 3])->count();
$js_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$js_child_id_path.'%'], 'level' => 3])->count();
// dump($qy_promoter_count, $js_promoter_count);
$statisticsData = [
// 迁移
'qy' => [
'child_count' => $qy_child_count,
'promoter_count' => $qy_promoter_count,
],
// 接收
'js' => [
'child_count' => $js_child_count,
'promoter_count' => $js_promoter_count,
],
// 汇总
'hz' => [
'child_count' => $qy_child_count+$js_child_count,
'promoter_count' => $qy_promoter_count+$js_promoter_count,
],
// 实际数据(处理后)
'sj' => [
'child_count' => 0,
'promoter_count' => 0,
],
// 程序处理
'cx' => [
'child_count' => 0,
'promoter_count' => 0,
],
];
// dump($statisticsData);
// 子会长
$child_list = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $qy_info['id'], 'level' => 2])->select();
$child_list_ids = array_column($child_list, 'id');
$child_sql = [];
$child_count = 0;
$promoter_count = 0;
$id_path = $js_info['id_path'].$js_info['id'].',';
foreach ($child_list as $v){
$child_count++;
$child_sql[] = [
'id' => $v['id'],
'parent_id' => $js_info['id'],
'id_path' => $id_path,
];
// $v['parent_ids'] = $js_info['id'];
// $v['id_paths'] = $id_path;
// $child_sql[] = $v;
// 推广员
$promoter_list = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => ['in', $child_list_ids], 'level' => 3])->select();
$vp_id_path = $id_path.$v['id'].',';
foreach ($promoter_list as $vp){
$promoter_count++;
$child_sql[] = [
'id' => $vp['id'],
'parent_id' => $v['id'],
'id_path' => $vp_id_path,
];
}
}
// return (json_encode($child_sql));
// 启动事务
// Db::startTrans();
// try {
// $channel = new Channel();
// if (!$res = $channel->saveAll($child_sql)) {
// // 回滚事务
// Db::rollback();
// throw new \Exception('迁移失败!');
// }
// Cache::clear('channel_cache');
//
// // 提交事务
// Db::commit();
//
// } catch (\Exception $e) {
// // 回滚事务
// Db::rollback();
// return json_encode(['code' => 0, 'msg' => '操作失败:' . $e->getMessage()]);
// }
// ## 数据统计
$js_child_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['parent_id' => $js_id, 'level' => 2])->count();
$js_child_id_path = $js_info['id_path'].$js_info['id'].',';
// 推广员
$js_promoter_count = Db::name('nw_channel')->field('id,name,parent_id,level,id_path')->where(['id_path' => ['like', '%'.$js_child_id_path.'%'], 'level' => 3])->count();
$statisticsData['sj'] = [
'child_count' => $js_child_count,
'promoter_count' => $js_promoter_count,
];
$statisticsData['cx'] = [
'count' => count($child_sql),
'child_count' => $child_count,
'promoter_count' => $promoter_count,
];
return json_encode(['code' => 0, 'msg' => '操作成功', 'data' => $statisticsData]);
}
// 空方法
public function _empty()
{
return "url error!";
}
// 微信小程序跳转
public function wxmp()
{
$url = input('url');
if ($url) {
header("location: " . $url);
}
}
// 魔力宝贝推广页地址 - 2024.05.17
public function mlbbDownload()
{
$code = input('code', '');
$img_status = true;
if (!$code) {
$img_status = false;
}
$code = base64_decode($code);
$code = str_replace('@qm_mlbb', "", $code);
$url_host = QM_DOMAIN_URL;
$file_url = "https://sdkdown.{$url_host}/game_mlbb/app/{$code}.plist";
$this->assign('img_status', $img_status);
$this->assign('file_url', $file_url);
return $this->fetch();
}
// 批量获取推广标识
public function getMlbbCode()
{
$pix = 'mlbb_';
// $arr = [];
// for ($i = 21; $i <= 100; $i++) {
// $paddedNumber = str_pad($i, 4, '0', STR_PAD_LEFT);
//
// // if (intval($i / 10) = 0) {
// //
// // }
// $code = $pix . $paddedNumber;
// // echo $code . ' = https://t.'.QM_DOMAIN_URL.'/mlbb/' . base64_encode($code . '@qm_mlbb') . "
";
// echo 'https://t.'.QM_DOMAIN_URL.'/mlbb/' . base64_encode($code . '@qm_mlbb') . "
";
// // if (intval($i % 10) === 0) {
// // echo $i . "
";
// // }
//
//
// // $arr[$i] = [
// // 'title' => $code,
// // 'code' => base64_encode($code . '@qm_mlbb'),
// // ];
// }
//
// dump($arr);
$name = input('name', '');
$code = $pix . $name;
// 范例文件:public/mubao/mlbb_1001.plist
return 'https://t.'.QM_DOMAIN_URL.'/mlbb/' . base64_encode($code . '@qm_mlbb');
}
}