req_params($card_no, $amount, $card_type, $order_sn); $header = $this->createHeader(); $resp = http_request(config::ORDER_URL, $params, 'POST', false, $header, $net_errno); if (empty($resp)) { return [false, '网络错误', true]; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误', true]; } elseif ($resp['status'] === '10000') { return [true, $resp['reqNo'], false]; } else { return [false, $resp['message'], true]; } } } public function query($refill_info) { $header = $this->createHeader(); $header[] = 'X-Userno: true'; $query_url = config::QUERY_URL . "/{$refill_info['order_sn']}"; $resp = http_request($query_url, [], 'GET', false, $header); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } $status = $resp['status']; if ($status === '20000') { $updata['official_sn'] = $resp['evidence']; Model('refill_order')->edit($refill_info['order_id'], $updata); $order_state = ORDER_STATE_SUCCESS; } elseif ($status === '50100') { $order_state = ORDER_STATE_CANCEL; } elseif ($status === '10001') { $order_state = ORDER_STATE_SEND; } elseif ($status === '50101' && (time() - $refill_info['commit_time'] >= 600)) { $order_state = ORDER_STATE_NOEXIST; } else { return [false, $resp['message']]; } return [true, $order_state]; } } public function balance() { $header = $this->createHeader(); $resp = http_request(config::BALANCE_URL, [], 'GET', false, $header); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } elseif ($resp['status'] === '10000') { return [true, $resp['balance']]; } else { return [false, $resp['message']]; } } } private function createHeader(): array { $sign_fun = function ($date) { $content = config::USER_NAME . config::KEY . $date; return md5($content); }; $nonce_fun = function ($date) { $content = config::USER_NAME . ':' . $date; return base64_encode($content); }; $date = date("YmdHis"); $sign = $sign_fun($date); $nonce = $nonce_fun($date); return [ 'Content-Type: application/x-www-form-urlencoded', 'Authorization: sign="'. $sign .'",nonce="' . $nonce .'"' ]; } }