all_settings = get_option('wf_address_autocomplete_validation_settings'); add_action( 'wp_footer', array( $this,'wf_address_validation_scripts' )); } //validation function using EasyPost API public function wf_address_validation_easypost(){ // create address $address_params = array( "verify" => array("delivery"), "street1" => $_POST["street1_post"], "street2" => $_POST["street2_post"], "city" => $_POST["city_post"], "state" => $_POST["state_post"], "zip" => $_POST["zip_post"], "country" => $_POST["country_post"], ); $record=isset($this->all_settings['wf_address_autocomplete_validation_record_log']) ? $this->all_settings['wf_address_autocomplete_validation_record_log'] : ''; if($record == 'yes') Address_Validation_Log::log_update($address_params,'Easypost Request'); //get option values $easypost_api_key = $this->all_settings[ 'wf_address_autocomplete_validation_easypost_api_key' ]; try{ \EasyPost\EasyPost::setApiKey($easypost_api_key); $address = \EasyPost\Address::create_and_verify($address_params,$easypost_api_key); //for successful validation cases if($record == 'yes') { Address_Validation_Log::log_update(trim($address),'Easypost Response'); } if($address->verifications->delivery->success) { $vali_address_params = array( "status" => 'success', "street1" => $address->street1, "street2" => $address->street2, "city" => $address->city, "state" => $address->state, "zip" => $address->zip, "country" => $address->country, "rdi" => $address->residential, ); die(json_encode($vali_address_params)); } } catch(Exception $e) //for restricted API access { $add = $e->getTrace(); $custom['Error'] = $add['0']['args']; $custom['Custom_msg'] = 'EasyPost Address Validation got failed so Checkout has been processed on user given address'; Address_Validation_Log::log_update($custom,'Easypost Response'); $error=array("status"=>'failure','error'=>$e->getMessage(),"map"=>"undefined"); die(json_encode($error)); } } public function wf_address_validation_scripts() { if(is_checkout()&&!is_order_received_page()) { wp_enqueue_script( 'wf-address-validate-script', plugins_url( '../assests/js/address_validate-easypost.js', __FILE__ ), array( 'jquery' ) ); wp_enqueue_style( 'wf-modal-style-manadatory', plugins_url( '../assests/css/address-verification-popup-manadatory.css', __FILE__ ) ); wp_enqueue_style( 'wf-modal-style', plugins_url( '../assests/css/address-verification-popup-current.css', __FILE__ ) ); //for address suggestion popup $address_validation_popup = $this->all_settings['wf_address_autocomplete_validation_enable_address_popup']; if($address_validation_popup != null && $address_validation_popup == 'yes') { $xa_address_popup=array( //To avoid warning in console log 'enable' => 'yes' ); wp_localize_script('wf-address-validate-script', 'wf_address_autocomplete_validation_enable_address_popup_obj', $xa_address_popup); echo "
×
"; } else{ $xa_address_popup=array( 'enable' => 'no' ); wp_localize_script('wf-address-validate-script', 'wf_address_autocomplete_validation_enable_address_popup_obj', $xa_address_popup); } } } } $obj= new Wf_Address_Validation(); add_action('wp_ajax_wf_address_validation',array($obj, 'wf_address_validation_easypost'));