Sample code for 30+ languages & platforms
SQL Server

Paynow.pl -- Make a Payment Request

See more Paynow.pl Examples

Make a payment request POST with prepared message on Paynow payment request endpoint.

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
    -- 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 --request POST 'https://api.sandbox.paynow.pl/v1/payments' \
    -- -H 'Content-Type: application/json' \
    -- -H 'Api-Key: c12c386b-650b-43db-9430-d84fc05d9433' \
    -- -H 'Signature: aYPCytCoc+/wFgqHZJjgBCi20omXTn0yzm9LysJgnFo=' \
    -- -H 'Idempotency-Key: 59c6dd26-f905-487b-96c9-fd1d2bd76885' \
    -- --data-raw '{
    --     "amount": 45671,
    --     "externalId": "234567898654",
    --     "description": "Test transaction",
    --     "buyer": {
    --         "email": "jan.kowalski@melements.pl"
    --     }
    -- }'

    -- Use the following online tool to generate HTTP code from a CURL command
    -- Convert a cURL Command to HTTP Source Code

    -- Use this online tool to generate code from sample JSON:
    -- Generate Code to Create JSON

    -- The following JSON is sent in the request body.

    -- {
    --   "amount": 45671,
    --   "externalId": "234567898654",
    --   "description": "Test transaction",
    --   "buyer": {
    --     "email": "jan.kowalski@melements.pl"
    --   }
    -- }

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateInt', @success OUT, 'amount', 45671
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'externalId', '234567898654'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'description', 'Test transaction'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'buyer.email', 'jan.kowalski@melements.pl'

    DECLARE @myApiAccessKey nvarchar(4000)
    SELECT @myApiAccessKey = 'c12c386b-650b-43db-9430-d84fc05d9433'
    DECLARE @mySigCalcKey nvarchar(4000)
    SELECT @mySigCalcKey = 'b758f20d-ba92-44fa-acca-f57e99787b9d'

    -- Calculate the Signature header.
    DECLARE @crypt int
    EXEC @hr = sp_OACreate 'Chilkat.Crypt2', @crypt OUT

    EXEC sp_OASetProperty @crypt, 'MacAlgorithm', 'hmac'
    EXEC sp_OASetProperty @crypt, 'EncodingMode', 'base64'
    EXEC sp_OAMethod @crypt, 'SetMacKeyString', @success OUT, @mySigCalcKey
    EXEC sp_OASetProperty @crypt, 'HashAlgorithm', 'SHA-256'
    DECLARE @messageBody nvarchar(4000)
    EXEC sp_OAMethod @json, 'Emit', @messageBody OUT
    DECLARE @signature nvarchar(4000)
    EXEC sp_OAMethod @crypt, 'MacStringENC', @signature OUT, @messageBody

    EXEC sp_OAMethod @crypt, 'GenerateUuid', @sTmp0 OUT
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Idempotency-Key', @sTmp0
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Api-Key', @myApiAccessKey
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Signature', @signature
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Content-Type', 'application/json'
    EXEC sp_OASetProperty @http, 'Accept', 'application/json'

    DECLARE @resp int
    EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT

    EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', 'https://api.sandbox.paynow.pl/v1/payments', @json, 'application/json', @resp
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @crypt
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END


    PRINT 'Response body:'
    EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
    PRINT @sTmp0

    -- Sample response:
    -- {
    --   "redirectUrl": "https://paywall.sandbox.paynow.pl/NOA0-YJ9-Y1P-29V?token=eyJraWQiOiJhMD ... L60wk",
    --   "paymentId": "NOA0-YJ9-Y1P-29V",
    --   "status": "NEW"
    -- }

    DECLARE @jsonResp int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonResp OUT

    EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
    EXEC sp_OAMethod @jsonResp, 'Load', @success OUT, @sTmp0
    DECLARE @redirectUrl nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @redirectUrl OUT, 'redirectUrl'
    DECLARE @paymentId nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @paymentId OUT, 'paymentId'
    DECLARE @status nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @status OUT, 'status'

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @crypt
    EXEC @hr = sp_OADestroy @resp
    EXEC @hr = sp_OADestroy @jsonResp


END
GO