1

所以,

我经营一家租车公司,我想将我的服务整合到第三方网站——人们可以直接在第三方网站上租车。如何有效地将我的服务整合到第三方网站上?我认为 iframe 可能是最好的方式或某种 javascript 调用......但我需要最好的方式来集成我的服务,以便第三方网站必须尽可能少地编码。

如果人们想租车,我希望人们在第三方网站上选中一个框,然后弹出一个表格,询问客户他们的付款细节,然后该信息被发送到我的网站,我的网站处理该信息并确认付款。

所以基本上,我在设想,

  1. 人点击第三方网站上的复选框
  2. 第三方网站将有关此人的信息发送到我的网站
  3. 我使用该信息发回带有价格详细信息的付款箱
  4. 人在第三方网站上提交付款信息
  5. 我的网站获取付款信息​​并处理信息
  6. 我的网站向第三方网站发回状态响应。

问题是,如果客户是回头客,我希望第三方网站向我发送有关客户的识别信息,这将使我能够辨别她是回头客,从而向她收费,而无需她的信用付款框中的卡详细信息。

4

4 回答 4

1

如果您要实施安全措施,以便黑客无法使用虚假订单使您的数据库陷入困境,请使用共享密钥,您可以使用共享密钥将发布的数据加密为哈希,然后在您这边进行比较。

例如

$data = "color=blue|type=mazda|days=3|clientID=john@doe.com|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];
        }
    }

这样,如果只有您和您的零售商拥有哈希值,您就可以始终验证零售商是合法的,而不是一些试图让您陷入困境的便宜货。

于 2012-08-10T13:56:01.230 回答
1

在这种情况下,构建与您的主要产品在同一服务上托管的产品的白标版本会更实惠,有时甚至更有效。这样,所有的功能基本上都是一样的,除了你在上面贴上别人的名字并说它是由你的公司在某个地方提供支持的。

我建议这样做的一个关键原因是站点到站点的交易会留下许多可通过恶意手段绊倒的移动部件。

以贝宝为例,当您使用贝宝付款时,会发生什么?您单击第三方网站上的贝宝按钮,它会将您重定向到贝宝网站本身。你可以做类似的事情,你告诉你的第 3 方提交一份表格,就像他们在任何其他网站上一样,并且发布的数据很少,因为你希望它在你身边得到确认,所以它让门更关防止某人只是改变价格或其他东西。无论如何,您将发布的数据通过您的过滤器运行它,将其与您允许您的第 3 方执行的任何提供进行比较,然后在您身边处理它。然后当一切都完成后,你转身并重定向回那里的网站和一个感谢页面。

只是思考的食物

于 2012-08-10T04:32:07.587 回答
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",它就会返回一个状态码,注册就完成了。

我知道这不是一个很好的例子,但我希望你能理解这一点。

实际上,大多数网站无论如何都会这样做。即使不使用第三方网站。当用户注册到网站时,他们的数据会被发布到某个页面。所以我想你可以将数据发布到你原来的注册/购买/登录页面..

于 2012-08-10T04:31:38.787 回答
0

有很多不同的方法可以解决这个问题,但我认为最简单的方法可能是拥有一个简单的 JavaScript API,第三方集成商可以在他们的网站上使用。您的 JavaScript 可以设置复选框(例如,附加到divform集成商指定的)并安装它,以便当用户选中该框时,它会打开一个指向您网站的弹出窗口。然后,您可以在“弹出窗口”中处理您的交易。

这与基本的 Paypal 集成的工作方式相当,用户将 Paypal 按钮扔到他们的网站上,然后当单击该按钮时,它会打开一个直接指向 Paypal 网站的新窗口(因为作为一般规则,他们不能直接从第三方网站收集/接受付款或身份信息)并传递一些描述交易的参数(付款金额、收件人、项目详细信息等)。

因此,例如,第三方可能会通过首先包含您的 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 可以获取有关交易状态的更新,并检测交易何时完成/取消,并使用地位。

于 2012-08-10T04:44:10.413 回答