phone_type($phone); $params['data'] = [$data]; return $params; } public function add($card_no, $card_type, $amount, $params) { $params = $this->req_params($card_no, $amount, $params['order_sn']); $params['router'] = 'submit.recharge.order'; $time = time(); $nonce = rand(100000,999999); $sign = $this->sign($params , $time , $nonce); $header = [ 'Content-Type: application/json;charset=utf-8', "timestamp: {$time}", "nonce: {$nonce}", "ExpiredTime: 10", "Authorization: {$sign}", ]; $params = json_encode($params); $resp = http_post_data(config::ORDER_URL, $params , $header); 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['code'] == 10000) { if ($resp['data']['orders_success'][0]['state'] == 'success') { return [true, $resp['orders_success'][0]['sys_sn'], false]; } else { return [false, $resp['orders_failure'][0]['message'], false]; } } else { return [false, $resp['message'], false]; } } } public function query($refill_info) { $params['data'] = [$refill_info['order_sn']]; $params['app_id'] = config::APPID; $params['request_id'] = $refill_info['order_sn']; $params['version'] = 'v1.0'; $params['router'] = 'submit.member.orders_info'; $time = time(); $nonce = rand(100000,999999); $sign = $this->sign($params , $time , $nonce); $header = [ 'Content-Type: application/json;charset=utf-8', "timestamp: {$time}", "nonce: {$nonce}", "ExpiredTime: 10", "Authorization: {$sign}", ]; $params = json_encode($params); $resp = http_post_data(config::QUERY_URL, $params , $header); if (empty($resp)) { return [false, '系统错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp ,true); if (empty($resp)) { return [false, '系统错误']; } elseif($resp['code'] == 10000) { $data = $resp['data']; if ($data['orders'][0]['state'] == '支付成功') { $order_state = ORDER_STATE_SUCCESS; $save['official_sn'] = $data['orders'][0]['platformOrderId']; Model('refill_order')->edit($refill_info['order_id'], $save); } elseif ($data['orders'][0]['state'] == '支付失败') { $order_state = ORDER_STATE_CANCEL; } elseif (in_array($data['orders'][0]['state'] , ['待分配' , '待获取' , '处理中'])) { $order_state = ORDER_STATE_SEND; } else { return [false, $resp['message']]; } return [true, $order_state]; } else { return [false , $resp['message']]; } } } private function sign($params , $time , $nonce) { $key = config::APP_KEY; $content = $params['app_id'] . '&' . $key . '&' . $params['router'] . '&' . $time . '&' . $nonce; return md5($content); } private function phone_type($phone) { $card_type = mtopcard\card_type($phone); if ($card_type == mtopcard\ChinaMobileCard) { return 1; } elseif ($card_type == mtopcard\ChinaUnicomCard) { return 2; } elseif ($card_type == mtopcard\ChinaTelecomCard) { return 3; } return 0; } }