req_params($card_no, $amount, $order_sn); $sign = $this->sign($params); $params['sign'] = $sign; $resp = http_request(config::PAY_PHONE_URL, $params); if ($resp === false) { return [false, '网络错误', true]; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if ($resp['Code'] === '0000') { return [true, $resp['order_no'], false]; } else { return [false, $resp['msg'], false]; } } } public function query($refill_info) { $params['OrderID'] = $refill_info['order_sn']; $params['cpid'] = config::CP_ID; $content = $params['cpid'] . $params['OrderID'] . config::KEY; $params['sign'] = md5($content); $resp = http_request(config::QUERY_URL, $params); if ($resp === false) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if ($resp['state'] === '8888') { $order_state = ORDER_STATE_SUCCESS; $updata['official_sn'] = $resp['operatorid']; Model('refill_order')->edit($refill_info['order_id'], $updata); } elseif ($resp['state'] === '8030') { $order_state = ORDER_STATE_CANCEL; } elseif ($resp['state'] === '0000') { $order_state = ORDER_STATE_SEND; } else { $order_state = -1; } if ($order_state == -1) { return [false, $resp['msg']]; } return [true, $order_state]; } } private function sign($params) { $cpid = config::CP_ID; $content = "cpid={$cpid}&gamegoodid={$params['gamegoodid']}&createtime={$params['createtime']}&account={$params['account']}&orderid={$params['orderid']}&buynum={$params['buynum']}"; $content .= config::KEY; return md5($content); } public 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; } }