[英]Webservices in PHP
對Web服務很陌生,我需要將Web服務集成到現有應用程序中。 要傳遞給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文檔提供了示例和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.