如何添加Fedex SmartPost作为运输选项?

时间:2014-03-18 15:00:20

标签: drupal-6 ubercart fedex

我希望将FedEx SmartPost添加为送货选项。知道我需要做些什么才能做到这一点?我在其上找到的唯一信息是https://drupal.org/node/793124,但似乎没有人解决这个问题。如果需要,我愿意修改ubercart fedex模块。

到目前为止,我所做的一切:

  • RateService_v10.wsdl更改为RateService_v14.wsdl
  • uc_fedex_rate_request函数添加了代码:

    $request['RequestedShipment']['SmartPostDetail'] = addSmartPostDetail();
    function addSmartPostDetail(){
      $smartPostDetail = array( 
         'Indicia' => 'PARCEL_SELECT',
         'AncillaryEndorsement' => 'CARRIER_LEAVE_IF_NO_RESPONSE',
         'SpecialServices' => 'USPS_DELIVERY_CONFIRMATION',
         'HubId' => 5087,
         'CustomerManifestID' => myid, 
       );
      return $smartPostDetail;
    }
    

uc_fedex_quote函数中,我在之后添加了一个调试语句:

  $response = uc_fedex_rate_request($packages, $origin, $destination);
  drupal_set_message('<pre>'. print_r($response, TRUE) .'</pre>');

在回复中,我没有将SmartPost作为选项返回。

2 个答案:

答案 0 :(得分:1)

这就是我必须做的事情(注意:我直接编辑了uc_fedex.module):

  • 您必须先获得SmartPost批准才能使用您的帐户
  • https://www.fedex.com/us/developer/web-services/process.html?tab=tab1获取更新的wsdl文件并将其上传到您的服务器
  • 从客户支持中获取HubId(我的是5185)
  • 从客户支持部门获取CustomerManifestID
  • 在代码中更改为RateService_v14.wsdl(靠近$ client = new SoapClient ...)
  • 将版本更改为14

    $ request ['Version'] = array(     'ServiceId'=&gt; 'CRS',     'Major'=&gt; '14',     '中级'=&gt; '0',     '次要'=&gt; '0', );

  • 添加以下代码:

    $ request ['RequestedShipment'] ['SmartPostDetail'] = addSmartPostDetail(); function addSmartPostDetail(){   $ smartPostDetail = array(     'Indicia'=&gt; 'PARCEL_SELECT',     '辅助认可'=&gt; 'CARRIER_LEAVE_IF_NO_RESPONSE',     'SpecialServices'=&gt; 'USPS_DELIVERY_CONFIRMATION',     'HubId'=&gt; yourhubid,     'CustomerManifestID'=&gt; yourmanifestid,   );   return $ smartPostDetail; }

  • 将以下内容添加到_uc_fedex_ground_services():'SMART_POST'=&gt; t('FedEx Smart Post'),

  • 转到admin / store / settings / quotes / methods / fedex并查看“FedEx Smart Post”

答案 1 :(得分:0)

AllisonC的回答非常有帮助。对于使用Drupal + Ubercart设置SmartPost API调用的任何人,以下是我如何使用FedEx Shipping 7.x-2.0 + 23-dev构建她的解决方案。

  • http://www.fedex.com/us/developer/web-services/process.html?tab=tab1下载更新的RateService_vXX.wsdl文件(当前版本为v18)。在文本编辑器中打开wsdl文件,确保它连接到FedEx生产服务器(目前为ws.fedex.com:443/web-services/)。将此文件上传到/ uc_fedex / wsdl-production /。

  • 按如下方式编辑uc_fedex.module(行号可能会有所不同,具体取决于您编辑文件的方式):

    1. 考虑在测试时禁用SOAP WSDL缓存(第19行)。
    2. 在uc_fedex_quote函数之外定义addSmartPostDetail函数,如下所示(我使用第248行):

      function addSmartPostDetail(){   $ smartPostDetail = array(     &#39;邮戳&#39; =&GT; &#39; PARCEL_SELECT&#39 ;,     &#39; HubId&#39; =&GT; &#39; 5185&#39;,//仅使用5531进行测试   );  return $ smartPostDetail; }

    3. 在uc_fedex_quote函数内(第271行),调用addSmartPostDetail函数。

      $ request [&#39; RequestedShipment&#39;] [&#39; SmartPostDetail&#39;] = addSmartPostDetail();

    4. 将以下内容添加到_uc_fedex_ground_services()数组中(第857行):

      &#39; SMART_POST&#39; =&GT; t(&#39; FedEx Smart Post&#39;),

    5. 定义包装尺寸(第544行)。 SmartPost的最小容器尺寸为6&#34; L,4&#34; W,1&#34; H,模块的硬连线设置不足。

      &#39;尺寸&#39; =&GT;阵列( &#39;长度&#39; =&GT; 6, &#39;宽度&#39; =&GT; 4, &#39;身高&#39; =&GT; 1, &#39;单位&#39; =&GT; &#39; IN&#39 ;, ),

    6. 我还使用https://www.drupal.org/node/1782298处的补丁手动修补.module文件,以避免无用的&#34;可恢复的致命错误&#34;如果请求没有正常工作,请注意。
  • 转到admin / store / settings / quotes / methods / fedex并检查&#34; FedEx Smart Post&#39;。

我的客户需要分别为送货上门和智能邮政设置条件,并且没有使用任何快递服务,所以我移动了“SMART_POST”#39; =&GT; t(&#39; FedEx Smart Post&#39;),snippet到_uc_fedex_express_services()数组,启用FedEx Express方法,然后相应地设置条件。