簡體   English   中英

PHP中的Web服務

[英]Webservices in PHP

對Web服務很陌生,我需要將Web服務集成到現有應用程序中。 要傳遞給Web服務的詳細信息是

  • 唯一參考
  • 狀態
  • 狀態說明

該Web服務將更新網站的交易狀態。

最好的開始方法是什么? 我從這里去哪里?

盡管有許多不同類型的Web服務以及將它們集成到任何事物的模式,但是如今,許多服務都通過類似的步驟進行集成。 由於您以抽象形式提出了問題,因此我將提供一個抽象的答案-也許會引發其他問題。

我將以付款為例。

  1. 用戶在機器上做某事(訂購一件T恤)。 他們的操作會更新數據庫,會話或某種存儲(或操作鏈)。

  2. 如果合適,用戶操作(1)的結果之一也將觸發系統將內容推送到Web服務(如PayPal) 通常使用XML格式,您將發送帶有嵌套參數的響應。 您的商店會發送T恤的價格和數量。

  3. 該服務接收XML請求 (通常包含“ API密鑰”等)並進行處理。 對於PayPal,在用戶完成T恤訂單后,它將與您的訂單信息一起重定向到您自己的網站。 (同步)

  4. 該服務可以選擇完成處理 (或執行一些異步操作),然后將XML請求發送到您的服務器。 您可以使用PHP解析請求,然后處理數據。 例如,請求可能具有'order_status'類的屬性。 該屬性可以包含'complete','pending', 'failed' 然后,您可以使用PHP更新數據庫以反映這一點。

  5. 您的網站向用戶反映了服務對數據庫所做的更改。 例如,“訂單狀態”或“最新訂單”頁面上的信息。

有很多不錯的庫,還有許多以前為許多不同的Web服務創建的PHP類。 您甚至可以嘗試搜索GitHub。 並且:UPS,PayPal,Google Checkout,Facebook和許多其他應用程序和API文檔提供了示例和API文檔,可以根據需要編寫您自己的實現。

編輯:PayPal特定的信息當PayPal發送(異步)IPN響應時,它位於POST數據中,您可以根據其規格讀取和驗證。

我發現處理IPN(避免修補時間)的最簡單方法是Micah Carrick的PayPal類 我不喜歡該命名,而是想拋光等待屏幕(以防萬一),您可以在此要點上看到我的更改。

用PHP穩定的Ajax驅動的Web服務幾乎很容易編寫,特別是如果使用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));
}

您的客戶端網絡應用可能是:

// 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..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM