req_params($card_no, $amount, $card_type, $order_sn); $params['sign'] = $this->sign($params); $resp = http_request(config::API_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]; } elseif ($resp['resultCode'] === '0') { return [true, $resp['data']['orderNo'], false]; } elseif (in_array($resp['resultCode'], config::ERRCODES, true)) { return [false, $resp['resultMsg'], false]; } elseif (in_array($resp['resultCode'], ['12', '13', '14', '15', '999'], true)) { $net_errno = "HTTP-{$resp['resultCode']}"; return [false, $resp['resultMsg'], true]; } else { $net_errno = "HTTP-998"; return [false, $resp['resultMsg'], true]; } } } public function query($refill_info) { $params_getter = function ($order_sn) { $params = []; $params['action'] = 'queryOrder'; $params['requestTime'] = date("Y-m-d H:i:s"); $params['merAccount'] = config::ACCOUNT; $params['merOrderNo'] = $order_sn; return $params; }; $params = $params_getter($refill_info['order_sn']); $params['sign'] = $this->sign($params); $resp = http_request(config::API_URL, $params, 'POST', false, config::ExtHeaders, $net_errno); if (empty($resp)) { return [false, '系统错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '系统错误']; } elseif ($resp['resultCode'] === '0') { if ((time() - $refill_info['commit_time'] < 60)) { return [false, '下单一分钟后查询']; } $status = $resp['data']['orderState']; if ($status === 24) { $order_state = ORDER_STATE_SUCCESS; } elseif (in_array($status, [23, -1], true)) { $order_state = ORDER_STATE_CANCEL; } elseif (in_array($status, [0, 20], true)) { $order_state = ORDER_STATE_SEND; } else { return [false, $status]; } return [true, $order_state]; } elseif ($resp['resultCode'] === '12' && (time() - $refill_info['commit_time'] > 600)) { return [true, ORDER_STATE_NOEXIST]; } else { return [false, $resp['resultMsg']]; } } } public function balance() { $params_getter = function () { $params = []; $params['action'] = 'queryBalance'; $params['requestTime'] = date("Y-m-d H:i:s"); $params['merAccount'] = config::ACCOUNT; return $params; }; $params = $params_getter(); $params['sign'] = $this->sign($params); $resp = http_request(config::API_URL, $params, 'POST', false, config::ExtHeaders, $net_errno); if (empty($resp)) { return [false, '系统错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '系统错误']; } elseif ($resp['resultCode'] === '0') { return [true, $resp['data']['balance'] / 1000]; } else { return [false, $resp['resultMsg']]; } } } private function sign($params) { ksort($params); $content = ''; foreach ($params as $key => $value) { $content .= "{$key}={$value}&"; } $content .= "key=" . config::KEY; return md5($content); } }