Readiness check
- 1 Your integration
- 2 Details
- 3 What to do
- 4 Test and go live
How is your shop integrated with Unzer?
Not sure which integration you have?
Check with your development team, or look at how your checkout redirects for card payments today. 3-D Secure works the same way.
If you still cannot tell, contact support@unzer.com.
Which plugin are you using?
Where do I find my plugin version?
Which version of the Unzer Shopware 6 plugin are you running?
Which version of the Unzer Magento 2 plugin are you running?
Which version of the Unzer JTL 5 plugin are you running?
Which Payment Page version are you using?
No action needed
Nothing to do, you are CCD2 ready
No action needed
Nothing to do, you are CCD2 ready
No action needed
Nothing to do, you are CCD2 ready
Action needed
Update your plugin
Your current version does not support the new authentication flow. Move to a supported version below, then test the flow.
| Plugin | Supported versions | Not supported |
|---|---|---|
| Shopify | All versions | - |
| Shopware 6 | 7.0.0 to 7.1.9 | 7.1.10, 7.1.11 and older pre-7.x lines |
| Magento 2 | 4.0.0 and above | 3.2.x and earlier |
| Oxid 6 | All versions | - |
| Oxid 7 | All versions | - |
| Plentymarkets | All versions | - |
| PrestaShop | All versions | - |
| Payment Pages (UPP) | All versions | Legacy Payment Page v1 |
| JTL 5 | 2.0.4 and above | All versions before 2.0.4 |
| WooCommerce | None currently whitelisted | All versions, including 2.1.4 |
Find the install and upgrade steps for your system in the plugin documentation.
Action needed
No supported plugin for your shop system yet
Shopware 5, Drupal, Ecwid, Gambio, Modified eCommerce, nopCommerce, Opencart, osCommerce and Sylius will not support the new authentication flow.
You have two ways forward:
- Move to a shop system with a supported Unzer plugin. See the plugin documentation.
- Integrate against the Unzer API directly and handle the redirect and status flow yourself.
Action needed
Add the redirect and status flow to your PAPI integration
You need to support a redirect step and a status check, the same way you already do for 3-D Secure on cards.
1. Send a returnUrl in your authorize request. This is where Unzer sends the customer once verification is complete.
{
"returnUrl": "https://www.your-shop.com/checkout/redirect"
}
2. Handle a pending response. When the risk engine requires verification, the authorize response includes isPending: true and a redirectUrl.
{
"isSuccess": false,
"isPending": true,
"isError": false,
"redirectUrl": "https://sandbox.unzer.com/verify?paymentId=s-pay-124"
}
3. Redirect the customer to redirectUrl. Unzer hosts and displays the verification screen, whichever method the risk engine picked. There is no method-specific UI for you to build.
4. Confirm the final result. After the customer returns to your returnUrl, call GET /v1/payments/{paymentId}. Instead of polling you can subscribe to webhook notifications and be told directly when the final status is available.
Full reference: Accept Unzer Invoice, server-side-only integration.
Action needed
Add the redirect and status flow to your Payolution integration
You need to send a response URL and handle the redirect Unzer returns.
1. Send your response URL in the original PREAUTH request.
<Request version="1.0">
<Transaction>
<Frontend>
<ResponseUrl>https://myshop.de/response.php</ResponseUrl>
</Frontend>
</Transaction>
</Request>
On the POST interface, use FRONTEND.RESPONSE_URL=https://myshop.de/response.php.
2. Redirect the customer when you receive a PENDING response.
<Response>
<Transaction>
<Processing result="PENDING" code="..." />
<Redirect url="http://paylater-mfa.test.unzer.io/..."/>
</Transaction>
</Response>
On the POST interface, the redirect target arrives in PROCESSING.REDIRECT_URL.
3. Query the final status. This check always uses the XML interface, even if you authorise over POST.
- Test:
POST https://test-gateway.payolution.com/ctpe/query - Production:
POST https://gateway.payolution.com/ctpe/query
Full reference: Payolution API documentation.
The pending response above is illustrative. Check it against the full Payolution API documentation before you build.
Legacy Payolution plugins are being retired
For information
Unzer will contact you about the new in-store product
Unzer is introducing UnzerOne Instore, a new in-store BNPL experience with the additional verification step built in from the start.
There is nothing for you to do right now. Unzer will reach out by 20 August to offer the new product. Once you are on UnzerOne Instore you are CCD2 ready.
Action needed
Your PSP partner needs to extend their integration
For information
How to test
These steps are the same whether you integrate via PAPI, the Payolution API, or a supported plugin.
Turn on test risk checks first. Unlike production, the test environment does not run real risk checks by default, so the verification step will not trigger on its own. Contact Unzer via the test-channel mailbox to have your channel activated. The test data below only works once that is done. Tell Unzer again when you have finished so the test risk checks can be switched off.
You only need to test the SMS one-time code flow. If your integration handles that redirect and status check correctly, the other methods behave the same way on Unzer’s side.
Cover three scenarios:
- Accepted. Use the test email with the test phone number and code below. The transaction should complete.
- Declined. Use the test email with any other phone number and the same code. The transaction should come back declined.
- Abandoned. Start verification, then either leave without finishing or navigate back. If the customer abandons it, the transaction should reach a final state within 20 minutes and you get a webhook notification. If they navigate back, the order should be cancelled immediately on both sides.
| Test trigger | Value |
|---|---|
| Test customer email (PAPI flow) | testing_2fa_sms@unzer.com |
| Test phone number | +49 15228817001 |
| SMS code, accepted authorisation | 999999 |
Any other phone number with code 999999 | Simulates a declined authorisation |
Full test data: test data reference.
For information
Going live
Go-live can happen at any point from now on, and all channels are monitored afterwards. Where you stand depends on your integration.
| Environment or integration | Status |
|---|---|
| Test | Not enabled by default. Request test risk-check activation first. |
| Production, plugins that support the flow | Enabled |
| Production, newly onboarded merchants | Activated automatically, under monitoring. Unzer support will contact you if your integration does not handle the flow correctly. |
| Production, PAPI server-side-only and Payolution PayOn Wrapper | Deactivated by default. Once you have tested successfully, ask Unzer to activate it for your channel. |
If you run a PAPI server-side-only integration or the Payolution PayOn Wrapper, request activation once your testing is done.
Request activation for your channel
No action needed
That is everything
Once Unzer activates your channel, the additional verification step goes live under monitoring. If your integration does not handle it correctly, Unzer support will contact you.
Questions about anything here? Contact support@unzer.com.
