req_params($card_no, $amount, $params['order_sn']); $productNo = $this->getproductNo($amount); if($productNo === 0) { return [false, '商品编号错误', false]; } $params['itemId'] = $productNo; $sign = $this->sign($params); $params['sign'] = $sign; $resp = http_request(config::ORDER_URL, $params , 'POST' , false , config::ExtHeaders , $net_errno); if (empty($resp)) { return [false, '系统错误', true]; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if (empty($resp)) { return [false, '系统错误', true]; } elseif($resp['code'] == 1) { return [true, $resp['data']['tradeNo'], false]; } else { return [false , $resp['message'], false]; } } } public function query($refill_info) { $params['orderno'] = $refill_info['order_sn']; $params['customerId'] = config::customerId; $params['timestamp'] = time(); $sign = $this->sign($params); $params['sign'] = $sign; $resp = http_request(config::QUERY_URL, $params , 'POST' , false , config::ExtHeaders); if (empty($resp)) { return [false, '系统错误']; } else { Log::record($resp, Log::DEBUG); $resp = $this->xmlToArray($resp); if (empty($resp)) { return [false, '系统错误', true]; } elseif ($resp['code'] == 1) { $data = $resp['data']; if ($data['status'] == 'success') { $order_state = ORDER_STATE_SUCCESS; } elseif ($data['status'] == 'failed') { $order_state = ORDER_STATE_CANCEL; } elseif ($data['status'] == 'wait') { $order_state = ORDER_STATE_SEND; } else { return [false, $resp['msg']]; } return [true, $order_state]; } else { return [false, $resp['message']]; } } } private function sign($params) { $content = ''; ksort($params); foreach ($params as $key => $val){ if (false === $this->check_empty($val) && "@" != substr($val, 0, 1)) { $content .= "{$key}={$val}&"; } } $content .= "key=".config::API_KEY; return strtoupper(md5($content)); } private function getproductNo(int $amount) { switch ($amount){ case 20: $productNo = 'lt20'; break; case 30: $productNo = 'lt30'; break; case 50: $productNo = 'lt50'; break; case 100: $productNo = 'lt100'; break; default: $productNo = 0; } return $productNo; } /** * 作用:将xml转为array */ public function xmlToArray($xml) { //将XML转为array $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $array_data; } }