获取订单接口示例
public function importEbayOrder(){ set_time_limit(0); if(empty( $this->_ShopApiEbay->token )){ self::fail(self::CODE_FAILURE, 'shop:' . Shop::findOne($this->_ShopApiEbay->id)->name . ' empty token'); }else { $ps = 100; $cp = 0; $total_entries = 1; $mod_time_from = date('c', strtotime('-24 hours')); $mod_time_to = date('c', time()); $header = array( 'Content-Type: text/xml', 'X-EBAY-API-COMPATIBILITY-LEVEL:' . self::X_EBAY_API_COMPATIBILITY_LEVEL, 'X-EBAY-API-DEV-NAME:'. self::X_EBAY_API_DEV_NAME, 'X-EBAY-API-APP-NAME:' . self::X_EBAY_API_APP_NAME, 'X-EBAY-API-CERT-NAME' . self::X_EBAY_API_CERT_NAME, 'X-EBAY-API-SITEID:' . 0, 'X-EBAY-API-CALL-NAME:GetOrders', 'X-EBAY-API-REQUEST-ENCODING:XML' ); $message = []; while ($ps*$cp < $total_entries) { sleep(60); $cp ++; $xml = '<?xml version="1.0" encoding="utf-8"?>'; $xml .= '<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">'; $xml .= '<RequesterCredentials>'; $xml .= '<eBayAuthToken>' . $this->_ShopApiEbay->token . '</eBayAuthToken>'; $xml .= '</RequesterCredentials>'; $xml .= '<ModTimeFrom>' . $mod_time_from . '</ModTimeFrom>'; $xml .= '<ModTimeTo>' . $mod_time_to . '</ModTimeTo>'; $xml .= '<DetailLevel>ReturnAll</DetailLevel>'; $xml .= '<IncludeFinalValueFee>True</IncludeFinalValueFee>'; $xml .= '<OrderStatus>All</OrderStatus>'; $xml .= '<Pagination>'; $xml .= '<EntriesPerPage>' . $ps . '</EntriesPerPage>'; $xml .= '<PageNumber>' . $cp . '</PageNumber>'; $xml .= '</Pagination>'; $xml .= '</GetOrdersRequest>'; $response = $this->_curl($header, $xml); if( $response->isSuccess ){ OriginDataEbayOrder::importOrder($response->data->OrderArray, $this->_ShopApiEbay); if(isset($response->data->PaginationResult->TotalNumberOfEntries)){ $total_entries = (int)$response->data->PaginationResult->TotalNumberOfEntries; } }else{ $message[] = Shop::findOne($this->_ShopApiEbay->id)->name . ':getOrder ' . $response->message ; } } if( empty($message) ){ return self::success(self::CODE_SUCCESS, self::CODE_SUCCESS); }else{ return self::fail(self::CODE_FAILURE, join("\n", $message)); } } }
curl 模拟请求
public function _curl($header, $xml){ $connection = curl_init(); curl_setopt($connection, CURLOPT_URL, self::EBAY_WS_URI); curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($connection, CURLOPT_HTTPHEADER, $header); curl_setopt($connection, CURLOPT_POST, 1); curl_setopt($connection, CURLOPT_POSTFIELDS, $xml); curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($connection); curl_close($connection); $response = $this->transformXmlToObject($response); if( $response->Ack == 'Success' ){ return self::success($response, self::CODE_SUCCESS); }else{ return self::fail(self::CODE_FAILURE, (string)$response->Errors->LongMessage); } }
将请求的xml对象转化为对象
public function transformXmlToObject($xml){ //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); // echo '<pre>';var_dump($xmlstring);die; // $val = json_decode(json_encode($xmlstring),true);//转数组 return $xmlstring; }
|
请发表评论