对Web服务很陌生,我需要将Web服务集成到现有应用程序中。要传递给Web服务的详细信息是
此网络服务将更新网站上的交易状态。
什么是最好的开始方式?我从哪里开始?
答案 0 :(得分:1)
虽然有许多不同类型的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文档来编写您自己的实现,如果您愿意/需要。
修改:PayPal特定信息 当PayPal发送(异步)IPN响应时,它处于POST数据中,您可以根据其规格读取和验证。
我发现处理IPN的最简单方法(以避免修补时间)是Micah Carrick的PayPal class。我不喜欢这个命名,想要改变等待屏幕(以防万一),你可以在this gist看到我的更改。
答案 1 :(得分:0)
// 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..