1.登录验证
<?php
class ebay
{
private $requestToken;
private $devID;
private $appID;
private $certID;
private $serverUrl;
private $compatLevel;
private $siteID;
private $verb;
private $runame;
public function __construct($callName, $userRequestToken='')
{
$this->requestToken = $userRequestToken;
$this->devID = '********-****-****-****-************';
$this->appID = '********-********-********-**********';
$this->certID = '********-************-****-**********';
$this->runame = '***';
$this->compatLevel = ***;
$this->siteID = *;
$this->verb = $callName;
$this->serverUrl = 'https://api.ebay.com/ws/api.dll';
}
public function setCompatLevel($level)
{
$this->compatLevel = $level;
}
public function sendHttpRequest($requestBody)
{
$headers = $this->buildEbayHeaders();
$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, $this->serverUrl);
curl_setopt ($connection, CURLOPT_CONNECTTIMEOUT, 9999);
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($connection);
curl_close($connection);
return $response;
}
private function buildEbayHeaders()
{
$headers = array (
'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $this->compatLevel,
'X-EBAY-API-DEV-NAME: ' . $this->devID,
'X-EBAY-API-APP-NAME: ' . $this->appID,
'X-EBAY-API-CERT-NAME: ' . $this->certID,
'X-EBAY-API-CALL-NAME: ' . $this->verb,
'X-EBAY-API-SITEID: ' . $this->siteID,
);
return $headers;
}
public function getSessionID($token='')
{
$verb = 'GetSessionID';
$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>
<GetSessionIDRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RuName>'.$this->runame.'</RuName>
</GetSessionIDRequest>';
$responseXml = $this->sendHttpRequest($requestXmlBody);
$ret = getXmlData($responseXml);
return $ret['SessionID'];
}
public function getGrantLogin($sessionid='')
{
return 'https://signin.ebay.com/ws/eBayISAPI.dll?SignIn&runame='.$this->runame.'&SessID='.($sessionid==''?$this->getSessionID():$sessionid);
}
public function getToken($sessionid)
{
$requestxml = '<?xml version="1.0" encoding="utf-8"?>
<FetchTokenRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
</RequesterCredentials>
<SessionID>'.$sessionid.'</SessionID>
</FetchTokenRequest>';
$responseXml = $this->sendHttpRequest($requestxml);
$ret = getXmlData($responseXml);
if($ret['Ack']=='Success')
{
return array('ret'=>true,'msg'=>$ret['eBayAuthToken'],'expiretime'=>$ret['HardExpirationTime'],'timestamp'=>$ret['Timestamp']);
}
else
{
return array('ret'=>false,'msg'=>$ret['Errors']['LongMessage']);
}
}
}
?>
2.订单下载和物流上传
<?php
class ebayOrder extends ebay
{
public function __construct($callName)
{
parent::__construct($callName);
}
public function getOrder($account_id, $begin, $end, $status = '', $page = 1, $pagesize = 80)
{
global $ass;
$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<DetailLevel>ReturnAll</DetailLevel>
<IncludeFinalValueFee>true</IncludeFinalValueFee>
<OutputSelector>PaginationResult.TotalNumberOfPages</OutputSelector>
<OutputSelector>PaginationResult.TotalNumberOfEntries</OutputSelector>
<OutputSelector>OrderArray.Order.OrderID</OutputSelector>
<!-- Add more OutputSelectors here -->
<RequesterCredentials>
<eBayAuthToken>' . $account_token . '</eBayAuthToken>
</RequesterCredentials>
<ModTimeFrom>' . $begin . '</ModTimeFrom>
<ModTimeTo>' . $end . '</ModTimeTo>
<OrderRole>Seller</OrderRole>';
if ($status) {
$requestXmlBody .= '<OrderStatus>' . $status . '</OrderStatus>';
}
$requestXmlBody .= '<Pagination>
<EntriesPerPage>' . $pagesize . '</EntriesPerPage>
<PageNumber>' . $page . '</PageNumber>
</Pagination>
</GetOrdersRequest>';
$this->setCompatLevel(771);
$responseXml = $this->sendHttpRequest($requestXmlBody);
$ret = getXmlData($responseXml);
if (!$ret) {
return array('ret' => false, 'msg' => 'Result Empty');
}
if (isset($ret['Ack']) && $ret['Ack'] == 'Failure') {
return array('ret' => false, 'msg' => $ret['Errors']['ShortMessage'] . ' ' . $ret['Errors']['LongMessage']);
} else {
return array('ret' => true, 'msg' => $ret);
}
}
public function confirmOrder($auto_id)
{
global $ass, $db, $_CONFIG;
$account_token = '***';
$orderid = '***';
foreach ($list as $order) {
$result['total']++;
$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>
<CompleteSaleRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>' . $account_token . '</eBayAuthToken>
</RequesterCredentials>
<ItemID>' . $order['OrderItemId'] . '</ItemID>
<TransactionID>' . $order['TransactionID'] . '</TransactionID>
<Shipped>true</Shipped>';
if ($order_info['ShipCode']) {
$carrier_name = $res['carrier_name'];
$ShipCode = $res['tracking_number_upload'] == '1' ? $ShipCode: '';
$requestXmlBody .= '<Shipment>
<ShipmentTrackingDetails>
<ShipmentTrackingNumber>' . $ShipCode . '</ShipmentTrackingNumber>
<ShippingCarrierUsed>' . $carrier_name . '</ShippingCarrierUsed>
</ShipmentTrackingDetails>
</Shipment>';
}
$requestXmlBody .= '</CompleteSaleRequest>';
$responseXml = $this->sendHttpRequest($requestXmlBody);
$ret = getXmlData($responseXml);
if ($ret['Ack'] == 'Success') {
$result['success']++;
} else {
$result['error']++;
$result['msg'] = $ret['Errors']['ShortMessage'];
}
}
return $result;
}
public function getItemPic($account_id, $itemid, array $sub_array = array())
{
global $ass;
$account_token = '***';
$requestXmlBody = '<?xml version="1.0" encoding="utf-8"?>
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>' . $account_token . '</eBayAuthToken>
</RequesterCredentials>
<OutputSelector>Item.PayPalEmailAddress</OutputSelector>
<OutputSelector>Item.PictureDetails.GalleryURL</OutputSelector>
<OutputSelector>Item.Variations.Pictures</OutputSelector>
<ItemID>' . $itemid . '</ItemID>
</GetItemRequest>';
$this->setCompatLevel(771);
$responseXml = $this->sendHttpRequest($requestXmlBody);
$ret = getXmlData($responseXml);
$image_array = array();
if (! $ret) {
return '获取失败';
}
if ($ret['Ack'] == 'Failure') {
return array('ret' => false, 'msg' => isset($ret['Errors']['LongMessage']) ? $ret['Errors']['LongMessage'] : '');
} else {
$result = array('ret' => true, 'pic' => '');
if (empty($sub_array)) {
$result['ret'] = true;
$result['pic'] = $ret['Item']['PictureDetails']['GalleryURL'];
return $result;
} else {
if (isset($ret['Item']['Variations']['Pictures']) && isset($ret['Item']['Variations']['Pictures']['VariationSpecificName'])) {
$vname = $ret['Item']['Variations']['Pictures']['VariationSpecificName'];
$picvalue = '';
foreach ($sub_array as $sk => $sv) {
if ($sk == $vname) {
$picvalue = $sv;
break;
}
}
if (!isset($image_array[$vname])) {
$image_array[$vname] = array();
}
foreach ($ret['Item']['Variations']['Pictures']['VariationSpecificPictureSet'] as $key => $val) {
if (!isset($image_array[$vname][$val['VariationSpecificValue']])) {
$image_array[$vname][$val['VariationSpecificValue']] = isset($val['PictureURL']) ? $val['PictureURL'] : $ret['Item']['PictureDetails']['GalleryURL'];
}
if ($val['VariationSpecificValue'] == $picvalue) {
if (isset($val['PictureURL'])) {
$result['pic'] = is_array($val['PictureURL']) ? $val['PictureURL'][0] : $val['PictureURL'];
} else {
$result['pic'] = $ret['Item']['PictureDetails']['GalleryURL'];
}
}
$result['list'] = $image_array;
}
return $result;
} else {
return "null";
}
}
}
}
}
?>