[英]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.