SQL Server
SQL Server
Shippo Validate Address
See more Shippo Examples
Demonstrates how to validate your addresses through the Shippo API before you create labels.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Implements the following CURL command:
-- curl https://api.goshippo.com/addresses/ \
-- -H "Authorization: ShippoToken <API_TOKEN>" \
-- -d name="Shawn Ippotle" \
-- -d company="Shippo" \
-- -d street1="215 Clayton St." \
-- -d city="San Francisco" \
-- -d state="CA" \
-- -d zip=94117 \
-- -d country="US" \
-- -d email="shippotle@goshippo.com"\
-- -d validate=true
DECLARE @req int
EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT
EXEC sp_OASetProperty @req, 'HttpVerb', 'POST'
EXEC sp_OASetProperty @req, 'Path', '/addresses/'
EXEC sp_OASetProperty @req, 'ContentType', 'application/x-www-form-urlencoded'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'name', 'Shawn Ippotle'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'company', 'Shippo'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'street1', '215 Clayton St.'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'city', 'San Francisco'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'state', 'CA'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'zip', '94117'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'country', 'US'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'email', 'shippotle@goshippo.com'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'validate', 'true'
EXEC sp_OAMethod @req, 'AddHeader', NULL, 'Authorization', 'ShippoToken <API_TOKEN>'
DECLARE @resp int
EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OAMethod @http, 'HttpReq', @success OUT, 'https://api.goshippo.com/addresses/', @req, @resp
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
RETURN
END
DECLARE @sbResponseBody int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT
EXEC sp_OAMethod @resp, 'GetBodySb', @success OUT, @sbResponseBody
DECLARE @jResp int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jResp OUT
EXEC sp_OAMethod @jResp, 'LoadSb', @success OUT, @sbResponseBody
EXEC sp_OASetProperty @jResp, 'EmitCompact', 0
PRINT 'Response Body:'
EXEC sp_OAMethod @jResp, 'Emit', @sTmp0 OUT
PRINT @sTmp0
DECLARE @respStatusCode int
EXEC sp_OAGetProperty @resp, 'StatusCode', @respStatusCode OUT
PRINT 'Response Status Code = ' + @respStatusCode
IF @respStatusCode >= 400
BEGIN
PRINT 'Response Header:'
EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT
PRINT @sTmp0
PRINT 'Failed.'
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @sbResponseBody
EXEC @hr = sp_OADestroy @jResp
RETURN
END
-- Sample JSON response:
-- (Sample code for parsing the JSON response is shown below)
-- {
-- "object_created": "2015-03-30T23:47:11.574Z",
-- "object_updated": "2015-03-30T23:47:11.596Z",
-- "object_id": "67183b2e81e9421f894bfbcdc4236b16",
-- "is_complete": false,
-- "validation_results": {
-- "is_valid": false,
-- "messages": [
-- {
-- "source": "USPS",
-- "code": "Address Not Found",
-- "type": "address_error",
-- "text": "The address as submitted could not be found. Please check for excessive abbreviations in the street address line or in the City name."
-- }
-- ]
-- },
-- "object_owner": "shippotle@goshippo.com",
-- "name": "Shawn Ippotle",
-- "company": "Shippo",
-- "street_no": "",
-- "street1": "215 HIPPO ST.",
-- "street2": "",
-- "city": "SAN FRANCISCO",
-- "state": "CA",
-- "zip": "94107",
-- "country": "US",
-- "phone": ""
-- }
-- Sample code for parsing the JSON response...
-- Use the following online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON
DECLARE @source nvarchar(4000)
DECLARE @code nvarchar(4000)
DECLARE @v_type nvarchar(4000)
DECLARE @text nvarchar(4000)
DECLARE @object_created nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_created OUT, 'object_created'
DECLARE @object_updated nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_updated OUT, 'object_updated'
DECLARE @object_id nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_id OUT, 'object_id'
DECLARE @is_complete int
EXEC sp_OAMethod @jResp, 'BoolOf', @is_complete OUT, 'is_complete'
DECLARE @validation_resultsIs_valid int
EXEC sp_OAMethod @jResp, 'BoolOf', @validation_resultsIs_valid OUT, 'validation_results.is_valid'
DECLARE @object_owner nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_owner OUT, 'object_owner'
DECLARE @name nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @name OUT, 'name'
DECLARE @company nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @company OUT, 'company'
DECLARE @street_no nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street_no OUT, 'street_no'
DECLARE @street1 nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street1 OUT, 'street1'
DECLARE @street2 nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street2 OUT, 'street2'
DECLARE @city nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @city OUT, 'city'
DECLARE @state nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @state OUT, 'state'
DECLARE @zip nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @zip OUT, 'zip'
DECLARE @country nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @country OUT, 'country'
DECLARE @phone nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @phone OUT, 'phone'
DECLARE @i int
SELECT @i = 0
DECLARE @count_i int
EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'validation_results.messages'
WHILE @i < @count_i
BEGIN
EXEC sp_OASetProperty @jResp, 'I', @i
EXEC sp_OAMethod @jResp, 'StringOf', @source OUT, 'validation_results.messages[i].source'
EXEC sp_OAMethod @jResp, 'StringOf', @code OUT, 'validation_results.messages[i].code'
EXEC sp_OAMethod @jResp, 'StringOf', @v_type OUT, 'validation_results.messages[i].type'
EXEC sp_OAMethod @jResp, 'StringOf', @text OUT, 'validation_results.messages[i].text'
SELECT @i = @i + 1
END
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @sbResponseBody
EXEC @hr = sp_OADestroy @jResp
END
GO