Payment Initiation API

API change history

The API endpoints described here allow a PISP to: Register an intent to stage a payment-order consent. Optionally confirm available funds for a payment-order (domestic and international immediate payments only). Subsequently submit the payment-order for processing. Optionally retrieve the status of a payment-order consent or payment-order resource.

Get Payment Information

Returns the content of a payment object

Try it

Request

Request URL

Request parameters

  • string

    Resource identification of the generated payment initiation resource.

Request headers

  • string

    Format - uuid. ID of the request, unique to the call, as determined by the initiating party.

  • (optional)
    string

    Is contained if and only if the "Signature" element is contained in the header of the request.

  • (optional)
    string

    A signature of the request by the TPP on application level. This might be mandated by ASPSP.

  • (optional)
    string

    Format - byte. The certificate used for signing the request, in base64 encoding. Must be contained if a signature is contained.

  • (optional)
    string

    The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP. It shall be contained if and only if this request was actively initiated by the PSU.

  • (optional)
    string

    The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available.

  • (optional)
    string

    The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.

  • (optional)
    string

    The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.

  • (optional)
    string

    The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.

  • (optional)
    string

    The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP, if available.

  • (optional)
    string

    The forwarded Agent header field of the HTTP request between PSU and TPP, if available.

  • (optional)
    string

    HTTP method used at the PSU ? TPP interface, if available. Valid values are: * GET * POST * PUT * PATCH * DELETE

  • (optional)
    string

    Format - uuid. UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available. UUID identifies either a device or a device dependant application installation. In case of an installation identification this ID need to be unaltered until removal from device.

  • (optional)
    string

    The forwarded Geo Location of the corresponding http request between PSU and TPP if available.

  • string
    Subscription key which provides access to this API. Found in your Profile.
  • string
    OAuth 2.0 access token obtained from IdentityServer. Supported grant types: Authorization code.

Request body

Responses

200 OK

OK

Representations

{
  "type": "AccountAccess",
  "id": "string",
  "tpp": "string",
  "createdDate": "string",
  "consentStatus": "Received",
  "details": {
    "endToEndId": "string",
    "paymentService": "transfers",
    "paymentProduct": "domestic",
    "debitAccount": {
      "iban": "string",
      "bban": "string",
      "msisdn": "string",
      "currency": "string"
    },
    "creditAccount": {
      "iban": "string",
      "bban": "string",
      "msisdn": "string",
      "currency": "string"
    },
    "instructedAmount": {
      "currency": "string",
      "amount": 0.0
    },
    "chargeBearer": "sha",
    "remittanceInformation": "string",
    "creditorName": "string",
    "expenses": {
      "currency": "string",
      "amount": 0.0
    }
  }
}
{
  "required": [
    "consentStatus"
  ],
  "type": "object",
  "properties": {
    "type": {
      "enum": [
        "AccountAccess",
        "PaymentInitiation",
        "ConfirmationOfFunds"
      ],
      "type": "string"
    },
    "id": {
      "type": "string",
      "description": "The consent id",
      "nullable": true
    },
    "tpp": {
      "type": "string",
      "description": "Client requesting the consent",
      "nullable": true
    },
    "createdDate": {
      "type": "string",
      "description": "Date created",
      "format": "date-time"
    },
    "consentStatus": {
      "enum": [
        "Received",
        "Rejected",
        "Valid",
        "RevokedByPsu",
        "Expired",
        "TerminatedByTpp"
      ],
      "type": "string",
      "description": "This is the overall lifecycle status of the consent."
    },
    "details": {
      "required": [
        "paymentProduct",
        "paymentService"
      ],
      "type": "object",
      "properties": {
        "endToEndId": {
          "type": "string",
          "description": "Gets or Sets End To End identification id",
          "nullable": true
        },
        "paymentService": {
          "enum": [
            "transfers"
          ],
          "type": "string"
        },
        "paymentProduct": {
          "enum": [
            "domestic",
            "international"
          ],
          "type": "string"
        },
        "debitAccount": {
          "type": "object",
          "properties": {
            "iban": {
              "type": "string",
              "description": "Gets or Sets Iban",
              "nullable": true
            },
            "bban": {
              "type": "string",
              "description": "Gets or Sets Bban",
              "nullable": true
            },
            "msisdn": {
              "type": "string",
              "description": "Gets or Sets Msisdn",
              "nullable": true
            },
            "currency": {
              "type": "string",
              "description": "Gets or Sets Currency - ISO 4217 Alpha 3 currency code",
              "nullable": true
            }
          },
          "additionalProperties": false,
          "description": "Reference to an account by either   \r\n* IBAN, of a payment accounts, or   \r\n* BBAN, for payment accounts if there is no IBAN, or   \r\n* an alias to access a payment account via a registered mobile phone number (MSISDN)."
        },
        "creditAccount": {
          "type": "object",
          "properties": {
            "iban": {
              "type": "string",
              "description": "Gets or Sets Iban",
              "nullable": true
            },
            "bban": {
              "type": "string",
              "description": "Gets or Sets Bban",
              "nullable": true
            },
            "msisdn": {
              "type": "string",
              "description": "Gets or Sets Msisdn",
              "nullable": true
            },
            "currency": {
              "type": "string",
              "description": "Gets or Sets Currency - ISO 4217 Alpha 3 currency code",
              "nullable": true
            }
          },
          "additionalProperties": false,
          "description": "Reference to an account by either   \r\n* IBAN, of a payment accounts, or   \r\n* BBAN, for payment accounts if there is no IBAN, or   \r\n* an alias to access a payment account via a registered mobile phone number (MSISDN)."
        },
        "instructedAmount": {
          "required": [
            "amount",
            "currency"
          ],
          "type": "object",
          "properties": {
            "currency": {
              "type": "string",
              "description": "Gets or Sets Currency - ISO 4217 Alpha 3 currency code",
              "nullable": true
            },
            "amount": {
              "type": "number",
              "description": "Gets or Sets Amount",
              "format": "double"
            }
          },
          "additionalProperties": false,
          "description": "Amount representation"
        },
        "chargeBearer": {
          "enum": [
            "sha",
            "our",
            "ben"
          ],
          "type": "string"
        },
        "remittanceInformation": {
          "type": "string",
          "description": "Gets or Sets Remittance Information",
          "nullable": true
        },
        "creditorName": {
          "type": "string",
          "description": "Gets or Sets Creditor's name",
          "nullable": true
        },
        "expenses": {
          "required": [
            "amount",
            "currency"
          ],
          "type": "object",
          "properties": {
            "currency": {
              "type": "string",
              "description": "Gets or Sets Currency - ISO 4217 Alpha 3 currency code",
              "nullable": true
            },
            "amount": {
              "type": "number",
              "description": "Gets or Sets Amount",
              "format": "double"
            }
          },
          "additionalProperties": false,
          "description": "Amount representation"
        }
      },
      "additionalProperties": false,
      "description": "Body of the response for a successful payment initiation request."
    }
  },
  "additionalProperties": false
}

400 Bad Request

Bad Request

Representations

{
  "errors": {},
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "nullable": true,
      "readOnly": true
    },
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

401 Unauthorized

Unauthorized

Representations

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

403 Forbidden

Forbidden

Representations

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

404 Not Found

Not found

Representations

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

405 Method Not Allowed

Method Not Allowed

Representations

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

406 Not Acceptable

Not Acceptable

408 Request Timeout

Request Timeout

409 Conflict

Conflict

Representations

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "extensions": {}
}
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "nullable": true
    },
    "title": {
      "type": "string",
      "nullable": true
    },
    "status": {
      "type": "integer",
      "format": "int32",
      "nullable": true
    },
    "detail": {
      "type": "string",
      "nullable": true
    },
    "instance": {
      "type": "string",
      "nullable": true
    },
    "extensions": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "additionalProperties": false
      },
      "nullable": true,
      "readOnly": true
    }
  },
  "additionalProperties": false
}

415 Unsupported Media Type

Unsupported Media Type

429 Too many requests

Too Many Requests

500 Internal Server Error

Internal Server Error

503 Service Unavailable

Service Unavailable

Code samples

@ECHO OFF

curl -v -X GET "https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}"
-H "X-Request-ID: "
-H "Digest: "
-H "Signature: "
-H "TPP-Signature-Certificate: "
-H "PSU-IP-Address: "
-H "PSU-IP-Port: "
-H "PSU-Accept: "
-H "PSU-Accept-Charset: "
-H "PSU-Accept-Encoding: "
-H "PSU-Accept-Language: "
-H "PSU-User-Agent: "
-H "PSU-Http-Method: "
-H "PSU-Device-ID: "
-H "PSU-Geolocation: "
-H "Ocp-Apim-Subscription-Key: {subscription key}"
-H "Authorization: {access token}"

--data-ascii "{body}" 
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("X-Request-ID", "");
            client.DefaultRequestHeaders.Add("Digest", "");
            client.DefaultRequestHeaders.Add("Signature", "");
            client.DefaultRequestHeaders.Add("TPP-Signature-Certificate", "");
            client.DefaultRequestHeaders.Add("PSU-IP-Address", "");
            client.DefaultRequestHeaders.Add("PSU-IP-Port", "");
            client.DefaultRequestHeaders.Add("PSU-Accept", "");
            client.DefaultRequestHeaders.Add("PSU-Accept-Charset", "");
            client.DefaultRequestHeaders.Add("PSU-Accept-Encoding", "");
            client.DefaultRequestHeaders.Add("PSU-Accept-Language", "");
            client.DefaultRequestHeaders.Add("PSU-User-Agent", "");
            client.DefaultRequestHeaders.Add("PSU-Http-Method", "");
            client.DefaultRequestHeaders.Add("PSU-Device-ID", "");
            client.DefaultRequestHeaders.Add("PSU-Geolocation", "");
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");
            client.DefaultRequestHeaders.Add("Authorization", "{access token}");

            var uri = "https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}?" + queryString;

            var response = await client.GetAsync(uri);
        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}");


            URI uri = builder.build();
            HttpGet request = new HttpGet(uri);
            request.setHeader("X-Request-ID", "");
            request.setHeader("Digest", "");
            request.setHeader("Signature", "");
            request.setHeader("TPP-Signature-Certificate", "");
            request.setHeader("PSU-IP-Address", "");
            request.setHeader("PSU-IP-Port", "");
            request.setHeader("PSU-Accept", "");
            request.setHeader("PSU-Accept-Charset", "");
            request.setHeader("PSU-Accept-Encoding", "");
            request.setHeader("PSU-Accept-Language", "");
            request.setHeader("PSU-User-Agent", "");
            request.setHeader("PSU-Http-Method", "");
            request.setHeader("PSU-Device-ID", "");
            request.setHeader("PSU-Geolocation", "");
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");
            request.setHeader("Authorization", "{access token}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
        };
      
        $.ajax({
            url: "https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("X-Request-ID","");
                xhrObj.setRequestHeader("Digest","");
                xhrObj.setRequestHeader("Signature","");
                xhrObj.setRequestHeader("TPP-Signature-Certificate","");
                xhrObj.setRequestHeader("PSU-IP-Address","");
                xhrObj.setRequestHeader("PSU-IP-Port","");
                xhrObj.setRequestHeader("PSU-Accept","");
                xhrObj.setRequestHeader("PSU-Accept-Charset","");
                xhrObj.setRequestHeader("PSU-Accept-Encoding","");
                xhrObj.setRequestHeader("PSU-Accept-Language","");
                xhrObj.setRequestHeader("PSU-User-Agent","");
                xhrObj.setRequestHeader("PSU-Http-Method","");
                xhrObj.setRequestHeader("PSU-Device-ID","");
                xhrObj.setRequestHeader("PSU-Geolocation","");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
                xhrObj.setRequestHeader("Authorization","{access token}");
            },
            type: "GET",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"GET"];
    // Request headers
    [_request setValue:@"" forHTTPHeaderField:@"X-Request-ID"];
    [_request setValue:@"" forHTTPHeaderField:@"Digest"];
    [_request setValue:@"" forHTTPHeaderField:@"Signature"];
    [_request setValue:@"" forHTTPHeaderField:@"TPP-Signature-Certificate"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-IP-Address"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-IP-Port"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Accept"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Accept-Charset"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Accept-Encoding"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Accept-Language"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-User-Agent"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Http-Method"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Device-ID"];
    [_request setValue:@"" forHTTPHeaderField:@"PSU-Geolocation"];
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    [_request setValue:@"{access token}" forHTTPHeaderField:@"Authorization"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'X-Request-ID' => '',
    'Digest' => '',
    'Signature' => '',
    'TPP-Signature-Certificate' => '',
    'PSU-IP-Address' => '',
    'PSU-IP-Port' => '',
    'PSU-Accept' => '',
    'PSU-Accept-Charset' => '',
    'PSU-Accept-Encoding' => '',
    'PSU-Accept-Language' => '',
    'PSU-User-Agent' => '',
    'PSU-Http-Method' => '',
    'PSU-Device-ID' => '',
    'PSU-Geolocation' => '',
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
    'Authorization' => '{access token}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_GET);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'X-Request-ID': '',
    'Digest': '',
    'Signature': '',
    'TPP-Signature-Certificate': '',
    'PSU-IP-Address': '',
    'PSU-IP-Port': '',
    'PSU-Accept': '',
    'PSU-Accept-Charset': '',
    'PSU-Accept-Encoding': '',
    'PSU-Accept-Language': '',
    'PSU-User-Agent': '',
    'PSU-Http-Method': '',
    'PSU-Device-ID': '',
    'PSU-Geolocation': '',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
    'Authorization': '{access token}',
}

params = urllib.urlencode({
})

try:
    conn = httplib.HTTPSConnection('sandbox-api-gateway.chaniabank.gr')
    conn.request("GET", "/pis/psd2/v1/{paymentConsentId}?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'X-Request-ID': '',
    'Digest': '',
    'Signature': '',
    'TPP-Signature-Certificate': '',
    'PSU-IP-Address': '',
    'PSU-IP-Port': '',
    'PSU-Accept': '',
    'PSU-Accept-Charset': '',
    'PSU-Accept-Encoding': '',
    'PSU-Accept-Language': '',
    'PSU-User-Agent': '',
    'PSU-Http-Method': '',
    'PSU-Device-ID': '',
    'PSU-Geolocation': '',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
    'Authorization': '{access token}',
}

params = urllib.parse.urlencode({
})

try:
    conn = http.client.HTTPSConnection('sandbox-api-gateway.chaniabank.gr')
    conn.request("GET", "/pis/psd2/v1/{paymentConsentId}?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('https://sandbox-api-gateway.chaniabank.gr/pis/psd2/v1/{paymentConsentId}')


request = Net::HTTP::Get.new(uri.request_uri)
# Request headers
request['X-Request-ID'] = ''
# Request headers
request['Digest'] = ''
# Request headers
request['Signature'] = ''
# Request headers
request['TPP-Signature-Certificate'] = ''
# Request headers
request['PSU-IP-Address'] = ''
# Request headers
request['PSU-IP-Port'] = ''
# Request headers
request['PSU-Accept'] = ''
# Request headers
request['PSU-Accept-Charset'] = ''
# Request headers
request['PSU-Accept-Encoding'] = ''
# Request headers
request['PSU-Accept-Language'] = ''
# Request headers
request['PSU-User-Agent'] = ''
# Request headers
request['PSU-Http-Method'] = ''
# Request headers
request['PSU-Device-ID'] = ''
# Request headers
request['PSU-Geolocation'] = ''
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request headers
request['Authorization'] = '{access token}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body