document.write("
<MvFUNCTION NAME = "Module_Description" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
<MvASSIGN NAME = "l.module:code" VALUE = "address_validation">
<MvASSIGN NAME = "l.module:name" VALUE = "Address Validation Example">
<MvASSIGN NAME = "l.module:provider" VALUE = "Miva Merchant">
<MvASSIGN NAME = "l.module:version" VALUE = "1.0000">
<MvASSIGN NAME = "l.module:api_ver" VALUE = "5.72">
<MvASSIGN NAME = "l.module:description" VALUE = "Simple Address Validation Example">
<MvASSIGN NAME = "l.module:features" VALUE = "addrval">
</MvFUNCTION>
<MvCOMMENT>
|
| Required Function for Address Validation Feature (addrval)
|
</MvCOMMENT>
<MvFUNCTION NAME = "AddressValidationModule_Validate_Address" PARAMETERS = "module var, address var, verified_addresses var" STANDARDOUTPUTLEVEL = "">
<MvCOMMENT>
| Make API Request to Address Validation Service. Address custromer entered during checkout
| is available in the l.address structure.
<MvIF EXPR = "{ NOT AddressValidation_BuildRequest( l.address, l.request_json ) }">
<MvFUNCTIONRETURN VALUE = 0>
</MvIF>
<MvCOMMENT>
| Make API Request to Address Validation Service
</MvCOMMENT>
<MvIF EXPR = "{ NOT AddressValidation_API_Call( l.request_json, l.response ) }">
<MvFUNCTIONRETURN VALUE = 0>
</MvIF>
<MvCOMMENT>
| Generate Verified Address Array. Here you would have a function to parse the JSON response and add each address the l.verified_addresses array
| Function should return the number of verified addresses
</MvCOMMENT>
<MvFUNCTIONRETURN VALUE = "{ AddressValidation_Build_VerifiedAddresses( l.address, l.response, l.verified_addresses ) }">
</MvFUNCTION>
<MvFUNCTION NAME = "AddressValidation_BuildRequest" PARAMETERS = "address var, request_json var" STANDARDOUTPUTLEVEL = "">
<MvCAPTURE VARIABLE = "l.request_json">
[
{
"address_line1": "<MvEVAL EXPR = "{ [ g.Module_JSON ].JSON_Encode( l.address:addr1 $ l.address:addr2 ) }">",
"city_locality": "<MvEVAL EXPR = "{ [ g.Module_JSON ].JSON_Encode( l.address:city ) }">",
"state_province": "<MvEVAL EXPR = "{ [ g.Module_JSON ].JSON_Encode( l.address:state ) }">",
"postal_code": "<MvEVAL EXPR = "{ [ g.Module_JSON ].JSON_Encode( l.address:zip ) }">",
"country_code": "<MvEVAL EXPR = "{ [ g.Module_JSON ].JSON_Encode( l.address:cntry ) }">"
}
</MvCAPTURE>
<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>
<MvFUNCTION NAME = "AddressValidation_API_Call" PARAMETERS = "request_json var, response var" STANDARDOUTPUTLEVEL = "">
<MvASSIGN NAME = "l.url" VALUE = "https://api.shipengine.com//v1/addresses/validate">
<MvASSIGN NAME = "l.api_key" VALUE = "__YOUR_API_KEY_HERE__">
<MvCAPTURE VARIABLE = "l.response:raw">
<MIVA MvCALL_Error = "nonfatal, nodisplay">
<MvCALL METHOD = "POST"
ACTION = "{ l.url }"
CONTENT-TYPE = "application/json"
HEADERS = "{ 'API-Key: ' $ l.api_key $ asciichar( 13 ) $ asciichar( 10 ) }"
FIELDS = "l.request_json"
FLAGS = "noparse">
<MvEVAL EXPR = "{ s.callvalue }">
</MvCALL>
<MIVA MvCALL_Error = "fatal, display">
</MvCAPTURE>
<MvIF EXPR = "{ NOT ISNULL g.MvCALL_Error }">
<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Library_Utilities ].Error( 'ERROR_CODE', g.MvCALL_Error ) }">
</MvIF>
<MvCOMMENT>Convert JSON to a Miva Variable</MvCOMMENT>
<MvIF EXPR = "{ NOT miva_json_decode( l.response:raw, l.response:data ) }">
<MvFUNCTIONRETURN VALUE = "{ [ g.Module_Library_Utilities ].Error( 'ERROE_CODE', miva_json_decode_last_error() ) }">
</MvIF>
<MvFUNCTIONRETURN VALUE = 1>
<MvFUNCTION>
<MvFUNCTION NAME = "AddressValidation_Build_VerifiedAddresses" PARAMETERS = "original_address var, response var, verified_addresses var" STANDARDOUTPUTLEVEL = "">
<MvASSIGN NAME = "l.verified_addresses" VALUE = "">
<MvASSIGN NAME = "l.verified_address_count" VALUE = 0>
<MvFOREACH ITERATOR = "l.address" ARRAY = "l.response:data:Address">
<MvASSIGN NAME = "l.verified_address" VALUE = "">
<MvASSIGN NAME = "l.verified_address:addr1" VALUE = "{ trim( l.address:Address1 ) }">
<MvASSIGN NAME = "l.verified_address:addr2" VALUE = "{ trim( l.address:Address2 ) }">
<MvASSIGN NAME = "l.verified_address:comp" VALUE = "{ trim( l.original_address:comp ) }">
<MvASSIGN NAME = "l.verified_address:city" VALUE = "{ trim( l.address:City ) }">
<MvASSIGN NAME = "l.verified_address:state" VALUE = "{ trim( l.address:State ) }">
<MvASSIGN NAME = "l.verified_address:country" VALUE = "{ trim( l.address:country ) }">
<MvASSIGN NAME = "l.verified_address:zip" VALUE = "{ trim( l.address:zip ) }">
<MvCOMMENT>Residential Address Flag</MvCOMMENT>
<MvASSIGN NAME = "l.verified_address:resdntl" VALUE = "{ [ g.Module_Admin ].Trim_Boolean( l.original_address:resdntl ) }">
<MvASSIGN NAME = "l.verified_address_count" VALUE = "{ miva_array_insert( l.verified_addresses, l.verified_address, -1 ) }">
</MvFOREACH>
<MvFUNCTIONRETURN VALUE = "{ l.verified_address_count }">
</MvFUNCTION>
address_validation - Snippet hosted by \"Cacher\"
");