Magento1.6版本中已经集成了订单的查询功能,不过早期的版本要实现订单查询还得花点心思。网上也有对应的插件就是了,hellokeykey的 订单查询插件,不过要 50刀,感觉贵了点,不过一分钱一分货  这边还是得对那些开发者表示支持的。

这边分享一个订单查询的api方法,详细的测试没做,不过1.5下是确定可用的。

废话不多说,先介绍下使用说明吧(涉及一个代码文件,稍后贴出来)

进入后台,
System——>Web Service
新建一个api用户 (记住用户名密码)
(用户角色赋予 Order相关的权限)

新建一个cms页面用于Order查询
调用代码
{{block type="core/template" template="cms/order-status-api.phtml"}}

修改order-status-api.phtml 文件中的
$proxy = new SoapClient('http://www.magentoeasy.com/index.php/api/soap?wsdl');
域名为目标网站域名

修改如下代码中的用户名密码为新建的api 用户名密码
//change to your API username/password
$sessionId = $proxy->login('orderviewer', 'orderviewer');

OK至于cms页面的链接要怎么放,样式修改,以及新建api用户新建页面清理缓存之类的这边就略过了

下面是 order-status-api.phtml 文件的源码

  1. <style type="text/css">
  2. .orderStatusTable {
  3. border:1px solid #CCCCCC;
  4. font-size:11px;
  5. }
  6. .track-order-table td { padding:3px;}
  7. .orderStatusTable td {
  8. padding:8px;
  9. }
  10. .currentStatus {
  11. font-size: 11px;
  12. background-color: #eee;
  13. padding: 10px;
  14. margin: 0 0 15px 0;
  15. line-height: 15px;
  16. border: 1px solid #ccc;
  17. color: #333;
  18. }
  19. .currentStatus span {
  20. font-size: 14px;
  21. line-height: 23px;
  22. color: #000;
  23. }
  24. </style>
  25. <div>
  26. <h3>Check My Order Status</h3>
  27. </div>
  28. <p>Please enter your order number and email address to see the status of your order.</p>
  29. <form name="" action="<?php echo $this->getUrl('track-order');?>" method="get">
  30. <table class="track-order-table" border="0" cellspacing="0" cellpadding="0">
  31. <tr style="padding:3px 0;display:block;">
  32. <td><strong>Order Number:</strong></td>
  33. <td><input type="text" name="order_id" id="order_id" value="<?php echo (isset($_GET['order_id'])) ? $_GET['order_id'] : ''; ?>" /></td>
  34. </tr>
  35. <tr style="padding:3px 0;display:block;">
  36. <td><strong>Email Address:</strong></td>
  37. <td><input name="email_address" type="text" id="email_address" value="<?php echo (isset($_GET['email_address'])) ? $_GET['email_address'] : ''; ?>" size="30" /></td>
  38. </tr>
  39. <tr style="padding:5px 0;display:block;clear:both;margin-top:10px;">
  40. <td>&nbsp;</td>
  41. <td><button class="button" title="Subscribe" type="submit"><span><span>Submit</span></span></button></td>
  42. </tr>
  43. </table>
  44. </form>
  45. <div></div>
  46. <?php
  47. $live = true; //determines verbosity of errors
  48. $error = '';
  49. $statusMessage = '';
  50. $trackingNumberMessage = '';
  51. $shippingMessage = '';
  52. $orderID = '';
  53. $emailAddress = '';
  54. if(isset($_GET['order_id'])) {
  55. //$orderID = trim(preg_replace('/[^0-9]*/', '', $_GET['order_id']));
  56. $orderID = trim(preg_replace('/[^0-9a-zA-Z]*/', '', $_GET['order_id']));
  57. $emailAddress = trim($_GET['email_address']);
  58. try {
  59. ini_set("soap.wsdl_cache", "0");
  60. ini_set("soap.wsdl_cache_enabled", "0");
  61. //******************************************************************/
  62. // change to match your domain name
  63. //$siteapiurl= $this->getUrl('index.php/api/soap?wsdl');
  64. //$proxy = new SoapClient($siteapiurl);
  65. $proxy = new SoapClient('http://www.magentoeasy.com/index.php/api/soap?wsdl');
  66. //change to your API username/password
  67. $sessionId = $proxy->login('orderviewer', 'orderviewer');
  68. //******************************************************************/
  69. //find all orders related to this id
  70. $orderById = $proxy->call($sessionId, 'sales_order.info', $orderID);
  71. //print_r($orderById);
  72. //echo "<hr>";
  73. $items = $orderById['items'];
  74. //print_r($items);
  75. if($orderById['customer_email'] == $emailAddress) {
  76. //we are setting this variable for use later
  77. $orderLookup = "success";
  78. if (strtolower($orderById['status']) == "holded") {
  79. $orderById['status'] = "On Hold";
  80. }
  81. $statusMessage = '<span>Your order status is: <strong>'.ucwords(str_replace('_', ' ', $orderById['status'])).'</strong></span>';
  82. if(ucwords(str_replace('_', ' ', $orderById['status'])) == "Processing"){
  83. $statusMessage .= '<br/><br/><strong>What does this mean?</strong><br/>Processing Time is the time it takes from when you submit your order to when the product leaves the Distribution Center.';
  84. }
  85. } else {
  86. $orderLookup = "failure";
  87. echo "We were unable to find your order information. Please verify your Order Number and Email Address are correct.";
  88. }
  89. //echo $orderById['status']."<hr>";
  90. //if the order status is complete we look up shipping information
  91. if(strtolower($orderById['status']) == "complete" && $orderLookup == "success") {
  92. //we look for all shipments related to this order id using internal magento order id
  93. $findShipments = $proxy->call($sessionId, 'sales_order_shipment.list', array(array('order_id'=>array('like'=>$orderById['order_id']))));
  94. //print_r($findShipments);
  95. if (count($findShipments) < 1) { //if $findShipments is not an array
  96. echo "There was an unknown error and your shipment information could not be found. Please contact Customer Service to get the current status of your order.";
  97. } else {
  98. //we pull the increment id for the shipment
  99. $thisShipmentID = $findShipments[0]['increment_id'];
  100. //now we pull all shipment info that specific shipment id
  101. if(!$proxy->call($sessionId, 'sales_order_shipment.info', $thisShipmentID)){
  102. $trackingNumberMessage = "Shipment ID: <strong>".$thisShipmentID."</strong>";
  103. $shippingMessage = "Your order was shipped on " . $findShipments[0]['created_at'] . ".<br/><br/>";
  104. }
  105. else {
  106. $getShipmentInfo = $proxy->call($sessionId, 'sales_order_shipment.info', $thisShipmentID);
  107. //print_r($getShipmentInfo);
  108. //set each variable
  109. $shipDate = $getShipmentInfo['created_at'];
  110. $defaultTimeZone = date_default_timezone_get();
  111. date_default_timezone_set('EST');
  112. //and echo the data to screen
  113. $shippingMessage = "Your order was shipped on " . date("l, F jS, Y \\a\\t g:i:s a T", strtotime($shipDate . ' ' . $defaultTimeZone)) .".<br/>";
  114. if(count($getShipmentInfo['tracks']) > 0){
  115. foreach($getShipmentInfo['tracks'] as $temp_track)
  116. {  $shippingMessage .= "Shipped By : ".$temp_track['title']."  ,Tracking Number :".$temp_track['number']."<br/>"; }
  117. $shippingMessage .= 'Check your shipment state by tracking number~.<br>By Fedex : <a target="_blank" href="http://www.fedex.com/Tracking">Fedex Express</a><br/>
  118. By DHL : <a target="_blank" href="http://www.dhl.com/en/express/tracking.html">DHL</a><br/>
  119. By UPS : <a target="_blank" href="http://www.ups.com/tracking/tracking.html">UPS</a><br/>';
  120. }
  121. $shippingMessage .= "<br/>";
  122. }
  123. } //no errors
  124. }
  125. if($orderLookup != "failure"){
  126. echo '<p style="padding: 10px; background:#eee; margin: 10px 0;">'.$statusMessage.'<br/>'.$trackingNumberMessage.'</p>';
  127. echo $shippingMessage;
  128. echo "<h4>Products in your order:</h4><ul>";
  129. foreach($items as $item){
  130. $temp_sku = $item['sku'];
  131. if(strpos($temp_sku,'-'))
  132. {
  133. $temp_sku=substr($temp_sku,0,strpos($temp_sku,'-'));
  134. }
  135. echo "<li>".number_format($item['qty_invoiced'], 0) . " x <strong>" . strtoupper($temp_sku) . "</strong> " . $item['name'] . "</li>";
  136. }
  137. echo "</ul>";
  138. }
  139. } catch (SoapFault $fault) {
  140. //this is a basic implementation of error checking. I am using try to stop the error from showing a nasty magento error page
  141. if($fault->faultcode == "100") {
  142. echo "That Order Number was not found in our system.";
  143. } elseif ($fault->faultcode == "http") {
  144. echo "Request timed out. Please try again later.";
  145. } else {
  146. //leave this on for testing so we can see SOAP status codes; turn off for live
  147. if ($live == false) {
  148. echo "Error $fault->faultcode: $fault->faultstring";
  149. } else {
  150. echo "Error $fault->faultcode: $fault->faultstring"."<hr>";
  151. //echo "There was an unknown error. Please try again later, or contact us.";
  152. }
  153. }
  154. }
  155. } // end if
  156. ?>
  157. <p><br /><br /><em>For detailed information regarding the status of your order, please contact our helpful Customer Service Experts.</em></p>

代码比较杂乱,没用的注释也没删,大家凑合着看吧,希望能派上用场 :-)

转载于:https://blog.51cto.com/vsfor/774082

Magento Order Search使用api查询订单相关推荐

  1. java微信支付v3系列——6.微信支付查询订单API

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  2. 微信查询订单API与商派ecstore订单状态对接

    2019独角兽企业重金招聘Python工程师标准>>> 今天一个项目用微信扫码支付,客户扫码后卡死在前台.但是金额已经支付成功了.通过百度发现https://pay.weixin.q ...

  3. 在线支付系列【15】微信支付实战篇之集成查询订单、支付通知API

    有道无术,术尚可求,有术无道,止于术. 文章目录 前言 主动调用 商户订单号查询 回调通知 1. 添加通知回调地址 2. 通知处理 3. 通知接口 4. 测试 前言 在上篇文档中,我们简单实现了Nat ...

  4. ElasticSearch: Search API 查询用法详解

    Search API ElasticSearch 为了搜索提供了一些原始的 API,主要是有两大类 URL Search URL Search 类似 http 的get请求,是将请求参数放到 URL ...

  5. PHP App Store Server API 苹果API退款 查询订单 历史订单 PHP校验签名解码

    本文使用是基于thinkPHP 实现相关的功能,Python.java等实现的网上都有相关的实现连接.不说废话,直接开始. 一.安装jwt. 1.composer 安装[强烈推荐]本文用这种方式: c ...

  6. Magento教程 22:如何确认订单报表?

    欢迎使用Magento购物车系统 ,上次介绍过如何审核.发布客户评论 ,这次要教的是查询订单报表,借此获取详细的订单数据. Magento内建报表功能,在订单报表中,商家可清楚得知商品项目.销售数量. ...

  7. java编程根据订单编号查询订单状态_Java微信订单查询

    Java 通过统一下单 API 进行订单支付后,除等待微信通过 notify_url 进行回调通知外,还可以主动查询订单状态 更多精彩 前置条件 可参考 Java 微信扫码支付 如果实现微信支付 官网 ...

  8. 淘宝客订单API获取订单代码

    Trade 数据结构 名称 类型 是否隐私 描述 seller_nick String Y 卖家昵称 buyer_nick String Y 买家昵称 title String Y 商品标题 type ...

  9. 托众导购网 淘宝客订单API获取订单代码

    本文介绍如何使用淘宝客API获取淘宝客订单 ,获取到订单后 ,将订单记录插入到 OenJWeb的淘宝客订单表 ,下面 是代码 : package org.openjweb.core.taobao.se ...

最新文章

  1. HTML中Css详细介绍
  2. 面试题 08.03. Magic Index LCCI 魔术索引
  3. linux下source命令使用详解
  4. 博客真的停止维护了,找我请@我。
  5. sql大小写 效率_【SQL】单行函数
  6. 查看java运行时参数_查看JVM运行时参数
  7. 向下滑动动画android_Android SwipeRefreshLayout – Android向下拉动/向下滑动即可刷新
  8. Menu控件在IE8中子菜单不能正常显示的解决方案(转)
  9. Cockroachdb 三、副本设置
  10. web前端进阶<7>:3d图像翻转效果
  11. ADGUARD——去除广告利器
  12. NLP Prompting for Text Classification(1)
  13. 开源软件总体拥有成本指南
  14. NIST:生成安全密码密钥
  15. 右侧追击(一)——东方财富
  16. mysql不能持久存储数据的是_数据持久化存储
  17. 《 中国高校鄙视链大全 》
  18. C#项目实战——YModem协议文件传输【实例】
  19. 好用的日历插件(三款常用的日历插件)
  20. 数字与罗马数字之间转换

热门文章

  1. Android Service--通信方式(IBinder回调、Messenger)
  2. 购买什么样的天猫转让网店才有优势
  3. 求求各位帮忙找个人,这个盾叔到底是谁?
  4. 基于SSH的宾馆管理系统系统结构图_ER图_数据字典
  5. 【java】java获取ip地址(读取QQWry.dat文件形式)
  6. Android 代码混淆之-群魔乱舞的字符串
  7. 全面解析Android性能优化,含腾讯、阿里、百度、京东、美团、爱奇艺等大厂实战解析
  8. python控制系统进程_python 监控windows进程
  9. 楼中楼应该怎么写 php,什么是楼中楼?楼中楼怎么样?
  10. 【Android】Android应用开发模板