對於Web服務來說,我是一個陌生人,我需要將Web服務集成到現有的應用程序中。要傳遞的信息的Web服務是PHP中的Web服務
- 唯一的參考
- 金額
- 狀態
- 狀態說明
此Web服務將更新在網站上交易的狀態。
什麼是最好的開始?我從哪裏出發?
對於Web服務來說,我是一個陌生人,我需要將Web服務集成到現有的應用程序中。要傳遞的信息的Web服務是PHP中的Web服務
此Web服務將更新在網站上交易的狀態。
什麼是最好的開始?我從哪裏出發?
雖然有許多不同類型的Web服務和將它們集成到任何東西中的模式,但現在很多服務都與類似的步驟集成在一起。既然你以抽象的形式提出了問題,我會提供一個抽象的答案 - 也許會引發更多的問題。
我將以付款爲例。
用戶在機器上做了些什麼(訂購一件T恤衫)。他們的行爲更新數據庫,會話或某種存儲(或操作鏈)。
如果合適,用戶動作(1)的結果之一也會觸發系統將推送到Web服務(如PayPal)。通常用XML格式化,你會發送一個嵌套參數的響應。您的商店將發送T恤價格和數量。
的服務接收XML請求(經常包含一個「API密鑰」或此類)並處理它。在PayPal用戶完成T恤訂單後,它會將您重定向到您自己的網站以及訂單信息。 (同步)
服務任選完成處理(或執行一些異步動作),然後發送的XML請求到服務器。你用PHP解析請求,然後處理數據。例如,該請求可能有一個屬性,如'order_status'
。該物業可能包含'complete','pending', 'failed'
。然後你可以使用PHP來更新你的數據庫來反映這一點。
您的網站反映了服務對用戶所做的數據庫更改。例如,有關「訂單狀態」或「近期訂單」頁面的信息。
有許多不錯的庫和許多以前爲許多不同的Web服務創建的PHP類。你甚至可以嘗試搜索GitHub。並且:如果您願意/需要,UPS,PayPal,Google Checkout,Facebook以及其他許多人都有實例和API文檔來編寫您自己的實現。
編輯:貝特定信息 當PayPal發送的(異步)IPN響應時,它是在POST數據,其可以讀取,並根據其規格驗證。
我發現處理IPN最簡單的方法(以避免修補時間)是Micah Carrick的PayPal class。我不喜歡命名,並想拋光等待屏幕(以防萬一),您可以在this gist上看到我的更改。
非常感謝。該區域似乎符合我想要的是你解釋的第4部分。我將需要您在第4部分詳細解釋。 用戶單擊支付鏈接,支付鏈接將支付鏈接發送給支付處理器,支付處理器然後處理支付,然後將支付狀態發送到我的Web服務。 我的webserivce會通過querystring或xml接收付款詳細信息。如果它在xml中,我如何讀取xml的內容。謝謝。 – 2009-08-12 19:56:56
我添加了一些關於PayPal的信息,我假設您正在尋找。至於解析XML,PHP有幾種選擇。你應該可以通過Google找到可以工作的東西,但PayPal實際上只是POST數據。 – arbales 2009-08-16 04:52:45
在PHP中,restful ajax驅動的webservices幾乎非常容易編寫,尤其是如果你使用jQuery。你有一個像在服務器上的代碼:
// index.php:
if (isset($_GET['transact'])) {
$ref = $_POST['ref'];
$amount = $_POST['amount'];
$status = $_POST['status'];
$description = $_POST['description'];
$result = transact($ref, $amount, $status, $description);
header('Content-Type: application/json');
return json_encode(array(status => 'success', result => $result));
}
和您的客戶端的Web應用程序可以是:
// webapp.js
....
var data = { ref:4343, amount:'12.34', status:'pending', description:'deduction' };
$.post('?transact', data, function(result) {
if (result.status == 'success') {
var thing = result.thing; //etc..
有很多方法可以做到這一點。您可能希望在您的問題中包含更多信息 - 甚至可能包含特定的Web服務,因爲它們也可能有自己的特質。 – 2009-08-12 16:38:27