For Drupal 6.x version
For Ups address validation dynamically at time of checkout.Dynamically checking whether its Residential or Commercial .
I have not developed any module to add address validation.
Just a simple way I have did it.
Added function in my custom module.
function check_shipping_address($address)
{
require_once('Address_validation.php');
$av = new Address_validation();
$av->setReturnType('Array'); // Array or json (Default)
// $address['address1'],$address['city'],$address['state'],$address['zipcode'],$address['country'] is required
// $address['country'] = 'US' Only
$av->setAddress($address);
$data = $av->getResponse();
/*echo "data==";
print_r($data);
echo ""; */
return $data[0][description];
}
In ubercart/shipping/uc_ups/uc_ups.module file
i have added the code in function
function uc_ups_shipping_quote($packages, $origin, $destination, $ups_service) { .. }
After line 327 .
$shipto_city = $destination->city;
$shipto_address = $destination->street1;
For getting the address and city of ShipTo.
Then format a array .
Add it after line 346.
$addresscheck = array("address1" =>$shipto_address ,
"city" => $shipto_city,
"state" => $shipto_zone,
"zipcode" => $shipto_zip,
"country" => $shipto_country);
Now in schema I have added and check whether its commercial or Residential address.
on Line 445.
if(check_shipping_address($addresscheck)=='Residential') // Call a function and pass the address
{
$schema .= "
";
}
Thanks. if you need my help let me know.
Comments
Address validation
Forgot to show code of Address_validation.php
Put this file in your custom module where you have enter the function of addresscheck
<?php
/*
* Author : Mark Song (<a href="mailto:ilovekanon@gmail.com" rel="nofollow">ilovekanon@gmail.com</a>)
* Blog : Uniapple.net
*/
define("ACCESS_LICENSE_NUMBER","");
define("USER_ID","");
define("USER_PASSWORD","");
define("MODE","Dev");
class Address_validation {
protected $_url;
protected $_returnType = 'json';
protected $_consignee;
protected $_address1;
protected $_address2;
protected $_city;
protected $_state;
protected $_zipCode;
protected $_country;
public function __construct(){
if(strtolower(MODE) == 'dev'){
$this->_url = "https://wwwcie.ups.com/ups.app/xml/XAV";
}else{
$this->_url = "https://onlinetools.ups.com/ups.app/xml/XAV" ;
}
}
public function setAddress($addressArray){
if(!is_array($addressArray)){
throw new Exception("Address Info should be an array!");
}
if(!isset($addressArray['address1']) && $addressArray['address1'] == ''){
throw new Exception("Address1 is required, array key is address1");
}
if(!isset($addressArray['city']) && $addressArray['city'] == ''){
throw new Exception("City is required, array key is city");
}
if(!isset($addressArray['state']) && $addressArray['state'] == ''){
throw new Exception("State is required, array key is state");
}
if(!isset($addressArray['zipcode']) && $addressArray['zipcode'] == ''){
throw new Exception("Zip Code is required, array key is zipcode");
}
if(!isset($addressArray['country']) && $addressArray['country'] != 'US'){
throw new Exception("Country is required and county should be US only, array key is country");
}
if(isset($addressArray['consignee'])) $this->_consignee = $addressArray['consignee'];
$this->_address1 = $addressArray['address1'];
if(isset($addressArray['address2'])) $this->_address2 = $addressArray['address2'];
$this->_city = $addressArray['city'];
$this->_state = $addressArray['state'];
$this->_zipcode = $addressArray['zipcode'];
$this->_country = $addressArray['country'];
}
public function setReturnType($type){
$this->_returnType = $type;
}
public function getResponse(){
$response = $this->request();
$responseArray = new SimpleXMLElement($response);
$data = array(); //return data container
//print_r($responseArray);
if($responseArray->Response->ResponseStatusDescription == 'Failure'){
// error
$data['error']['errorSeverity'] = $responseArray->Response->Error->ErrorSeverity;
$data['error']['errorCode'] = $responseArray->Response->Error->ErrorCode;
$data['error']['errorDescription'] = $responseArray->Response->Error->ErrorDescription;
return $this->getReturnByType($data);
}
$addressSize = sizeof($responseArray->AddressKeyFormat);
if($addressSize <1){
$data['error']['errorCode'] = "0000";
$data['error']['errorDescription'] = "Can not find the address";
}elseif($addressSize > 1){
$arrSize = sizeof($responseArray->AddressKeyFormat);
for($i=0; $i<$arrSize; $i++){
$temp = $responseArray->AddressKeyFormat[$i];
$data[$i]['code'] = $temp->AddressClassification->Code;
$data[$i]['description'] = $temp->AddressClassification->Description;
if(is_array($temp->AddressLine)){
$data[$i]['address'] = implode(",",$temp->AddressLine);
}else{
$data[$i]['address'] = $temp->AddressLine;
}
$data[$i]['region'] = $temp->Region;
$data[$i]['city'] = $temp->PoliticalDivision2;
$data[$i]['state'] = $temp->PoliticalDivision1;
$data[$i]['zipcode'] = $temp->PostcodePrimaryLow;
$data[$i]['country'] = $temp->CountryCode;
}
}else{
$temp = $responseArray->AddressKeyFormat;
$data[0]['code'] = $temp->AddressClassification->Code;
$data[0]['description'] = $temp->AddressClassification->Description;
if(is_array($temp->AddressLine)){
$data[0]['address'] = implode(",",$temp->AddressLine);
}else{
$data[0]['address'] = $temp->AddressLine;
}
$data[0]['region'] = $temp->Region;
$data[0]['city'] = $temp->PoliticalDivision2;
$data[0]['state'] = $temp->PoliticalDivision1;
$data[0]['zipcode'] = $temp->PostcodePrimaryLow;
$data[0]['country'] = $temp->CountryCode;
}
return $this->getReturnByType($data);
}
protected function getReturnByType($data){
if(strtolower($this->_returnType) == 'json'){
return json_encode($data);
}else{
return $data;
}
}
protected function request(){
$xml = $this->generateXML();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch); print_r();
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($status != '200'){
throw new Exception("CURL Faild, status code is : ".$status);
}
curl_close($ch);
return $response;
}
protected function generateXML(){
$xml = "<?xml version='1.0'
?>
".ACCESS_LICENSE_NUMBER."
".USER_ID."
".USER_PASSWORD."
<?xml version='1.0' ?>
1.0001
XAV
3
3
";
if($this->_consignee) $xml .= " UPS Capital";
$xml .= "".$this->_address1."";
if($this->_address2) $xml .= "#2L";
$xml .= "
".$this->_city."
".$this->_state."
".$this->_zipcode."
".$this->_country."
";
return $xml;
}
}//class
?>