C
C
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 C Downloads
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkCrypt2.h>
#include <C_CkHttpResponse.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkJsonObject json;
const char *myApiAccessKey;
const char *mySigCalcKey;
HCkCrypt2 crypt;
const char *messageBody;
const char *signature;
HCkHttpResponse resp;
HCkJsonObject jsonResp;
const char *redirectUrl;
const char *paymentId;
const char *status;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// 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 = CkJsonObject_Create();
CkJsonObject_UpdateInt(json,"amount",45671);
CkJsonObject_UpdateString(json,"externalId","234567898654");
CkJsonObject_UpdateString(json,"description","Test transaction");
CkJsonObject_UpdateString(json,"buyer.email","jan.kowalski@melements.pl");
myApiAccessKey = "c12c386b-650b-43db-9430-d84fc05d9433";
mySigCalcKey = "b758f20d-ba92-44fa-acca-f57e99787b9d";
// Calculate the Signature header.
crypt = CkCrypt2_Create();
CkCrypt2_putMacAlgorithm(crypt,"hmac");
CkCrypt2_putEncodingMode(crypt,"base64");
CkCrypt2_SetMacKeyString(crypt,mySigCalcKey);
CkCrypt2_putHashAlgorithm(crypt,"SHA-256");
messageBody = CkJsonObject_emit(json);
signature = CkCrypt2_macStringENC(crypt,messageBody);
CkHttp_SetRequestHeader(http,"Idempotency-Key",CkCrypt2_generateUuid(crypt));
CkHttp_SetRequestHeader(http,"Api-Key",myApiAccessKey);
CkHttp_SetRequestHeader(http,"Signature",signature);
CkHttp_SetRequestHeader(http,"Content-Type","application/json");
CkHttp_putAccept(http,"application/json");
resp = CkHttpResponse_Create();
success = CkHttp_HttpJson(http,"POST","https://api.sandbox.paynow.pl/v1/payments",json,"application/json",resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkJsonObject_Dispose(json);
CkCrypt2_Dispose(crypt);
CkHttpResponse_Dispose(resp);
return;
}
printf("Response body:\n");
printf("%s\n",CkHttpResponse_bodyStr(resp));
// Sample response:
// {
// "redirectUrl": "https://paywall.sandbox.paynow.pl/NOA0-YJ9-Y1P-29V?token=eyJraWQiOiJhMD ... L60wk",
// "paymentId": "NOA0-YJ9-Y1P-29V",
// "status": "NEW"
// }
jsonResp = CkJsonObject_Create();
CkJsonObject_Load(jsonResp,CkHttpResponse_bodyStr(resp));
redirectUrl = CkJsonObject_stringOf(json,"redirectUrl");
paymentId = CkJsonObject_stringOf(json,"paymentId");
status = CkJsonObject_stringOf(json,"status");
CkHttp_Dispose(http);
CkJsonObject_Dispose(json);
CkCrypt2_Dispose(crypt);
CkHttpResponse_Dispose(resp);
CkJsonObject_Dispose(jsonResp);
}