繁体   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