Как добавяте Fedex SmartPost като опция за доставка?

Търся да добавя FedEx SmartPost като опция за доставка. Някаква идея какво трябва да направя, за да постигна това? Единствената информация, която намерих за него, е тук https://drupal.org/node/793124, но изглежда никой не е решил този проблем. Готов съм да променя модула fedex на ubercart, ако е необходимо.

Досега какво съм направил:

  • Променено 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 като опция.


person AllisonC    schedule 18.03.2014    source източник


Отговори (2)


Ето какво трябваше да направя (забележка: редактирах директно uc_fedex.module):

  • Първо трябва да получите одобрение на SmartPost за вашия акаунт
  • Вземете актуализирания wsdl файл от https://www.fedex.com/us/developer/web-services/process.html?tab=tab1 и ги качете на вашия сървър
  • Вземете HubId от поддръжката на клиенти (моят беше 5185)
  • Вземете CustomerManifestID от поддръжката на клиенти
  • Промяна на RateService_v14.wsdl в кода (близо до $client = нов SoapClient...)
  • Променете версията на 14

    $request['Version'] = array( 'ServiceId' => 'crs', 'Major' => '14', 'Intermediate' => '0', 'Minor' => '0', );

  • Добавете следния код:

    $request['RequestedShipment']['SmartPostDetail'] = addSmartPostDetail(); функция addSmartPostDetail(){ $smartPostDetail = array( 'Indicia' => 'PARCEL_SELECT', 'AncillaryEndorsement' => 'CARRIER_LEAVE_IF_NO_RESPONSE', 'SpecialServices' => 'USPS_DELIVERY_CONFIRMATION', 'HubId' => yourhubid, 'CustomerManifestID' => вашият манифест , ); връща $smartPostDetail; }

  • Добавете следното към _uc_fedex_ground_services(): 'SMART_POST' => t('FedEx Smart Post'),

  • Отидете на admin/store/settings/quotes/methods/fedex и маркирайте „FedEx Smart Post“
person AllisonC    schedule 25.03.2014

Отговорът на AllisonC беше много полезен. За всеки, който настройва извиквания на API на SmartPost с Drupal + Ubercart, ето как надградих нейното решение с помощта на FedEx Shipping 7.x-2.0+23-dev.

  • Изтеглете актуализиран файл RateService_vXX.wsdl от http://www.fedex.com/us/developer/web-services/process.html?tab=tab1 (текущата версия е v18). Отворете wsdl файла в текстов редактор и се уверете, че се свързва към производствения сървър на FedEx (в момента ws.fedex.com:443/web-services/). Качете този файл в /uc_fedex/wsdl-production/.

  • Редактирайте uc_fedex.module, както следва (номера на редовете може да варират в зависимост от това как редактирате файла):

    1. Consider disable caching of SOAP WSDL while testing (line 19).
    2. Дефинирайте функцията addSmartPostDetail както следва, извън функцията uc_fedex_quote (използвах ред 248):

      function addSmartPostDetail(){ $smartPostDetail = array( 'Indicia' => 'PARCEL_SELECT', 'HubId' => '5185', // използвайте 5531 само за тестване); връща $smartPostDetail; }

    3. Във функцията uc_fedex_quote (ред 271) извикайте функцията addSmartPostDetail.

      $request['RequestedShipment']['SmartPostDetail'] = addSmartPostDetail();

    4. Добавете следното към масива _uc_fedex_ground_services() (ред 857):

      'SMART_POST' => t('FedEx Smart Post'),

    5. Дефинирайте размерите на пакета (ред 544). SmartPost има минимални размери на контейнера от 6" L, 4" W, 1" H, а свързаните с кабела настройки на модула не са подходящи.

      'Размери' => масив ('Дължина' => 6, 'Ширина' => 4, 'Височина' => 1, 'Единици' => 'IN', ),

    6. Също така ръчно коригирах файла .module, използвайки корекцията на https://www.drupal.org/node/1782298, за да избегнете безполезно съобщение „Възстановима фатална грешка“, ако заявката не работи правилно.
  • Отидете на admin/store/settings/quotes/methods/fedex и маркирайте „FedEx Smart Post“.

Моят клиент трябваше да зададе отделни условия за доставка до дома и Smart Post и не използваше експресни услуги, така че преместих 'SMART_POST' => t('FedEx Smart Post'), фрагмент в масива _uc_fedex_express_services(), активиран метода FedEx Express и след това задайте съответните условия.

person Ryan Zook    schedule 23.07.2016