【发布时间】:2016-12-08 15:46:13
【问题描述】:
我有一个 PHP 脚本,它将根据输入的订单 ID 从 Magento API 返回订单信息。我在表单中为 API 用户名和密码添加了两个额外的输入字段,这样它们就不会存储在 PHP 脚本文件中。
这很好用,除了我需要让脚本捕捉 API 用户名和/或密码不正确时导致的错误。
这是一个成功的查询:
最后一行是点击提交时返回的内容。如果查询不成功,脚本将不会返回初始表单页面,如下所示:
请看我下面的代码:
表单页面
<?php
session_start();
?>
<html>
<head>
<title>Retrieve Order</title>
<link rel="stylesheet" type="text/css" href="/matt/api.css">
</head>
<body>
<form class="get_value" action="get_order.php" method="post">
Enter username and password.
<input type="text" name="api_user">
<input type="password" name="api_pass"><br><br>
Enter an order ID to retrieve the grand total order value.<br><br>
<input type="text" name="order_id">
<input type="submit" class="form_submit">
</form>
</body>
</html>
<?php
if (isset($_SESSION['query_result'])) {
echo $_SESSION['query_result'];
unset($_SESSION['query_result']);
}
?>
PHP 脚本
<link rel="stylesheet" type="text/css" href="/matt/api.css">
<?php
$order_id = $_POST['order_id'];
$user = $_POST['api_user'];
$pass = $_POST['api_pass'];
$client = new SoapClient('https://ts564737-container.zoeysite.com/api/v2_soap/?wsdl');
$session = $client->login($user, $pass);
$filter = array('filter' => array(array('key' => 'order_id', 'value' => $order_id)));
$result = $client->salesOrderList($session, $filter);
session_start();
if ($result) {
foreach ($result as $returned_order) {
$_SESSION['query_result'] = 'The grand total of order ID <b>' . $order_id . '</b> is <span style="color: #ff0000; font-weight: bold;">£' . round($returned_order->grand_total, 2) . '</span>';
}
} else {
$_SESSION['query_result'] = 'Order ID <b>' . $order_id . '</b> does not exist in the database.';
}
header('Location: xxx/enter_order_id.php');
?>
如何“捕捉”错误,使其作为query_result 会话变量的一部分返回?非常感谢您的洞察力。
【问题讨论】: