upStatus(); } # 提交卡密 public function addCard() { $csign = md5('shouka5devcn168shemic168'); $sign = input('sign'); $sid = input('sid'); $cnum = input('cnum'); $cpwd = input('cpwd'); $value = input('value'); if ($csign == $sign && $sid && $cnum && $cpwd && $value) { $cardService = CardService::instance(); $cnum = explode(',', $cnum); $cpwd = explode(',', $cpwd); $value = explode(',', $value); foreach ($cnum as $k => $v) { $cardService->up(false, $v, $cpwd[$k], $value[$k], -1, 1, $sid); } echo 'ok'; } else { echo 'error'; } die; } # 测试 获取加密信息 上线注释 public function getSign() { // var_dump(input());die; $request = $this->getSignature(); // $this->yes($request); // ksort($this->input); if(isset($this->input['controller'])){ unset($this->input['controller']); } if(isset($this->input['function'])){ unset($this->input['function']); } if ($this->proid && !str_contains($this->product, '_cash')) { unset($this->input['cash']); } // var_dump($request);die; $signature_string = ''; $empty =true; $suffix = ''; // $this->input['token'] = AuthService::token($this->key); ksort($this->input); foreach ($this->input as $k => $v) { if (strstr($v, 'http') && !strstr($v, '%')) { $v = urlencode($v); } // if() if (!$empty) { $signature_string .= $k . '=' . $v . '&'; } elseif (strlen($v) && $v != 'empty') { $signature_string .= $k . '=' . $v . '&'; } } if ($suffix != '&') { $signature_string = substr($signature_string, 0, -1) . $suffix; } // $string = http_build_query($request); $request['string'] = $signature_string; $this->yes($request); } # 把当前order表里的卡密倒出来 public function dao() { //{"uid":"1000113200033148512","itemId":"DC500","cardNo":"2110640046764755","cardPwd":"11479097403897704242","userId":"147","serialno":"Q202106285276756004600827","dtCreate":"20210628115927","sign":"762e4a8c5ceaa6e2285edeffab316395"} $data = OrderService::instance()->db()->whereRaw('card_id > 0')->order('id asc')->select(); $card = \app\channel\service\CardService::instance(); if ($data) { foreach ($data as $k => $v) { $request = json_decode($v['request'], true); if ($request && isset($request['cardNo']) && isset($request['cardPwd'])) { $card_info = $card->getOne($request['cardNo'], $request['cardPwd']); $msg = json_decode($v['channel_callback_msg'], true); $msg = isset($msg['msg']) ? $msg['msg'] : 'error'; if ($v['status'] == 2) { $use = 5; $info = '充值成功'; } else { $use = 7; $info = '疑似:卡密充值失败'; } if (!$card_info) { $id = $card->up($request['cardNo'], $request['cardPwd'], $v['cash'], -1, $use); } else { $id = $card_info['id']; } if ($id > 0) { OrderService::instance()->db()->where(array('id' => $v['id']))->update(array('card_id' => $id)); $order['card_id'] = $id; $order['mid'] = $v['mid']; $order['order_id'] = $v['order_id']; $order['account'] = $v['account']; $order['cash'] = $v['cash']; $card->log($order, $use, $info, $msg); } } } } } # 测试,直接提交 public function submit() { $this->input(); $this->input['order'] = $this->createOrderId(); $request = \app\gateway\service\AuthService::get($this->input, $this->key); $string = http_build_query($request); $request['string'] = $string; $host = $_SERVER['SERVER_NAME']; $host = 'http://'.$host.'/gateway/api.handle/submit?' . $string; echo $host;die; file_get_contents($host); echo '已提交';die; } # 测试,命令行提交 public function command() { if (isset($_SERVER["argv"][2]) && $_SERVER["argv"][2]) { $order = $_SERVER["argv"][2]; } else { $order = false; } if (!$order) { exit('error'); } $param = array(); # 1是mid,2是产品key, 3是卡号,4是金额,5是短信代充充值卡卡号,6是密码 $config = explode('_', $order); if ($config[2] == 'dhcz') { $param['mobile'] = $config[3]; } else { $param['card'] = $config[3]; } $param['cash'] = $config[4]; if (isset($config[5])) { $param['cnum'] = $config[5]; } if (isset($config[6])) { $param['cpwd'] = $config[6]; } $param['order'] = $this->createOrderId(); $result = \app\channel\service\ChannelService::instance()->use($config[1], $config[2], $param, true); $this->yes($result); } protected function createOrderId() { if (function_exists('session_create_id')) { return strtoupper(session_create_id()); } else { $charid = strtoupper(md5(uniqid(mt_rand(), true))); return substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4) . substr($charid, 20, 12); } } # 测试的商家回调接口 public function call() { $log['type'] = 'merchant_notify'; $log['request'] = input(); $this->log($log); echo 'success';die; echo 'fail';die; } # 测试给商户发通知 public function send() { $msg = '{"data":"{\"order_no\":\"1783a02c264bcc01af35d3885a5806a80b4982f5\",\"account_number\":\"1000111100021483339\",\"amount\":200,\"official_serial_number\":\"empty\",\"supplier_store\":\"empty\",\"sign\":\"2c76d1c2e1cda0053ece706a4d247811\",\"serial_number\":194541670597918720,\"merchant_id\":11505,\"notify_url\":\"http:\\\/\\\/api.qizhixiong.com\\\/gateway\\\/api.notify\\\/call?s_order=1783a02c264bcc01af35d3885a5806a80b4982f5&s_type=2\",\"status\":4}","cash":200,"status":3,"order_id":"1783a02c264bcc01af35d3885a5806a80b4982f5","notify_num":0}'; $msg = json_decode($msg, true); $merchant = MerchantService::instance()->getInfo(1); MerchantService::instance()->notify(1, $merchant, $msg); print_r($msg);die; } # 同步order_id里的pid public function getPidByOrderId() { MerchantLogService::instance()->getPidByOrderId(); echo 'success';die; } # 测试回调 public function testCall() { $cid = input('cid', 10025); $request = '{"cpid":"83027","order_no":"21032915140683027554733742","mobile":"1000111100021483339512","amount":"200","status":"failed","sz_order_no":"","ret_para":"Q202103290204622510221821","sign":"4bd8330937797b074b834e8cd43e919c"}'; $request = json_decode($request, true); $channelService = ChannelService::instance(); $channelService->call('notify', $cid, $request); } # 测试查找上游余额 public function testAccount() { $cid = input('cid', 10040); $day = input('day'); $channelService = ChannelService::instance(); $account_data = $channelService->call('account', $cid, $day); print_r($account_data);die; } public function order_test() { $order = input('order_id'); $orderService = OrderService::instance(); $data = $orderService->get($order, ''); $result['cash'] = $data['cash']; $result['order_id'] = $data['order_id']; $result['merchant_order_id'] = $data['merchant_order_id']; if ($data['status'] < 0) { $data['status'] = 1; } $result['status'] = $data['status']; if (!$data['channel_callback_msg']) { $data['channel_callback_msg'] = '{}'; } $request = json_decode($data['channel_callback_msg'], true); $number = ''; if (isset($request['s_number']) && $request['s_number']) { $number = $request['s_number']; } $order_name = sysconf('order_name'); if ($number && $order_name) { $result[$order_name] = $number; } elseif ($number) { $result['s_number'] = $number; } $this->yes($result); } # 计算当前订单表中的实际充值金额 public function act() { OrderService::instance()->actual(); } # 计算当前订单表中的实际扣费 public function kou() { $day = input('day'); \app\merchant\service\OrderService::instance()->kou($day); } # 计算历史订单表中的实际扣费 public function kou_history() { $day = input('day'); \app\merchant\service\OrderHistoryService::instance()->kou($day); } # 删除重复数据 public function delcf() { $day = input('day'); \app\merchant\service\OrderHistoryService::instance()->delcf($day); } # 校正商户的余额 public function init() { MerchantService::instance()->init(date('Y-m-d')); } }