req_params($card_no,$amount,$order_sn); $sign = $this->sign($params); $params['verifystring'] = $sign; $resp = http_request(config::PAY_PHONE_URL,$params,'GET'); if($resp === false) { return [false,'系统错误',true]; } else { Log::record($resp,Log::DEBUG); $resp = $this->xmlToArray($resp); if($resp['resultno'] == 0000) { return [true,$resp['orderno'], false]; } else { return [false,$resp['resultmessage'], false]; } } } public function query($refill_info) { $params['orderid'] = $refill_info['order_sn']; $params['agentid'] = config::AGENT_ID; $params['returntype'] = 2; $key = config::MerchantKey; $content = "agentid={$params['agentid']}&returntype={$params['returntype']}&orderid={$params['orderid']}&merchantKey={$key}"; $params['verifystring'] = md5($content); $resp = http_request(config::QUERY_URL,$params); if($resp === false) { return [false,'系统错误']; } else { Log::record($resp,Log::DEBUG); $resp = $this->xmlToArray($resp); $order_state = -1; if ($resp['resultno'] == 0014) { $order_state = ORDER_STATE_SUCCESS; } elseif ($resp['resultno'] == 0015) { $order_state = ORDER_STATE_CANCEL; } elseif ($resp['resultno'] == 0016){ $order_state = ORDER_STATE_SEND; } if ($order_state == -1) { return [false, $resp['resultmessage']]; } return [true, $order_state]; } } private function sign($params) { $key = config::MerchantKey; $content = "chargenumbertype={$params['chargenumbertype ']}&agentid={$params['agentid']}&returntype={$params['returntype']}&orderid={$params['orderid']}"; $content .= "chargenumber={$params['chargenumber']}&amountmoney={$params['amountmoney']}&ispname={$params['ispname']}&source={$params['source']}&merchantKey={$key}"; return md5($content); } private function xmlToArray($xml) { //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring), true); return $val; } }