我希望将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作为选项返回。
答案 0 :(得分:1)
这就是我必须做的事情(注意:我直接编辑了uc_fedex.module):
将版本更改为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'),
答案 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(行号可能会有所不同,具体取决于您编辑文件的方式):
在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; }
在uc_fedex_quote函数内(第271行),调用addSmartPostDetail函数。
$ request [&#39; RequestedShipment&#39;] [&#39; SmartPostDetail&#39;] = addSmartPostDetail();
将以下内容添加到_uc_fedex_ground_services()数组中(第857行):
&#39; SMART_POST&#39; =&GT; t(&#39; FedEx Smart Post&#39;),
定义包装尺寸(第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 ;, ),
转到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方法,然后相应地设置条件。