Skip to content

Instantly share code, notes, and snippets.

@WooForce
Last active April 19, 2016 12:13
Show Gist options
  • Save WooForce/c1df1033423789178dda99c545e578c8 to your computer and use it in GitHub Desktop.
Save WooForce/c1df1033423789178dda99c545e578c8 to your computer and use it in GitHub Desktop.
FedEx - Change credentials for international shipping.
// Snippet for Rate request:
add_filter('wf_fedex_calculate_shipping_request','wf_fedex_dual_account_rate_request_callback', 10, 2 );
function wf_fedex_dual_account_rate_request_callback($request,$packages){
$ship_from_country_code = ''; // Origin Countrycode
$ship_from_postal_code = ''; // Postal code associated with alternative account
$fedex_international_acc_no = ''; // Alternative account number
$fedex_international_meter_number = ''; // Alternative account meter number
$fedex_international_key = ''; // Authentication Key of alternative account
$fedex_international_pwd = ''; // Password of alternative account
if( $ship_from_country_code != '' ){
foreach ($request as $key => $value) {
if( $value['RequestedShipment']['Recipient']['Address']['CountryCode'] != $ship_from_country_code ){ // if international shipping
if($fedex_international_key != '')
$request[$key]['WebAuthenticationDetail']['UserCredential']['Key'] = $fedex_international_key;
if($fedex_international_pwd != '')
$request[$key]['WebAuthenticationDetail']['UserCredential']['Password'] = $fedex_international_pwd;
if($fedex_international_meter_number != '')
$request[$key]['ClientDetail']['MeterNumber'] = $fedex_international_meter_number;
if($fedex_international_acc_no != ''){
$pre_acc_no = $request[$key]['ClientDetail']['AccountNumber'];
$request[$key]['ClientDetail']['AccountNumber'] = $fedex_international_acc_no;
if( isset( $request[$key]['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber'] ) && $request[$key]['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber'] == $pre_acc_no ){
$request[$key]['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber'] = $fedex_international_acc_no;
$request[$key]['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['CountryCode'] = $ship_from_country_code;
}
if( isset( $request[$key]['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber'] ) && $request[$key]['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber'] == $pre_acc_no ){
$request[$key]['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber'] = $fedex_international_acc_no;
$request[$key]['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['CountryCode'] = $ship_from_country_code;
}
}
if( $ship_from_postal_code != '' )
$request[$key]['RequestedShipment']['Shipper']['Address']['PostalCode'] = $ship_from_postal_code;
$request[$key]['RequestedShipment']['Shipper']['Address']['CountryCode'] = $ship_from_country_code;
}
}
}
return $request;
}
// Snippet for Label request:
add_filter('wf_fedex_request','wf_fedex_dual_account_label_request_callback',
10, 2 );
function wf_fedex_dual_account_label_request_callback($request,$order){
$ship_from_country_code = ''; // Origin Countrycode
$ship_from_postal_code = ''; // Postal code associated
with alternative account
$fedex_international_acc_no = ''; // Alternative account number
$fedex_international_meter_number = ''; // Alternative account meter
number
$fedex_international_key = ''; // Authentication Key of
alternative account
$fedex_international_pwd = ''; // Password of alternative
account
if( $ship_from_country_code != '' &&
$request['RequestedShipment']['Recipient']['Address']['CountryCode'] !=
$ship_from_country_code ){ // if international shipping
if($fedex_international_key != '')
$request['WebAuthenticationDetail']['UserCredential']['Key'] =
$fedex_international_key;
if($fedex_international_pwd != '')
$request['WebAuthenticationDetail']['UserCredential']['Password'] =
$fedex_international_pwd;
if($fedex_international_meter_number != '')
$request['ClientDetail']['MeterNumber'] =
$fedex_international_meter_number;
if($fedex_international_acc_no != ''){
$pre_acc_no = $request['ClientDetail']['AccountNumber'];
$request['ClientDetail']['AccountNumber'] =
$fedex_international_acc_no;
if( isset(
$request['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber']
) &&
$request['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber']
== $pre_acc_no ){
$request['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['AccountNumber']
= $fedex_international_acc_no;
$request['RequestedShipment']['ShippingChargesPayment']['Payor']['ResponsibleParty']['Address']['CountryCode']
= $ship_from_country_code;
}
if( isset(
$request['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber']
) &&
$request['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber']
== $pre_acc_no ){
$request['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['AccountNumber']
= $fedex_international_acc_no;
$request['RequestedShipment']['CustomsClearanceDetail']['DutiesPayment']['Payor']['ResponsibleParty']['CountryCode']
= $ship_from_country_code;
}
}
$request['RequestedShipment']['Shipper']['Address']['PostalCode'] =
$ship_from_postal_code;
$request['RequestedShipment']['Shipper']['Address']['CountryCode']
= $ship_from_country_code;
}
return $request;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment