Share
Explore

icon picker
Total Processing +Open Banking

Documentation to outline the api integration for Open Banking.

Introduction

In its commitment to facilitating streamlined open banking payments, Total Processing has joined forces with Token.io, a renowned specialist in open banking technology within Europe. This integration capitalizes on Token.io's established infrastructure, simplifying the overall process and aligning it with conventional payment integration experiences.
The technical aspect of this partnership involves an asynchronous server-to-server REST API flow. A notable advantage of this integration is that it exempts our clients from handling sensitive banking details directly, thereby positioning the procedure outside the purview of PCI compliance requirements.

Requirements

KYC and approval must be completed with to use the service.
Before the gateway set up with total processing can be finalised, you will need to provide the below information to our support team.
Domicile Country
Website address
MCC Code
Logo ( logo must be of good quality with a clear background)
Settlement Bank account details

DB (Debit)

The only ‘paymentType’ accepted at this current stage is DB(Debit), This allows for an instant transfer of funds from the customers bank account to your merchant bank account.

RF (Refunds)

Note at this time, refunds and payouts are not supported by this solution, If a refund is requested then the funds will need to be returned by another means.

Authorization Currencies

GBP, EUR

Regions

Open Banking are available across the UK and Europe, please advise which regions you wish to process within.

Mandatory Parameters

Field Name
Description
Required Format
1
paymentBrand
Set as : ACI_INSTANTPAY
AN32 [a-zA-Z0-9_] {1,32}
2
bankAccount.country
Customers origin bank country
ISO Alphanumeric 2 digit code
3
amount
Amount to pay for the product of service
N10.N2[0-9]{1,10}(\.[0-9]{2})
4
currency
Payment Currency
A3 [A-Z]{3}
5
paymentType
Set to ‘DB’
A2
6
shopperResultURL
Redirect endpoint to send the customer too after they complete their Open banking journey.
AN2048 [\s\S]{6,2048}
There are no rows in this table

Asynchronous Workflow

In an asynchronous workflow a redirection takes place to allow the account holder to complete/verify the payment. After this the account holder is redirected back to the shopperResultUrl and the status of the payment can be queried.
icons8-one1.png
Send payment Request
icons8-twp.png
Redirect to the Open banking platform
icons8-three.png
Get Payment status
Send payment intent to the gateway with the required parameters and any additional parameters that you wish to be passed through the transaction cycle. Redirect Information will be returned in the response.
Redirect the shopper to the url provided, using the a GET request. Customer will be taken through the open banking

Once the customer has completed their their payment, the system will redirect to the shopperResultUrl where you can request the payment status of the transaction

1. Send Payment Request

The first step is to send a server-to-server initial payment request with the paymentBrand and shopperResultUrl. The shopperResultUrl must be url-encoded.
testMode=EXTERNAL : should be passed when hitting the test UAT endpoint ‘https://eu-test.oppwa.com/v1/payments’, this informs the system the to redirect to the external Token Test system.
Search
Curl
C#
Groovy
Java
Node.js
Python
PHP
Ruby
Scala
vb.net
Curl
Example Code block

curl https://eu-test.oppwa.com/v1/payments \
-d "entityId=8ac7a4ca88fd9b770188fdb188910016" \
-d "amount=10.00" \
-d "currency=GBP" \
-d "paymentType=DB" \
-d "paymentBrand=ACI_INSTANTPAY" \
-d "merchantTransactionId=Merchant Internal transaction ID" \
-d "testMode=EXTERNAL" \
-d "bankAccount.country=GB" \
-d "shopperResultUrl=https://totalprocessing.docs.oppwa.com/tutorials/server-to-server" \
bankAccount.country=GB
-H "Authorization: Bearer OGFjN2E0Y2E4OGZkOWI3NzAxODhmZGFjZjUyOTAwMGN8UndINEJzZG1TNA=="


Copy Code Block

2. Redirect to the Open banking platform

The next step is to redirect the account holder. To do this you must parse the redirect object, that contains a url and a method, for this connection it will be consistently a GET request and no additional parameters will been to be passed. This behaviour may differ from other payment brands.

Example Response
"id": ""
"paymentType": "DB"
"paymentBrand": "ACI_INSTANTPAY"
"amount": "10.00"
"currency": "GBP"
"descriptor": "Open Banking Test channel "
"result":
"code": "000.200.000"
"description": "transaction pending"
}
"resultDetails":
"ExtendedDescription": "Request created, operation in progress."
"ConnectorTxID2": ""
"AcquirerResponse": "PENDING"
}
"bankAccount":
"country": "GB"
}
"redirect":
"url": "https://web-app.sandbox.token.io/app/request-token/rq:*****************"
"method": "GET"
"parameters": []
}
"buildNumber": ""
"timestamp": ""
"ndc": ""


Customer will be redirected to the infostructure where they will select, connect and pay direct from their bank account.

Payments can be completed on desktop or Mobile, though the design and infrastructure is optimized for mobile first, this also allows for easy access to banking apps.

Screenshot 2023-10-11 at 13.58.50.png

3. Get Payment Status

Once the payment has been processed, the customer is redirected to your shopperResultUrl along with a GET parameter resourcePath.
IMPORTANT: The baseUrl must end in a "/", e.g. "https://eu-test.oppwa.com/".
To get the status of the payment, you should make a GET request to the baseUrl + resourcePath, including your authentication parameters.
Example for a resourcePath:
resourcePath=/v1/payments/{id}
id = will be the id returned in after the initial payment intent in stage 1
Search
Curl
C#
Groovy
Java
Node.js
Python
PHP
Ruby
Scala
vb.net
Curl
Example Code Block
curl -G https://eu-test.oppwa.com/v1/payments/{id} \
-d "entityId=8ac7a4ca88fd9b770188fdb188910016" \
-H "Authorization: Bearer OGFjN2E0Y2E4OGZkOWI3NzAxODhmZGFjZjUyOTAwMGN8UndINEJzZG1TNA=="


Copy Code Block
Example Response
{
type: "PAYMENT",
payload: {
id: "",
ndc: "",
risk: {
score: ""
},
amount: "10.00",
result: {
code: "000.100.112",
description: "Request successfully processed in 'Merchant in Connector Test Mode'",
randomField1184162296: "Please allow for new unexpected fields to be added"
},
source: "OPP",
shortId: "",
currency: "GBP",
redirect: {
url: "",
parameters: []
},
timestamp: "",
descriptor: "",
bankAccount: {
country: "GB"
},
channelName: "Open Banking Test channel",
paymentType: "DB",
paymentBrand: "ACI_INSTANTPAY",
paymentMethod: "DD",
resultDetails: {
ConnectorTxID1: "",
ConnectorTxID2: "",
AcquirerResponse: "SUCCESS",
ExtendedDescription: "Operation completed successfully.",
"Transfer Transaction Id": ""
},
authentication: {
entityId: "8ac7a4ca88fd9b770188fdb188910016"
},
customParameters: {
"ACI_INSTANTPAY.COUNTRY": "GB"
},
merchantAccountId: "",
presentationAmount: "10.00",
presentationCurrency: "GBP"
}
}

Test Credentials


The below Entity ID and access token can be used in UAT, but to view transactions within your dashboard. Please request an individual sandbox account from our support team.
Entity Id : 8ac7a4ca88fd9b770188fdb188910016
Access Token : OGFjN2E0Y2E4OGZkOWI3NzAxODhmZGFjZjUyOTAwMGN8UndINEJzZG1TNA==
Test Bank :
After you have been redirected, the bank Ozone modelo Bank can be used to make test payments in UAT
Username: mits
Password: mits

Branding

The Payment button and branding is down to the individual merchant, though the most common forms of branding are ‘Pay by Bank’ or ‘Bank to Bank Transfer’

Example Open banking Page Styling

Screenshot 2023-10-25 at 13.20.17.png






Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.