PHP对接易宝接口

30 阅读1分钟

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();	
	
		//initialise a CURL session
		$connection = curl_init();
		//set the server we are using (could be Sandbox or Production server)
		curl_setopt($connection, CURLOPT_URL, $this->serverUrl);
		curl_setopt ($connection, CURLOPT_CONNECTTIMEOUT, 9999);  
		//stop CURL from verifying the peer's certificate
		curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
		
		//set the headers using the array of headers
		curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
		
		//set method as POST
		curl_setopt($connection, CURLOPT_POST, 1);
		
		//set the XML body of the request
		curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);
		
		//set it to return the transfer as a string from curl_exec
		curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
		
		//Send the Request
		$response = curl_exec($connection);
		
		//close the connection
		curl_close($connection);
		//return the response
		return $response;
		
	}
		
	private function buildEbayHeaders()
	{
		$headers = array (
			//Regulates versioning of the XML interface for the API
			'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $this->compatLevel,
			//set the keys
			'X-EBAY-API-DEV-NAME: ' . $this->devID,
			'X-EBAY-API-APP-NAME: ' . $this->appID,
			'X-EBAY-API-CERT-NAME: ' . $this->certID,
			//the name of the call we are requesting
			'X-EBAY-API-CALL-NAME: ' . $this->verb,			
			//SiteID must also be set in the Request's XML
			//SiteID = 0  (US) - UK = 3, Canada = 2, Australia = 15, ....
			//SiteID Indicates the eBay site to associate the call with
			'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);
		 //print_r($responseXml);
		$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";
                }
            }
        }
    }
}

?>