req_params($card_no, $card_type, $amount, $order_sn); $sign = $this->sign($params); $params['sign'] = $sign; $resp = https_request(config::ORDER_URL, $params, 'POST', false, [], $net_errno); if (empty($resp)) { return [false, '网络错误', true]; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if (empty($resp)) { return [false, '网络错误', true]; } $resultno = $resp['resultno']; if ($resultno === '0000') { return [true, $resp['serialid'], false]; } else { return [false, $resultno, false]; } } } public function query($refill_info) { $params['dealerid'] = config::USER_ID; $params['orderid'] = $refill_info['order_sn']; $content = "dealerid={$params['dealerid']}&orderid={$params['orderid']}&dealerkey=".config::KEY; $params['sign'] = md5($content); $resp = https_request(config::QUERY_URL, $params, 'POST'); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if (empty($resp)) { return [false, '网络错误']; } $resultno = intval($resp['resultno']); if (in_array($resultno, [2,3])) { $order_state = ORDER_STATE_SUCCESS; $updata['official_sn'] = $resp['spsno']; Model('refill_order')->edit($refill_info['order_id'], $updata); } elseif ($resultno === 4) { $order_state = ORDER_STATE_CANCEL; } elseif ($resultno === 1) { $order_state = ORDER_STATE_SEND; } else { return [false, $resultno]; } return [true, $order_state]; } } public function balance() { return [false, '暂无余额接口']; } private function sign($params) { $userid = config::USER_ID; $key = config::KEY; $content = "ispid={$params['ispid']}&amount={$params['amount']}&dealerid={$userid}&orderid={$params['orderid']}&photonum={$params['photonum']}&"; $content .= "ordertime={$params['ordertime']}&mark=&dealerkey={$key}"; return md5($content); } public function xmlToArray($xml) { $val = refill\util::xmlToArray($xml); $result = []; $data = $val['items']['item']; foreach ($data as $attr) { $key = $attr['@attributes']['name']; $value = $attr['@attributes']['value']; $result[$key] = $value; } return $result; } }