测试工具入口
https://developer.ebay.com/DevZone/build-test/test-tool/
Ebay E邮宝API开发
开发者专区(总入口)
http://www.ebay.cn/developer/
国际e邮宝API V3
http://www.ebay.cn/developer/single/epacket.html
国际e邮宝API V4 (eBay亚太物流平台API)
http://www.ebay.cn/developer/single/APAC-SHIPPING.html
说明:V3还可用,以后全面转换成V4(原计划是2014-10-10,后推迟)
1 注册开发者账户
https://developer.ebay.com/devzone/account
在My Account页获取生成一组Key(分开发环境 和 生产环境)
2 注册Sandbox账户
打开www.sandbox.ebay.com,点击Get Started下的eBay Sandbox User Registration链接,会跳转到developer.ebay.com,要求用开发者账户先登录,登录后跳到eBay Sandbox User Registration Tool开始注册账户,用户名统一以TESTUSER_开头,注册类型只有Buyer and Seller,说明既可以是买家,也可以是卖家,也可以再次注册一个账户,分别模拟买家卖家。
也可以登录开发者账户后在tools下点击Sandbox User Registration链接进行Sandbox账户注册。
3 产生User Token
实际就是eBay用户对开发者或APP的授权码,可以在开发账户中的Tools下面点击Get a User Token获取,点击后跳转到key选择页面,输入(或选择环境或Key),然后点击Continue to generate token,然后跳转到授权登录页面,使用之前支持的账户进行登录(表示这个账户授权到开发者账户),输入账户密码登录后跳到一个授权提醒页面,点击I agree,然后弹出结果,点击Save Token。
4 使用对应的授权码访问API(操作授权码对应的店铺)
如果刚开始接触API开发,往往在账户授权这里被卡住,有点难理解。实际上,这里申请的开发者账户可以看做是一个应用程序(至少是代表),现在这个应用程序要获取你账户(eBay账户或eBay账户对应的EUB)里面的信息,这里就涉及到两个问题。第一,数据如何访问,第二,如何授权这个应用程序访问这些个人数据。对第一个问题,自然是通过提供API访问了,但是访问前必须先获取授权,这就是第二个问题。关于授权,业界有成熟的解决方案OAuth 2,它用得非常普遍。但是eBay没有采用OAuth 2,它自己实现了一套授权逻辑(不过跟OAuth 2也有类似地方),过程这里先跳过了,最终结果是eBay卖家输入了它的账户密码点击同意授权,应用程序将接收到一个很长的字符串,美其名曰Token。应用程序在使用API时,这个Token是必须传递的,Token是有有效期的,会不会导致它泄露呢,理论是不会的,因为它作为POST数据的一部分通过HTTPS进行传递。就算泄露了Token,要访问API时还要知道AppKey已经对应的签名等。
以下是一段来自官方的例子:
error_reporting(E_ALL); $compatabilityLevel = 717; // eBay API version $devID = "95a9c0d-1cad-4fda-b74d-b610efbb560"; $appID = "EBTCo63ba-b11-4e96-b0c3-b4dd064239"; $certID = "f2fd3c8-18d4-4419-8fd3-72ae811829f"; $serverUrl = "https://api.sandbox.ebay.com/ws/api.dll"; $userToken = "xxxxxxxxxxxxxx"; $siteID = 0; //要调用的API $verb = 'GetTokenStatus'; $headers = array ( 'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $compatabilityLevel, 'X-EBAY-API-DEV-NAME: ' . $devID, 'X-EBAY-API-APP-NAME: ' . $appID, 'X-EBAY-API-CERT-NAME: ' . $certID, //the name of the call we are requesting 'X-EBAY-API-CALL-NAME: ' . $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: ' . $siteID, ); //POST的数据,一个XML字符串 $requestXmlBody = '<?xml version="1.0" encoding="utf-8"?> <GetTokenStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <RequesterCredentials> <eBayAuthToken>'.$userToken.'</eBayAuthToken> </RequesterCredentials> </GetTokenStatusRequest>'; //使用CURL发送数据 //initialise a CURL session $connection = curl_init(); //set the server we are using (could be Sandbox or Production server) curl_setopt($connection, CURLOPT_URL, $serverUrl); //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, $requestXmlBody); //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); header("Content-type: text/xml"); print_r($response);
返回的XML:
<GetTokenStatusResponse><Timestamp>2014-11-19T15:16:41.219Z</Timestamp><Ack>Success</Ack><Version>893</Version><Build>E893_CORE_API_17097905_R1</Build><TokenStatus><Status>Active</Status><EIASToken>nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4GhDJmKogudj6x9nY+seQ==</EIASToken><ExpirationTime>2016-05-12T15:04:46.000Z</ExpirationTime></TokenStatus></GetTokenStatusResponse>
EBay Api顺利通过沙盒测试,但是我这里的E邮宝V4.0.0沙盒测试一直失败,起初以为是账户等信息不对,换了几次,总是提醒Token无效,但是通过EBay Api测试Token是有效的(如上代码运行结果)。后来我直接到Ebay香港注册了个真实的Ebay账户,然后授权到真实的开发者账户,测试就通过:
$serverUrl="https://api.apacshipping.ebay.com.hk/aspapi/v4/ApacShippingService"; $request=array(); $request["APIDevUserID"]="xxxxx"; $request["APISellerUserToken"]="00000"; $request["APISellerUserID"]="xxxxx"; $request["AppID"]="EBTCo1d7-1e69-4cbf-adbf-7c47209ab"; $request["AppCert"]="45d1d5c-d54c-4381-bd3b-f9b0949479"; $request["MessageID"]=""; $request["Version"]="4.0.0"; $request["Carrier"]="CNPOST"; //$request["Service"]="EPACK"; $client = new SoapClient($serverUrl."?wsdl"); $r = $client->VerifyAPACShippingUser(array("VerifyAPACShippingUserRequest"=>$request)); print_r($r); ///输出 stdClass Object ( [VerifyAPACShippingUserResult] => stdClass Object ( [Version] => 4.0.0 [Ack] => Success [Message] => VerifyAPACShippingUser succeeded [Timestamp] => 2014-11-20T06:58:05.989-07:00 [InvocationID] => F4C3C334D173429BA38538986C620B1D [CarrierList] => stdClass Object ( [CarrierGeo] => stdClass Object ( [Carrier] => CNPOST [FromCountryCode] => CN ) ) ) )
看起来,E邮宝v4.0.0服务还有待完善。
附加信息,E邮宝实际是一个独立的服务,是要注册账户的,你可以使用你的Ebay账户(仅限香港注册的)去注册一个E邮宝账户,这样你的这个EBay账户也就是E邮宝账户,同时你的Ebay账户默认会被添加到管理账户的卖家列表中,你可以继续添加Ebay账户进来,就是一个E邮宝账户对应多个Ebay账户,在调用E邮宝API时,参数APISellerUserID是必填的,它是能定位到E邮宝的中设置的的Ebay账户。
只要通过Ebay的API认证,就能调用E邮宝的API管理物流发货。
引用及备注
收集自ifeeline 仅交流和学习所用
转载请注明:(●--●) Hello.My Weicot » Ebay E邮宝API开发