2012-08-10 117 views
1

所以,猴子租賃汽車 - 集成到第三方網站,

我開了一家汽車租賃公司,我想我的服務集成到一個第三方網站 - 這是人們將能夠直接在租用汽車第三方網站。我怎樣纔能有效地將我的服務整合到第三方網站上?我在想,iframe可能是最好的方式或某種javascript調用...但我需要最好的方式來整合我的服務,以便第三方網站儘可能減少編碼。

我希望人們檢查第三方網站上的一個箱子,如果他們想租一輛車然後彈出一個詢問客戶的付款細節的信息,那麼這些信息會發送到我的網站,我的網站進程該信息並確認付款。

所以基本上,我在設想,

  1. 人點擊第三方網站複選框
  2. 第三方網站發送有關人的信息到我的網站
  3. 我使用該信息發送回付款方式與價格詳細信息
  4. 人提交付款信息在第三方網站
  5. 我的網站獲取付款信息​​並處理信息
  6. 我的網站將狀態回覆發送給第三方網站。

問題是,如果客戶是重複客戶,我希望第三方網站向我發送有關客戶的識別信息,這將使我能夠辨別她是否重複 - 並且因此不收取費用她不得不將她的信用卡信息放在付款箱中。

+3

+1爲猴子 – 2012-08-10 04:12:10

+0

iframes很少整合。 – 2012-08-10 04:14:13

+0

您使用什麼支付服務 – 2012-08-10 04:14:28

回答

0

在第三方網站上提供服務意味着這些網站將不得不與您的應用/網站進行通信。最重要的是,您希望用戶也能夠在第三方網站上付款,因此您將來回發送敏感數據。出於這個原因,我建議你先獲得/集成SSL。

一旦你有了,你需要設置你自己的API。我知道這可能聽起來像一個巨大的任務,但實際上,如果你不需要太多的數據和驗證(返回錯誤代碼和內容負載),那就不是。

所以一個簡單的例子:

比方說,我有一個網站,人們可以登錄/註冊。但我希望用戶能夠在第三方網站上註冊我的網站(例如您希望用戶從您的網站購買商品)。

我在這裏做什麼,就是:

創建一個將偵聽的第三方網站會調用任何請求一個基本的腳本。我們稱之爲api.php

//so we listen for POST params to be sent. These params will have users details stored in them 

//so first check if all required params were sent: 
if (!isset($_POST['firstName']) || !isset($_POST['lastName']) || !isset($_POST['email'])) 
{ 

exit();//because some/all of the required data is missing, we're going to stop right here xD 

}//end of required data missing 

//so if we get to this point, we know that the correct params have arrived 

//so now you can do your registration stuff 

//validate data (check if email is correct, if its been used before, ect ect) 

//throw the data in the DB 

//and if you need to, return some JSON status code 
echo json_encode(array('status'=>'OK')); 

那是正確的,有一個API。非常基本,但仍然是一個API。所以現在你只是告訴第三方網站發佈他們的信息到"https://yousite.com/api.php",它會返回一個狀態代碼,並完成註冊。

我知道這不是一個很好的例子,但我希望你能夠明白這一點。

實際上,大多數網站都是這樣做的。即使沒有使用第三方網站。當用戶註冊到某個網站時,他們的數據會發布到某個頁面。所以我想你可以只是發佈數據到你原來的註冊/購買/登錄頁面。

1

在這種情況下,它更便宜,有時更高效地構建您的產品的白色標籤版本與您的主要產品相同的服務。這樣,所有的功能基本上都是一樣的,除了把別人的名字叫做別人的名字並且說它由你的公司在某個地方供電。

我提出這個問題的一個關鍵原因是網站到網站交易會留下很多移動部分,這些部分可能會通過惡意手段絆倒。

以paypal爲例,當您使用paypal付款時,會發生什麼情況?您點擊第三方網站上的貝寶按鈕,它會將您重定向到貝寶網站本身。你可以做類似的事情,告訴你的第三方提交表單,就像他們在任何其他網站上一樣,並且發佈的數據很少,因爲你希望所有的數據都可以在你身邊確認,這樣它就可以更加封閉防止某人僅僅改變價格或其他東西。無論如何,只要你發佈的數據通過你的過濾器運行,比較它讓你的第三方做什麼,然後處理它在你身邊。那麼當所有內容完成時,您都會轉過身來,然後重定向到那裏網站和一個感謝頁面。

只是回味無窮

+0

+1出於安全考慮 – Tschallacka 2012-08-10 13:48:11

0

有,你可以處理這個許多不同的方式,但我認爲最簡單的可能是有第三方集成商可以在自己的網站上使用一個簡單的JavaScript API。您的JavaScript可以設置複選框(例如,附加到集成商指定的divform)並進行裝配,以便當用戶選中該複選框時,它會打開指向您網站的彈出窗口。然後您可以在彈出窗口中處理您的交易。

這相當於一個基本的貝寶集成如何工作,用戶在他們的網站上拋出一個貝寶按鈕,然後當點擊按鈕時,它會打開一個直接指向貝寶網站的新窗口(因爲作爲一般規則是他們無法直接從第三方網站收集/接收付款或身份信息),並傳遞了一些描述交易的參數(支付金額,收款人,項目詳細信息等)。

因此,舉例來說,第三方可能會與您的服務首先包括你的JavaScript文件整合,如:

<script type="text/javascript" src="http://carmonkey.com/api/v1/MonkeyCar.js" /> 

...然後他們可能會添加一些樣板代碼的API掛鉤到他們的網站的所需部分:

<script type="text/javascript"> 
    var options = {"container": "#someDivId", "userFirstName": "John", 
        "userLastName": "Smith", "rentalDate":"8/8/12", "duration":"7"}; 
    MonkeyCar.drive(options); 
</script> 

然後你的腳本需要考慮這些選項,並用它們來你的複選框添加到目標容器元素,以及配置的複選框,這樣,當用戶點擊一個彈出窗口在您的網絡上打開相應的URL現場。一旦出現這種情況,用戶可以完成自己的汽車租賃預訂正常

<input type="checkbox" name="_monkeyCar" value="true" 
     onchange="if (this.checked) {MonkeyCar.open('http://carmonkey.com/reserve?fname=John&lname=smith&...');}" /> 
Book a Rental Car 

然後,因爲彈出窗口只是運行與標準的網站正常的瀏覽器會話:所以,你可能添加的東西等等。

如果您想要獲得幻想,還可以添加反饋循環,以便在第三方頁面上運行的JavaScript API可以獲取有關事務狀態的更新,並檢測事務何時完成/取消並更新託管頁面的狀態。

1

如果您要實施安全機制,以便黑客無法通過錯誤的命令讓數據庫停滯不前,請使用共享密鑰,使用該密鑰將發佈的數據加密爲散列,然後在您身邊對其進行比較。

例如

$data = "color=blue|type=mazda|days=3|[email protected]|etc=somedata"; 
$secretkey = "213098snxlkds_ljlsk3545"; 
$hash = hash('sha256',$data.$secretkey); 

echo '<form target="someiframe" target="http://www.domain.com/bla/die/bla"> 
<input type="hidden" value="'.$data.'" name="data"> 
<input type="hidden" value="'.$hash.'" name="hash"> 
<input type="submit" value="Order the car Now!">'; 

然後在你身邊,你收到,如果只有你和你的零售商有哈希您使用此代碼

$secretkey = "213098snxlkds_ljlsk3545"; 
if(hash('sha256',$_POST['data'].$secretkey) === $_POST['hash']) 
    { 
    $process = explode('|',$_POST['data']); 
    foreach($process as $piece) 
     { 
     $vars = explode('=',$piece); 
     $Data[$vars[0]] = $vars[1]; 
     } 
    } 

這樣的數據,你可以隨時驗證零售商是合法的,而不是一些cheapchate試圖讓你失望。

+0

如果我的API僅用javascript編碼,該如何實現? – Jasmine 2012-08-10 15:38:47

+0

沒有。它不夠安全。不要使用依靠javascript來做安全業務的apis。當使用JavaScript時,所有的東西都可以向受過基本訓練的玩家黑客開放。任何一個體面的站長都可以實現上面的代碼。半天工作最多。但通過這種方式,您可以確定請求確實來自批准的零售商,而不是用虛假出租訂單淹沒您的數據庫,而您只需通過javascript api即可獲得該請求。你真的需要使用像jsp,php,asp這樣的服務器端腳本。 – Tschallacka 2012-08-10 22:21:55