get('address_standardization_userid'); $url = Civi::settings()->get('address_standardization_url'); if (empty($userID) || empty($url) ) { return FALSE; } $address2 = str_replace(',', '', $values['street_address']); $XMLQuery = '
' . CRM_Utils_Array::value('supplemental_address_1', $values, '') . '' . $address2 . '' . $values['city'] . '' . $values['state_province'] . '' . $values['postal_code'] . '' . CRM_Utils_Array::value('postal_code_suffix', $values, '') . '
'; $client = new GuzzleHttp\Client(); $request = $client->request('GET', $url, [ 'query' => [ 'API' => 'Verify', 'XML' => $XMLQuery, ], ]); $session = CRM_Core_Session::singleton(); $code = $request->getStatusCode(); if ($code != 200) { $session->setStatus(ts('USPS Address Lookup Failed with HTTP status code: %1', [1 => $code] )); return FALSE; } $responseBody = $request->getBody(); $xml = simplexml_load_string($responseBody); if (is_null($xml) || is_null($xml->Address)) { $session->setStatus(ts('Your USPS API Lookup has Failed.')); return FALSE; } if ($xml->Number == '80040b1a') { $session->setStatus(ts('Your USPS API Authorization has Failed.')); return FALSE; } if (array_key_exists('Error', $xml->Address)) { $session->setStatus(ts('Address not found in USPS database.')); return FALSE; } $values['street_address'] = (string) $xml->Address->Address2; $values['city'] = (string) $xml->Address->City; $values['state_province'] = (string) $xml->Address->State; $values['postal_code'] = (string) $xml->Address->Zip5; $values['postal_code_suffix'] = (string) $xml->Address->Zip4; if (array_key_exists('Address1', $xml->Address)) { $values['supplemental_address_1'] = (string) $xml->Address->Address1; } return TRUE; } }