getMerchantInfo(['mchid' => $mchid]); if(empty($mchinfo)) { throw new LzException(self::text_content(-5,0)); } else { $this->mAdminid = intval($mchinfo['admin_id']); } $mchinfo = Model('merchant')->getMerchantInfo(['mchid' => $mchid]); $mod_member = Model('member'); $minfo = $mod_member->getMemberInfo(['member_id' => $this->mAdminid], '*', true); $this->merchant_available = ncPriceFormat($minfo['available_predeposit'] - $mchinfo['credit_bonus']); $this->member_available = $minfo['available_predeposit']; if ($mchinfo['merchant_state'] != 1) { throw new LzException(self::text_content(-7,$this->merchant_available)); } $ips = unserialize($mchinfo['ip_white_list']); if(!empty($ips)) { $addr = $_SERVER['REMOTE_ADDR']; Log::record("request ip:{$addr}",Log::DEBUG); if(!in_array($addr,$ips)) { throw new LzException(self::text_content(-12,$this->merchant_available)); } } $this->mUseKey = intval($mchinfo['use_key']); if($this->mUseKey && !$this->verify_md5($mchinfo['secure_key'])) { throw new LzException(self::text_content(-4,$this->merchant_available)); } $this->mMchid = intval($mchid); } public function mchid() : int { return $this->mMchid; } public function adminid() : int { return $this->mAdminid; } private function verify_md5($key) { $input = $_GET; $sign = $input['sgn']; $body = $this->sign_body($input); if($this->mUseKey) { $body .= $key; } return ($sign == strtoupper(md5($body))); } private function sign_body($params) { $op = $params['op']; if($op == 'add_mob') { $content = $params['usr'] . $params['ord'] . $params['mob'] . $params['amt'] . $params['tim']; } elseif($op == 'balance') { $content = $params['usr']; } elseif($op == 'query') { $content = $params['usr'] . $params['ord']; } else { $content = 'error'; } return $content; } public static function msg($code) { static $msgs = [0 => '订单提交成功', 2 => '运营商充值账户余额不足', 4 => '账户余额不足', 6 => '暂不支持此商品', 7 => '连接该运营商设备失败', 8 => '在规定时间内不得重复提交同一号码', 10 => '该帐号不能在此计算机缴费', 11 => '流水号重复', 30 => '面值不符', 41 => '该地区维护', 42 => '运营商设备忙', 43 => '暂不支持该面额的缴费', 44 => '无该地区缴费权限', -2 => '命令已发送,请查看交易流水是否有缴费成功(这种情况是服务器在排队等待处理,间隔10-20分钟后查单核实)', -3 => '数据添加失败', -4 => '签名错误', -5 => '没有此代理商', -6 => '提交失败', -7 => '无此接口权限', -8 => '提交日期不是当天日期', -9 => '参数不对', -11 => '手机号码位数不符', -12 => '绑定IP不符', 1001 => '销售数量请大于0', 1002 => '该商品库存维护', 1003 => '该供货商品库存维护']; if(array_key_exists($code,$msgs)) { return $msgs[$code]; } else { return ''; } } public static function text_content($code,$available) { $msg = self::msg($code); $available = ncPriceFormat($available); $content = "0|{$msg}|{$available}"; return $content; } public static function outsuccess($available) { echo self::text_content(0,$available); return true; } public static function outerr($code,$available) { echo self::text_content($code,$available); return true; } }