req_params($card_no, $card_type, $amount, $order_sn); if(empty($params['code'])) { Log::record("Xiao Chuang provider code empty err,amount:{$amount}", Log::DEBUG); return [false, 'code有误', false]; } if(empty($params['product'])) { Log::record("Xiao Chuang provider product empty err,amount:{$amount}", Log::DEBUG); return [false, '产品编码有误', false]; } $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 = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误', true]; } $error = intval($resp['error']); $code = intval($resp['code']); if ($error === 0 && $code === 0) { return [true, $resp['p_order_sn'], false]; } else { return [false, $resp['msg'], false]; } } } public function query($refill_info) { $params['appid'] = config::APP_ID; $params['timestamp'] = time(); $params['order_sn'] = $refill_info['order_sn']; $params['sign'] = $this->sign($params); $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } else { $error = intval($resp['error']); $code = intval($resp['code']); if ($error === 0 && $code === 0) { $status = $resp['order_status']; if ($status === 3) { $order_state = ORDER_STATE_SUCCESS; } elseif (in_array($status, [4,5])) { $order_state = ORDER_STATE_CANCEL; } elseif (in_array($status, [1,2])) { $order_state = ORDER_STATE_SEND; } else { return [false, $resp['fail_msg']]; } return [true, $order_state]; } else { return [false, $resp['msg']]; } } } } private function sign($params) { ksort($params); $body = ""; $i = 0; foreach ($params as $k => $v) { if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) { if ($i == 0) { $body .= "{$k}" . "=" . urldecode($v); } else { $body .= "&" . "{$k}" . "=" . urldecode($v); } $i++; } } $body .= "&key=" . config::KEY; return strtoupper(md5($body)); } }