IFrame integration - Hosted card iFrame
With the hosted card iFrame you can use our hosted card page in an iFrame. This iFrame will also be used to (optionally) show 3D Secure to the customer.
Transaction initialization
In addition to the normal
initializing a card transaction
request you have to supply the details.origin parameter. Optionally you can supply a
details.redirect_parent_function parameter.
Here is a valid request body that initiates the card transaction:
{
"payment_profile": "7c23a50d-8699-431c-a82b-a78718d2b6f6",
"amount": 14,
"customer": "cbbfa6ec-fb44-4da4-94c4-d81e92fd43e6",
"customer_ip": "127.0.0.1",
"dynamic_descriptor": "orderdesc01",
"merchant_reference": "my order id",
"payment_product": "card",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/86.0.4240.198 Safari/537.36",
"details": {
"redirect_url": "https://example.com/finalize",
"origin": "https://example.com/",
"redirect_parent_function": "iframeParent"
},
"webhook_transaction_update": "https://example.com"
}
Redirect URL
When you supply a details.redirect_url the customer will be redirected (in the iFrame) to this URL.
If you do not want to show your result URL in the iFrame there are two options:
Omit the redirect_url
For an iFrame transaction it is allowed to omit the details.redirect_url from the transaction
initialization. We'll then show the payment link result page in the iFrame.
Redirect the parent
You can use the details.redirect_parent_function (alphanumeric) parameter to set a redirect
function name. When the customer is sent to a result URL we'll use Window.postMessage to pass an
object to the parent window. Allowing you to redirect the customer in the parent window.
The object we'll be passing using Window.postMessage will also contain your function name.
Example of the object (e.data in the event listener):
{
"function": "iframeParent",
"url": "https://example.com/finalize?transaction_id=9e0377c06-a9e0-43a8-9885-8799a8338b5a"
}
Example of the function necessary in the parent window:
/** iFrame event listener */
window.addEventListener('message', (e) => {
if (e.data.function === 'iframeParent') {
window.location.href = e.data.url;
}
});
Response - Show the iFrame
The transaction initiation call will result in a response. In this response, we reply with a JSON representation
of an initiated transaction. This transaction object also includes the details property, which has
been augmented with an approval_url. You will need to use the approval_url as the
iFrame src attribute.
In order to correctly display the hosted card and 3D Secure pages, we recommend a minimum size of 500px (width) * 600px (height).
Example
To see an example, take a look at the example checkout.