Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Paynow.pl -- Make a Payment RequestMake a payment request POST with prepared message on Paynow payment request endpoint. For more information, see https://docs.paynow.pl/#section/Payments/Make-a-payment
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; 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" ; } ; } json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateInt(json,"amount",45671) CkJsonObject::ckUpdateString(json,"externalId","234567898654") CkJsonObject::ckUpdateString(json,"description","Test transaction") CkJsonObject::ckUpdateString(json,"buyer.email","jan.kowalski@melements.pl") myApiAccessKey.s = "c12c386b-650b-43db-9430-d84fc05d9433" mySigCalcKey.s = "b758f20d-ba92-44fa-acca-f57e99787b9d" ; Calculate the Signature header. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkMacAlgorithm(crypt, "hmac") CkCrypt2::setCkEncodingMode(crypt, "base64") CkCrypt2::ckSetMacKeyString(crypt,mySigCalcKey) CkCrypt2::setCkHashAlgorithm(crypt, "SHA-256") messageBody.s = CkJsonObject::ckEmit(json) signature.s = CkCrypt2::ckMacStringENC(crypt,messageBody) CkHttp::ckSetRequestHeader(http,"Idempotency-Key",CkCrypt2::ckGenerateUuid(crypt)) CkHttp::ckSetRequestHeader(http,"Api-Key",myApiAccessKey) CkHttp::ckSetRequestHeader(http,"Signature",signature) CkHttp::ckSetRequestHeader(http,"Content-Type","application/json") CkHttp::setCkAccept(http, "application/json") resp.i = CkHttp::ckPostJson3(http,"https://api.sandbox.paynow.pl/v1/payments","application/json",json) If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) CkCrypt2::ckDispose(crypt) ProcedureReturn EndIf Debug "Response body:" Debug CkHttpResponse::ckBodyStr(resp) ; Sample response: ; { ; "redirectUrl": "https://paywall.sandbox.paynow.pl/NOA0-YJ9-Y1P-29V?token=eyJraWQiOiJhMD ... L60wk", ; "paymentId": "NOA0-YJ9-Y1P-29V", ; "status": "NEW" ; } jsonResp.i = CkJsonObject::ckCreate() If jsonResp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(jsonResp,CkHttpResponse::ckBodyStr(resp)) redirectUrl.s = CkJsonObject::ckStringOf(json,"redirectUrl") paymentId.s = CkJsonObject::ckStringOf(json,"paymentId") status.s = CkJsonObject::ckStringOf(json,"status") CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) CkCrypt2::ckDispose(crypt) CkJsonObject::ckDispose(jsonResp) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.