Accepting Payments: Secure Card Capture Key
Accepting Payments: Secure Card Capture Key
Overview
Checkout can be used in several different ways to start accepting payments. These solutions share the same Checkout APIs and have a lot in
common in terms of integration. You can find the integration paths on this page.
To generate checkout links via Checkout API, you will need a Verifone Central user with one of the following roles assigned to it:
Merchant Supervisor
Merchant Cashier
Requirements
In order to start accepting eCommerce transactions, you will need to generate a Secure Card Capture Key.
Iframe
Iframe allows for merchants to display a payment form component as part of their own website, without having to redirect the shopper. The
form is still securely hosted by Verifone, so there is no additional PCI scope required for the merchant with this solution.
Required fields
To configure Checkout for accepting payments, the following fields are required:
entity_id - This value can be found in the Verifone Central portal or provided to you by a Verifone employee.
To obtain the entity_id value from Verifone Central, go to Administration > Organizations > [Organization] > Organization ID value.
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023
1
currency_code
amount
configurations - Object with one or more payment method configurations.
A privacy policy link in the HPP, IFRAME, PBL will be visible in case a PPC used is set up with Intercard acquirer.
notification_methods - This parameter is used for the PAYMENT_LINK interaction type in order to specify the payment link
delivery method.
email
sms
display_line_items - Indicates whether line items should be displayed on the page. Defaults to true.
line_items - List of shopping cart items, to be displayed on the page. Read Line items for details.
theme_id - The parameter that was created within the theming API call that applies the customizations upon the checkout interface.
Read Theming for details.
receipt_type - This parameter can be used to send different invoices to the customer.
INVOICE - requires line_items to be specified in Israel
FULL_RECEIPT - requires line_items to be specified in Israel
SIMPLE_RECEIPT
INVOICE_RECEIPT
Creating a Checkout
HPP
Iframe
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023
2
Here is an example body creating a Checkout to be used as a Hosted Payments Page (default interaction_type).
{
"amount": 74.55,
"currency_code": "EUR",
"entity_id": "{{entity_id}}",
"configurations": {
"{{payment_method}}": {
// varies per payment_method
}
},
"merchant_reference": "SNKRS-7001",
"return_url": "https://merchantwebsite.com/order/1234",
"interaction_type": "HPP" // also default value
}
The response for creating the Checkout will look like this.
{
"id": "38615263-ed67-4774-bddd-7407edc0b700",
"url": "{{host}}/v2/checkout/38615263-ed67-4774-bddd-7407edc0b700/view"
}
{
"amount": 74.55,
"currency_code": "EUR",
"entity_id": "{{entity_id}}",
"configurations": {
"{{payment_method}}": {
// varies per payment_method
}
},
"merchant_reference": "SNKRS-7001",
"return_url": "{{merchant_return_url}}",
"interaction_type": "IFRAME"
}
The response for creating the checkout will look like this.
{
"id": "38615263-ed67-4774-bddd-7407edc0b700",
"url": "{{host}}/v2/loader.js?checkoutId=38615263-ed67-4774-bddd-7407edc0b700"
}
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023
3
In the card field, a digits limitation has been set based on the active payment methods configured on the Payment Provider Contract.
HPP
Iframe
Redirect the shopper to the URL received as a response to creating a Checkout. They will see a ready-to-use payment page, displaying a
summary of the payment details and the option to do a payment.
The URL from the response above can be used to place a <script> tag as direct child of an HTML element where the Iframe should be
displayed. This way, the script would automatically render the payment form in the same place of the HTML document as it is included.
<html>
<head>
...
</head>
<body>
...
<div id="payment_form_container">
<script defer src="{{host}}/v2/loader.js?checkoutId=38615263-ed67-4774-bddd-7407edc0b700"></script>
</div>
</body>
</html>
The script can also be included anywhere in the merchant's HTML, as long as there is a containerId query parameter provided pointing to the
ID of the parent HTML element in which the form should be displayed. So, if the desired parent element is a <div> with id
"payment_form_container", this can look like:
<html>
<head>
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023
4
...
<script defer src="{{host}}/v2/loader.js?checkoutId=38615263-ed67-4774-bddd-
7407edc0b700&containerId=payment_form_container"></script>
</head>
<body>
...
<div id="payment_form_container">
</div>
</body>
</html>
If a return_url is specified by the merchant when creating a Checkout, the customer will be redirected to the return_url after the
confirmation page. Depending on the result, the redirection would include transaction_id if a transaction is created and/or error_code if an
error has occurred.
The redirection URL for a successful transaction would look like this:
https://merchantwebsite.com/order/1234?transaction_id={transaction_id}&checkout_id={checkout_id}
Both success and failure Checkout outcomes result in the customer being redirected to the confirmation page/ failed payment page. If a
return_url is used, the customer will be redirected to that specific page afterwards.
Note: The return_url you have provided needs to link the Checkout ID with the order on your system, to be able to reliably handle the
response.
Example:
Note: To ensure that the redirection request was not tampered with, always check that the transaction_id received as a query parameter
in the redirection matches the transaction_id property of the retrieved Checkout. If those are not matching, this is an indication of either
an incorrect integration, that the redirection to your return_url did not originate from Verifone, or the transaction_id was tampered
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023
5
with.
You can now store the transaction_id value together with the order 1234 in your system to link the two together
Read Checkout
To determine the outcome of the Checkout, the merchant should query the checkout by doing a Server-to-Server call to GET
/v2/checkout/{checkout_id}. In the response, they would find the events field.
[
...
{
"type": "TRANSACTION_SUCCESS",
"id": "f2041250-4fc2-4b3a-bc94-651ba099541a",
"timestamp": "2020-07-08T12:42:37.974Z",
"details": {
// varies per payment method
}
}
...
]
[
...
{
"type": "TRANSACTION_FAILED",
"id": "f2041250-4fc2-4b3a-bc94-651ba099541a",
"timestamp": "2020-07-08T12:42:37.974Z",
"details": {
// varies per payment method
}
}
...
]
The exact list of event types and the keys in the details object vary per payment method.
Next steps
Card payments
Card payments with 3-D Secure
Alternative payment methods
Theming
https://verifone.cloud/docs/online-payments/checkout/accepting-payments
Updated: 19-Jul-2023