Sample code for 30+ languages & platforms
SQL Server

WooCommerce OAuth 1.0a “one-legged” Authentication

See more REST Examples

Demonstrates how to use OAuth 1.0a "one legged" authentication with Woo Commerce.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- Demonstrates how to do OAuth1 authentication for a Wordpress site using Woo Commerce.

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    -- Prepare an OAuth 1.0 object for use with the Chilkat REST API.
    DECLARE @oauth1 int
    EXEC @hr = sp_OACreate 'Chilkat.OAuth1', @oauth1 OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OASetProperty @oauth1, 'ConsumerKey', 'WOO_COMMERCE_CONSUMER_KEY'
    EXEC sp_OASetProperty @oauth1, 'ConsumerSecret', 'WOO_COMMERCE_CONSUMER_SECRET'

    -- The signature method can be HMAC-SHA1 or HMAC-SHA256
    EXEC sp_OASetProperty @oauth1, 'SignatureMethod', 'HMAC-SHA256'

    -- The OauthUrl property will need to be updated each time a request is sent.
    -- The domain here must match the domain passed to the Connect method (below).
    -- The domain must be exact.  For example, "www.your-wordpress-site.com" vs. "your-wordpress-site.com".
    -- One might work while the other does not..
    EXEC sp_OASetProperty @oauth1, 'OauthUrl', 'http://your-wordpress-site.com/wc-api/v3/orders'

    -- The OAuthMethod property will be set automatically when the REST request is sent.
    -- Setting it here is not actually necessary.
    EXEC sp_OASetProperty @oauth1, 'OauthMethod', 'GET'

    -- Generate an initial nonce so that Chilkat knows the desired size of the nonce.
    EXEC sp_OAMethod @oauth1, 'GenNonce', @success OUT, 32

    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT

    -- Tell the REST object to use the OAuth1 object for authentication.
    -- Also, indicate that the OAuth authentication parameters should be query parameters
    -- and not located within the Authorization header.
    DECLARE @bUseQueryParams int
    SELECT @bUseQueryParams = 1
    EXEC sp_OAMethod @rest, 'SetAuthOAuth1', @success OUT, @oauth1, @bUseQueryParams

    -- Make the initial connection (without sending a request yet) to the WooCommerce endpoint at your Wordpress blog.
    DECLARE @bTls int
    SELECT @bTls = 0
    DECLARE @port int
    SELECT @port = 80
    DECLARE @bAutoReconnect int
    SELECT @bAutoReconnect = 1
    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'your-wordpress-site.com', @port, @bTls, @bAutoReconnect
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @oauth1
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    -- Send a GET request to list orders.

    -- When the request is sent, the OAuth1 object's Timestamp and Nonce properties are automatically
    -- regenerated.  Also, the OAuth1 object's OauthMethod property is automatically set to the HTTP method
    -- used for the request (in this case it is "GET").
    DECLARE @responseJson nvarchar(4000)
    EXEC sp_OAMethod @rest, 'FullRequestNoBody', @responseJson OUT, 'GET', '/wc-api/v3/orders'
    EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @oauth1
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    -- When successful, the response status code will equal 200.
    EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN
        -- Examine the request/response to see what happened.

        EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
        PRINT 'response status code = ' + @iTmp0

        EXEC sp_OAGetProperty @rest, 'ResponseStatusText', @sTmp0 OUT
        PRINT 'response status text = ' + @sTmp0

        EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT
        PRINT 'response header: ' + @sTmp0

        PRINT 'response body (if any): ' + @responseJson

        PRINT '---'

        EXEC sp_OAGetProperty @rest, 'LastRequestStartLine', @sTmp0 OUT
        PRINT 'LastRequestStartLine: ' + @sTmp0

        EXEC sp_OAGetProperty @rest, 'LastRequestHeader', @sTmp0 OUT
        PRINT 'LastRequestHeader: ' + @sTmp0
        EXEC @hr = sp_OADestroy @oauth1
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END


    PRINT @responseJson

    PRINT 'Success.'

    EXEC @hr = sp_OADestroy @oauth1
    EXEC @hr = sp_OADestroy @rest


END
GO