sign($params); $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } else { $error = intval($resp['error']); $code = intval($resp['code']); if ($error === 0 && $code === 0) { $status = $resp['order_status']; if ($status === 3) { $order_state = ORDER_STATE_SUCCESS; } elseif (in_array($status, [4,5])) { $order_state = ORDER_STATE_CANCEL; } elseif (in_array($status, [1,2])) { $order_state = ORDER_STATE_SEND; } else { return [false, $resp['fail_msg']]; } return [true, $order_state]; } else { return [false, $resp['msg']]; } } } } public function balance() { $params['appid'] = config::APP_ID; $params['timestamp'] = time(); $params['sign'] = $this->sign($params); $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } else { $error = intval($resp['error']); $code = intval($resp['code']); if ($error === 0 && $code === 0) { return [true, $resp['balance']]; } else { return [false, $resp['msg']]; } } } } private function sign($params) { ksort($params); $body = ""; $i = 0; foreach ($params as $k => $v) { if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) { if ($i == 0) { $body .= "{$k}" . "=" . urldecode($v); } else { $body .= "&" . "{$k}" . "=" . urldecode($v); } $i++; } } $body .= "&key=" . config::KEY; return strtoupper(md5($body)); } }