Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oJson
LOCAL cMyApiAccessKey
LOCAL cMySigCalcKey
LOCAL oCrypt
LOCAL cMessageBody
LOCAL cSignature
LOCAL oResp
LOCAL oJsonResp
LOCAL cRedirectUrl
LOCAL cPaymentId
LOCAL cStatus

nSuccess := 0

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

oHttp := CreateObject("Chilkat.Http")

//  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"
//    }
//  }

oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateInt("amount", 45671)
oJson:UpdateString("externalId", "234567898654")
oJson:UpdateString("description", "Test transaction")
oJson:UpdateString("buyer.email", "jan.kowalski@melements.pl")

cMyApiAccessKey := "c12c386b-650b-43db-9430-d84fc05d9433"
cMySigCalcKey := "b758f20d-ba92-44fa-acca-f57e99787b9d"

//  Calculate the Signature header.
oCrypt := CreateObject("Chilkat.Crypt2")
oCrypt:MacAlgorithm := "hmac"
oCrypt:EncodingMode := "base64"
oCrypt:SetMacKeyString(cMySigCalcKey)
oCrypt:HashAlgorithm := "SHA-256"
cMessageBody := oJson:Emit()
cSignature := oCrypt:MacStringENC(cMessageBody)

oHttp:SetRequestHeader("Idempotency-Key", oCrypt:GenerateUuid())
oHttp:SetRequestHeader("Api-Key", cMyApiAccessKey)
oHttp:SetRequestHeader("Signature", cSignature)
oHttp:SetRequestHeader("Content-Type", "application/json")
oHttp:Accept := "application/json"

oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpJson("POST", "https://api.sandbox.paynow.pl/v1/payments", oJson, "application/json", oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oJson:destroy()
    oCrypt:destroy()
    oResp:destroy()
    RETURN
ENDIF

? "Response body:"
? oResp:BodyStr

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

oJsonResp := CreateObject("Chilkat.JsonObject")
oJsonResp:Load(oResp:BodyStr)
cRedirectUrl := oJson:StringOf("redirectUrl")
cPaymentId := oJson:StringOf("paymentId")
cStatus := oJson:StringOf("status")

oHttp:destroy()
oJson:destroy()
oCrypt:destroy()
oResp:destroy()
oJsonResp:destroy()