goods(); $sorter = function (array $items) { $ret = []; foreach ($items as $key => $val) { sort($val); $ret[$key] = $val; } return $ret; }; $result = $sorter($result); return self::outsuccess($result); } private function check_params($params) { if(empty($params['mob'])) { return -9; } if(empty($params['amt'])) { return -9; } $card_no = $params['mob']; if(!preg_match('/^1\d{10}$/',$card_no,$matches)) { return -11; } if(empty($params['notifyurl'])) { return -9; } if(empty($params['ord'])) { return -9; } if(empty($params['tim'])) { return -9; } $tim = strtotime($params['tim']); if($tim === false) { return -9; } $cur = time(); $start = strtotime(date('Y-m-d',$cur - 1800)); if($tim < $start || $tim > $cur + 1800) { return -9; } return true; } public function add_mobOp() { $code = $this->check_params($_GET); if($code !== true) { return self::outerr($code,$this->merchant_available); } $amount = intval($_GET['amt']); $card_no = $_GET['mob']; $notify_url = $_GET['notifyurl']; $mch_order = $_GET['ord']; //对方的order编号 $quality = $_GET['quality'] ?? 0; //此处判断是对的 if($amount > $this->member_available) { return self::outerr(4,$this->merchant_available); } if(!$this->check_mchorder($this->mchid(),$mch_order)) { return self::outerr(11,$this->merchant_available); } if(!$this->can_refill($card_no)) { return self::outerr(10,$this->merchant_available); } $params = [ 'mchid' => $this->mchid(), 'buyer_id' => $this->adminid(), 'amount' => $amount, 'card_no' => $card_no, 'mch_order' => $mch_order, 'notify_url' => $notify_url, 'org_quality' => $quality ]; $ret = refill\util::push_add($params); if($ret) { return self::outsuccess($this->merchant_available); } else { return self::outerr(-6,$this->merchant_available); } } private function can_refill($cardno) { $card_info = refill\util::read_card($cardno); if(empty($card_info)) return false; return intval($card_info['black_card']) === 0; } private function check_mchorder($mchid,$mch_order) { if(empty($mch_order)) { return false; } else { $refill_order = Model('refill_order'); $ret = $refill_order->getOrderInfo(['mchid' => $mchid,'mch_order' => $mch_order]); return empty($ret); } } public function balanceOp() { $uid = $this->adminid(); $minfo = new member_info($uid); $available = $minfo->available_predeposit(); $content = "0|".ncPriceFormat($available)."|0.00"; echo $content; return true; } public function queryOp() { $mchid = $this->mchid(); $order_sn = $_GET['ord']; //用户方的订单号,对应数据库中的mch_order if(empty($order_sn)) { return self::outerr(-9,$this->merchant_available); } $mod_refill = Model('refill_order'); $refill_info = $mod_refill->getOrderInfo(['mch_order' => $order_sn,'mchid' => $mchid,'inner_status' => 0]); if(empty($refill_info)) { $state = 3; $msg = "{$order_sn}-无此订单"; $remark = ""; $content = "|{$state}|{$msg}|{$remark}"; echo $content; return true; } $vr_order = Model('vr_order'); $order_info = $vr_order->getOrderInfo(['order_sn' => $refill_info['order_sn']]); $order_state = $order_info['order_state']; if($order_state == ORDER_STATE_SEND || $order_state == ORDER_STATE_PAY || $order_state == ORDER_STATE_NEW) { QueueClient::push("QueryRefillState",['order_id' => $refill_info['order_id']]); $state = 0; $msg = "{$order_sn}-充值中"; $remark = ""; } elseif($order_state == ORDER_STATE_CANCEL) { $state = 2; $msg = "{$order_sn}-充值失败"; $remark = ""; } else { $state = 1; $msg = "{$order_sn}-充值成功"; $remark = "{$refill_info['official_sn']}"; } $content = "|{$state}|{$msg}|{$remark}"; echo $content; return true; } private function format($order_info,$refill_info) { $result = []; $result['mchid'] = $refill_info['mchid']; $result['trade_no'] = $refill_info['order_sn']; $result['order_sn'] = $refill_info['mch_order']; $result['card_no'] = $refill_info['card_no']; $result['card_type'] = $refill_info['card_type']; $result['refill_amount'] = $refill_info['refill_amount']; $result['order_amount'] = $refill_info['mch_amount']; $result['order_time'] = $refill_info['order_time']; $result['success_time'] = $refill_info['notify_time']; $result['order_state'] = $order_info['order_state']; return $result; } }