mStoreID; $pcode = $other['product_code']; $thrid_refill = Model('thrid_refill'); $product = $thrid_refill->getProviderProduct($store_id, $goods_id, $pcode); if (empty($product)) { Log::record("cannot find provider's produce where name={$this->mName}, goods_id = {$goods_id} pcode={$pcode}", Log::ERR); return [0, 0]; } else { return [$goods_id, ncPriceFormat($product['channel_amount'])]; } } private function getProduct($product_code) { $thrid_refill = Model('thrid_refill'); return $thrid_refill->getProduct(['system_code' => $product_code,'opened' => 1]); } private function req_params(int $phone, string $order_sn) { $params['partner_no'] = config::PARTNER_NO; $params['request_no'] = $order_sn; $params['service_code'] = config::service_code; $params['contract_id'] = config::contract_id; $params['activity_id'] = config::activity_id; $params['order_type'] = 1; $params['phone_id'] = $phone; $params['plat_offer_id'] = '104365'; $params['effect_type'] = 0; return $params; } public function add($card_no, $card_type, $amount, $input, &$net_errno = 0) { $order_sn = $input['order_sn']; $code = $this->req_params($card_no, $order_sn); $params['partner_no'] = config::PARTNER_NO; $params['code'] = config::encrypt(json_encode($code)); $params = json_encode($params); $resp = http_post_data(config::ORDER_URL, $params , 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['result_code'] == '00000') { return [true, $resp['request_no'], false]; } else { return [false, $resp['result_code'], false]; } } } public function query($refill_info) { $params['partner_no'] = config::PARTNER_NO; $params['orderNo'] = $refill_info['ch_trade_no']; $params['timestamp'] = time(); $params['sign'] = $this->sign($params); $resp = http_request(config::QUERY_URL, $params, 'GET', false, []); if (empty($resp)) { return [false, '网络错误']; } else { Log::record($resp, Log::DEBUG); $resp = json_decode($resp, true); if (empty($resp)) { return [false, '网络错误']; } elseif($resp['resultCode'] == 1000) { $status = intval($resp['order']['orderStatus']); if ($status === 4) { $order_state = ORDER_STATE_SUCCESS; } elseif (in_array($status, [2,5])) { $order_state = ORDER_STATE_CANCEL; } elseif (in_array($status, [0,1,3])) { $order_state = ORDER_STATE_SEND; } else { return [false, $resp['resultReason']]; } return [true, $order_state]; } else { return [false, $resp['resultReason']]; } } } public function balance() { $params['appkey'] = config::APP_KEY; $params['timestamp'] = time(); $params['sign'] = $this->sign($params); $resp = http_request(config::BALANCE_URL, $params, 'GET', false, [], $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'] == 1000) { return [true, $resp['balance']]; } else { return [false, $resp['resultReason']]; } } } private function sign($params) { ksort($params); $content = ''; $secret = config::APP_SECRET; foreach ($params as $key => $value) { if($this->check_empty($value) === false) { $content .= "{$key}{$value}"; } } $content .= $secret; return md5(urlencode($content)); } }