|
如何構建店面并顯示商品 |
級別: 中級 Tyler Anderson , 自由撰稿人, Stexar 公司 2005 年 12 月 19 日 這是使用 PHP 和 Amazon 電子商務(wù)服務(wù)(ECS)建設 Amazon 店面的兩部分教程的第一部分。建設的店面允許購物者查看列表中顯示的商品,或者在商店中搜索特定商品。第 2 部分將介紹購物車(chē)、推薦服務(wù)以及建設專(zhuān)賣(mài)店。 開(kāi)始之前 這個(gè)教程面向的是對于創(chuàng )建店面、自動(dòng)連接 Amazon Web 服務(wù)并顯示結果有興趣的程序員。這個(gè)教程假設讀者熟悉基本的 PHP 概念,包括 您應當熟悉 Amazon Web 服務(wù),在 developerWorks 的 “Boost application development with Amazon Web Service” 系列文章中介紹了它(請參閱 參考資料)。 在這個(gè)兩部分的系列中,我們要用 PHP 創(chuàng )建一個(gè) Amazon 購物車(chē)。第 1 部分將討論店面的架構,通過(guò)商品搜索請求與 Amazon Web 服務(wù)通信,顯示選項并瀏覽商品分類(lèi)。我們還將創(chuàng )建一個(gè)搜索框。 第 2 部分將討論購物車(chē)的創(chuàng )建、添加商品和修改,這個(gè)購物車(chē)將使用叫作購物車(chē)請求的技術(shù)完全保存在 Amazon 的服務(wù)器上。我們將介紹構建藏品商店和向購物者提供瀏覽類(lèi)似商品的能力。
我們將構建一個(gè) Amazon 店面,包含分類(lèi)鏈接和搜索框,允許購物者瀏覽商店中的商品目錄。與多數 PHP 應用程序不同,這個(gè)程序不需要本地數據庫,因為數據庫保存在 Amazon 的服務(wù)器上。所以,這個(gè)教程嚴重地依賴(lài)簡(jiǎn)單對象訪(fǎng)問(wèn)協(xié)議(SOAP),這個(gè) Web 服務(wù)協(xié)議用 XML 組織信息。Web 服務(wù)是應用程序(例如在這個(gè)教程中要構建的 PHP 應用程序)與中央服務(wù)器通信以獲取信息的一種方式。 通過(guò) Amazon 電子商務(wù)服務(wù)(ECS),可以從購物者選擇的分類(lèi)中獲得和顯示內容。當選中一個(gè)分類(lèi)時(shí),將創(chuàng )建參數,指明這個(gè)分類(lèi),收集相關(guān)信息,并啟動(dòng) SOAP 客戶(hù)。SOAP 客戶(hù)會(huì )接受參數,形成 XML 文檔,并把 XML 文檔轉交給 SOAP 服務(wù)器。Amazon 服務(wù)器訪(fǎng)問(wèn)自己的數據庫,生成 XML 文檔,里面包含的商品與參數匹配。最后,服務(wù)器把 XML 文檔返回給 SOAP 客戶(hù),SOAP 客戶(hù)再把文檔解析成數據結構,從數據結構中可以提取出請求的數據。 |
獲得內容如何構建店面并顯示商品 |
概述 Amazon 電子商務(wù)服務(wù)(ECS)允許任何人連接到它巨大的商品目錄,在 Web 站點(diǎn)上顯示商品,把購物者引導到 Amazon 進(jìn)行銷(xiāo)售,并得到銷(xiāo)售的傭金。任何人都可以做這件事。需要做的只是遵守 Amazon 的應用程序編程接口(API)。就像 Amazon 說(shuō)的“這就行了”。您的程序將成為一個(gè)Web 站點(diǎn),在一個(gè)或多個(gè)分類(lèi)中為 Amazon 的產(chǎn)品做廣告、銷(xiāo)售它的產(chǎn)品,得到每筆介紹成交的傭金。您不需要屯積商品或處理訂單,唯一的責任就是維護好您的代碼。 在這篇教程中,除了通過(guò) PHP 使用 Amazon ECS,還將設計店面的架構,并向它添加功能,允許在分類(lèi)中進(jìn)行瀏覽和搜索特定商品。
我們將使用 PHP 和 Web 服務(wù),通過(guò) SOAP 與 Amazon 通信。Web 服務(wù)(例如 Amazon ECS)允許程序員訪(fǎng)問(wèn)服務(wù)。在這個(gè)示例中,我們將連接到 Amazon ECS 去獲取關(guān)于產(chǎn)品的信息。清單 1 顯示了一條示例 SOAP 消息。 清單 1. 示例 SOAP 消息
SOAP 消息看起來(lái)就是這個(gè)樣子。在 PHP 和 Web 服務(wù) 一節中,將學(xué)習如何使用 SOAP 消息制作到 SOAP 服務(wù)器的請求和接收來(lái)自 SOAP 服務(wù)器的請求。
流行的店面擁有干凈、簡(jiǎn)單的布局。在這份教程中,我們將設計一個(gè)基本的店面,在樣式上比較樸素,這樣就可以把精力集中在使店面運行的機械部分了。完成的產(chǎn)品將有一個(gè)容納分類(lèi)和搜索框的側面板,在右側的主內容區顯示商品(請參閱圖 1)。 圖 1. 最后的應用程序
多數在線(xiàn)商店只有一個(gè)或很少的分類(lèi)。這份教程的店面將包含較少幾個(gè)分類(lèi),但是在構建自己的店面時(shí),可以喜歡多少分類(lèi)就建立多少。分類(lèi)被作為向 Amazon ECS 發(fā)送的 SOAP 請求中的信息,ECS 會(huì )返回與選中的分類(lèi)匹配的商品。 可用的分類(lèi)如圖 2 所示。 圖 2. 可用的分類(lèi) 上面顯示的分類(lèi)是
默認情況下,Amazon 的分類(lèi)包含充滿(mǎn)商品的數百頁(yè)。購物者需要縮小他們的搜索范圍,以便找到他們想要的東西。我們將要設計的商品搜索功能會(huì )在分類(lèi)內搜索商品,并把結果顯示給購物者,顯示的結果與 Amazon 上顯示的商品類(lèi)似。請參閱圖 3 和圖 4。 圖 3. 最終應用程序在 Baby 分類(lèi)中顯示的商品 圖 4. Amazon 上在 Baby 分類(lèi)中顯示的商品 請注意在圖 4 中的前三項是相同的。不是所有商品都完全以同樣順序出現。但是,顯示的商品是一樣的。 |
獲得內容如何構建店面并顯示商品 |
什么是 Amazon ECS? Amazon 電子商務(wù)服務(wù)(ECS)允許得到 Amazon 信息的訪(fǎng)問(wèn)權,所有的信息與瀏覽 Amazon 時(shí)發(fā)現的信息一樣。這一節將研究從 Amazon 檢索信息的方法。 搜索商品或其他內容有多種方法。在這里,我們只集中在 下面是所有可能的請求的列表:
每個(gè)請求都要求有合適的參數,好讓 Amazon ECS 正確地處理請求。這個(gè)系列中使用的參數和它們的說(shuō)明是:
下面是一些可用的響應組:
服務(wù)器為每個(gè)請求類(lèi)型返回的數據都是相同的。但是,請求的設置和使用都有不同。 另一方面,SOAP 請求更復雜,因此也就更強大。它們是通過(guò) HTTP 傳遞給 SOAP 服務(wù)器的 XML 文檔。SOAP 請求比 在這份教程中將使用
在這里將執行 服務(wù)的值是 清單 2. REST 請求的 URL
Amazon ECS 現在會(huì )返回包含搜索的商品信息的 XML 文檔。
因為響應太大,所以在這里只能顯示一部分。但是,自己可以把瀏覽器指向清單 2 中的 URL,查看完整的響應。清單 3 顯示了 這就是商品數組開(kāi)始的地方。它把搜索商品的內容傳回發(fā)送者。第一個(gè)
Web 服務(wù)描述語(yǔ)言(WSDL)文件定義了 Web 服務(wù)需要的信息以及它應當返回的信息。這樣,不需要去琢磨需要發(fā)送什么信息、向哪兒發(fā)送信息、從響應中能得到什么,就可以構建自己的應用程序。 Amazon 的 WSDL 文件 描述了可用的命令以及可能的查詢(xún)和搜索語(yǔ)法。 請考慮上面文件中的 對于 清單 5. ItemSearchRequest 項
WSDL 文件定義了 SOAP 請求和響應以及 |
獲得內容如何構建店面并顯示商品 |
PHP 和 Web 服務(wù) 在這一節,將學(xué)習如何通過(guò) PHP 發(fā)送和接收簡(jiǎn)單 SOAP 請求,以及如何 PHP 從響應中提取數據。 要創(chuàng )建 SOAP 請求,需要設置參數。因為 SOAP 比 清單 6. 產(chǎn)品庫存檢查器的 XML 格式的 SOAP 請求
清單 6 中的代碼是 SOAP 請求在 XML 中看起來(lái)的樣子。它指定了一個(gè)帶有空
要創(chuàng )建 SOAP 客戶(hù),可以利用 PHP 內置的 SOAP 功能:
然后,把請求傳遞給 SOAP 服務(wù)器。
現在已經(jīng)創(chuàng )建了客戶(hù),需要設置 SOAP 參數并調用示例函數 清單 7. 設置參數并發(fā)送 SOAP 請求
以上代碼把 SOAP 請求發(fā)送到 WSDL 文件中指定的服務(wù)器,URL 就是
SOAP 響應也是 XML 文檔 (請參閱清單 8)。 清單 8. 產(chǎn)品庫存檢查器的 XML 格式的 SOAP 響應
生成的數據結構在
用清單 9 中的 PHP 代碼捕獲響應。 清單 9. 捕獲響應
只要把變量 清單 10. 提取答案
現在了解了如何傳輸和接收簡(jiǎn)單 SOAP 請求和響應。稍后,將制作帶有層次結構的更復雜的 SOAP 請求。
故障可能由于各種原因而發(fā)生。要想自行捕捉故障而不使用異常,并把故障顯示到屏幕上,請使用以下 PHP 代碼。 清單 11. 處理 SOAP 故障
如果您這邊或服務(wù)器端發(fā)生了問(wèn)題,SOAP 響應中就會(huì )返回故障,那么使用上面的代碼就可以得到通知。故障看起來(lái)就像正常的 SOAP 響應一樣。但是,變量 |
獲得內容如何構建店面并顯示商品 |
設計店面架構 這一節將討論店面架構的設計。它將指導 Web 站點(diǎn)模板的創(chuàng )建,模板包括:顯示的標題,分類(lèi)使用的側面板,在分類(lèi)中進(jìn)行搜索的搜索框,以及頁(yè)面底部的頁(yè)腳。 既然已經(jīng)介紹了 Web 服務(wù),現在就開(kāi)始設計店面。為店面創(chuàng )建一個(gè)根目錄,并創(chuàng )建一個(gè)文件: 清單 12. 處理請求和顯示店面
上面的代碼介紹店面。隨后當選擇了某個(gè)分類(lèi)時(shí),就會(huì )調用方法與 Amazon ECS 連接,并顯示返回的分類(lèi)商品或與搜索條件對應的商品。
清單 13. 主鏈接和標題
在這里輸出了標題,而且如果需要的話(huà),還會(huì )輸出主鏈接。如果 Web 瀏覽器被指向
接下來(lái),需要一些瀏覽用的分類(lèi)。我們從五個(gè)分類(lèi)開(kāi)始:Baby、Computers、Outdoor Living、Software 和 Sporting Goods。繼續處理 清單 14. 顯示分類(lèi)鏈接
清單 14 創(chuàng )建的側面板將容納分類(lèi)鏈接。當客戶(hù)點(diǎn)擊其中一個(gè)分類(lèi)時(shí),會(huì )在 URL 中設置這個(gè)分類(lèi)和 圖 5 顯示了具有分類(lèi)鏈接的當前店面。 圖 5. 顯示分類(lèi)鏈接 分類(lèi)鏈接顯示在左側面板中?,F在轉到對在分類(lèi)上點(diǎn)擊的處理。
清單 15. 處理和返回 URL 中編碼的變量
這個(gè)函數把當前的所有變量合并成一個(gè)變量,用來(lái)創(chuàng )建鏈接,這樣就可以把變量的值從一個(gè)鏈接傳遞到下一個(gè)鏈接。作為參數傳遞的 請點(diǎn)擊
現在點(diǎn)擊 Computers 分類(lèi).
可以看到舊的分類(lèi)和
現在已經(jīng)設置了瀏覽分類(lèi)的功能。接下來(lái),要添加功能,創(chuàng )建一個(gè)搜索框,在當前分類(lèi)中進(jìn)行搜索,繼續使用 清單 16. 顯示搜索框
清單 16 的 HTML 代碼會(huì )顯示一個(gè)搜索框。一旦按下了 Search 按鈕,就會(huì )提交輸入的關(guān)鍵字,同時(shí)當前 請點(diǎn)擊某個(gè)分類(lèi)鏈接,查看帶有搜索框的當前店面,如圖 6 所示。 圖 6. 顯示搜索框 搜索框在左側面板中顯示,有一個(gè)按鈕。在 搜索商品 一節中將介紹在分類(lèi)中搜索商品?,F在轉入主內容區域。
到了教程的這一部分,側面板即將完成。在第 2 部分中還會(huì )添加其他一些東西,所以請一定要閱讀那一部分。 現在,要設置主內容區域,稍后將在這里顯示從 Amazon 返回的商品。這部分代碼會(huì )結束側面板并開(kāi)始主內容區域:
主內容區域的內容是用來(lái)顯示的。在做這件事之前,需要完成頁(yè)腳。
頁(yè)腳是一個(gè)相當簡(jiǎn)單的文件,如果日后需要,可以做得更復雜。創(chuàng )建 清單 17: 顯示站點(diǎn)和版權信息
可以為自己的應用程序調整站點(diǎn)和版權信息。這就完成了店面。把瀏覽器指向 圖 7. 完整的店面 店面現在應當包括標題、帶有分類(lèi)鏈接的側面板,右側是空的主內容區,頁(yè)腳顯示站點(diǎn)和版權信息。搜索框在這里不顯示,因為還沒(méi)有選擇分類(lèi)。 現在轉到有趣的部分,開(kāi)始從 Amazong 檢索內容。 |
獲得內容如何構建店面并顯示商品 |
瀏覽分類(lèi) 既然店面已經(jīng)設計完成,有了分類(lèi)鏈接,現在是時(shí)候從 Amazon ECS 請求數據并顯示返回的商品供客戶(hù)瀏覽了。 首先需要點(diǎn)擊一個(gè)分類(lèi)。先從點(diǎn)擊 Sporting Goods 分類(lèi)開(kāi)始,然后在 清單 18. 處理從 GET 數組得到的分類(lèi)變量
這次,不是介紹店面,
已經(jīng)選擇一個(gè)分類(lèi)后,需要做的是檢驗它是否店面中的有效分類(lèi)。請在 清單 19. 檢驗選中的分類(lèi)在店面中是否有效
請在 前兩行定義了開(kāi)發(fā)人員令牌和 Amazon 合伙人 ID。需要用從 Amazon 得到的實(shí)際值替換它們。如果分類(lèi)無(wú)效,方法會(huì )返回,并通知客戶(hù)。但是,如果分類(lèi)有效,主內容區的標題就會(huì )變成用來(lái)顯示分類(lèi)的值,比起傳遞給 Amazon 的分類(lèi)代碼,這個(gè)值更具可讀性。
現在要設置發(fā)送給 Amazon ECS 的參數。在分類(lèi)中搜索商品,要使用清單 20 所示的參數。 清單 20. 在分類(lèi)中搜索商品的參數
這個(gè)操作告訴 Amazon 要執行的是
請在 清單 21. 向 Amazon ECS 發(fā)送請求并返回結果
這個(gè)函數獲得一個(gè)函數名(由 WSDL 文件決定)以及一個(gè)參數數組(是在前面的面板中創(chuàng )建的)。然后就創(chuàng )建一個(gè)新 SOAP 客戶(hù),指向 Amazon 的 ECS WSDL 文件。參數
現在可以通過(guò)調用 清單 22. 調用 callSOAPFunction 并把結果保存在 $result 中
結果現在保存在
如果請求有效,每件事都工作正常,那么可以為客戶(hù)顯示商品的信息了。異常處理會(huì )在這一節最后介紹。添加代碼到 清單 23. 判斷請求是否返回了商品,顯示商品,以及頁(yè)面導航
首先,需要從返回的 SOAP 構造中檢索商品數組: 現在,需要遍歷 清單 24. 輸出商品區的標題并遍歷所有商品
對于每個(gè)商品元素,都調用 清單 25. 通過(guò)從 $i 變量檢索商品數據,輸出一件商品的信息
首先,顯示 URL 為 圖 8 顯示了目前為止應用程序的瀏覽器輸出示例。 圖 8. 顯示 Sporting Goods 分類(lèi)的第一頁(yè) 下面,需要導航鏈接,以便在分類(lèi)的頁(yè)面間進(jìn)行導航。
在 清單 23 中,有一個(gè)對 清單 26. 為前一頁(yè)和下一頁(yè)鏈接檢索數據,并顯示它們
清單 26 中的函數調用兩個(gè)子函數: 添加函數 清單 27. 計算前一頁(yè)鏈接
清單 28. 計算下一頁(yè)鏈接
這兩個(gè)清單中的代碼處理前一頁(yè)和下一頁(yè)鏈接。請注意, 現在介紹顯示導航鏈接的代碼。請參閱圖 9 中顯示導航鏈接的瀏覽器輸出示例。 圖 9. 在 Sporting Goods 分類(lèi)第一頁(yè)的底部顯示導航鏈接
既然已經(jīng)制作了請求,現在重要的是檢驗沒(méi)有發(fā)生錯誤。首先,創(chuàng )建函數 清單 29. 顯示出錯信息
這個(gè)函數將顯示出錯信息,表示發(fā)生了錯誤。請修改 清單 30. 測試 $result 判斷是否出錯,如果為真就顯示出錯信息
在返回的 SOAP 構造中,有兩個(gè)部分需要查看。一個(gè)是檢查 應用程序運行得很好!現在要轉到搜索框,以便客戶(hù)可以更好地縮小搜索范圍。 |
獲得內容如何構建店面并顯示商品 |
搜索商品 在這一節,將學(xué)習如何用搜索框設置正確的 SOAP 請求并在分類(lèi)中檢索特定商品,這樣客戶(hù)就可以把他們的搜索集中于少量商品。這一節會(huì )重用 瀏覽分類(lèi) 一節中的許多代碼,所以這一節的目標是展示如何動(dòng)態(tài)地設置 Amazon 的商品搜索請求的參數。 在檢索提交的關(guān)鍵字之前,需要在搜索框中輸入一些關(guān)鍵字。請在搜索框中輸入“golf clubs”,如圖 10 所示。 圖 10. 在搜索框中輸入關(guān)鍵字“golf clubs” 現在按下回車(chē)或點(diǎn)擊 Search 按鈕?,F在可以添加 清單 31. 從 GET 數組檢索關(guān)鍵字變量
這將可以確定發(fā)送到 Amazon 的請求的參數。
要確定 清單 32. 確定用來(lái)構造發(fā)送給 Amazon 的請求的 $array 參數
通過(guò) 清單 33. 根據是否設置了 $keyword,返回需要的關(guān)鍵字
這樣,如果設置了 這就是動(dòng)態(tài)地修改商品搜索請求輸入參數所要做的全部工作。請參閱圖 11 中在 Sporting Goods 分類(lèi)中搜索 golf clubs 的示例輸出。 圖 11. 在 Sporting Goods 分類(lèi)中搜索 golf clubs 的結果 請注意,搜索的結果與搜索框中輸入的內容匹配!現在有了一個(gè)可以工作的 Web 站點(diǎn),用戶(hù)可以瀏覽 Amazon 特定分類(lèi)中的商品,還可以在這些分類(lèi)中搜索商品。 |
結束語(yǔ)
在這篇教程中,用 PHP 創(chuàng )建了 Amazon 店面,允許客戶(hù)瀏覽分類(lèi),在這些分類(lèi)中搜索特定商品。應用程序成功地向 Amazon ECS 提交請求并從 Amazon ECS 接收請求,允許在這個(gè) Web 站點(diǎn)上顯示產(chǎn)品。在這個(gè)系列的第 2 部分中,將為應用程序創(chuàng )建購物車(chē),允許客戶(hù)在 Amazon 上安全地購買(mǎi)商品 —— 并為您提供傭金。
| 描述 | 文件名稱(chēng) | 文件大小 | 下載方法 |
|---|---|---|---|
| Source code for the Amazon store, Part 1 | os-amazonphpstore1.zip | 3.5 KB | FTP |
聯(lián)系客服