alt

Important information

Please be advised that there will be a scheduled downtime across our API network on November 05 and November 07, 2024. For more information, visit our platform status portal.:
- Scheduled maintenance on November 5, 2024
- Scheduled maintenance on November 7, 2024

Unzer

Enable Recurring Payments

Enable recurring payments for your transactions

Supported payment methods

The SDK allows activation of recurring payment for the following payment types:

  • Card (Credit Card and Debit Card)
  • PayPal
  • Unzer Direct Debit (secured)

Registering a credit card

For recurring card payment set the recurrenceType for your charge/authorize transaction according to your recurring use case. For more details on recurring payments for credit cards, see card use cases.

$unzer     = new UnzerSDK\Unzer('s-priv-xxxxxxxxxx');

$card = $unzer->fetchPaymentType('s-crd-9wmri5mdlqps');
$charge = new \UnzerSDK\Resources\TransactionTypes\Charge(12.99, 'EUR', RETURN_CONTROLLER_URL);
$charge->setRecurrenceType(\UnzerSDK\Constants\RecurrenceTypes::UNSCHEDULED, $card);

$unzer->performCharge($charge, $card);

Registering PayPal

icon
Note that if you want to use PayPal’s recurring or save payment data features as a merchant, you have to activate the PayPal Billing Agreements.
$unzer = new UnzerSDK\Unzer('s-priv-xxxxxxxxxx');
$paypal = $unzer->fetchPaymentType('s-ppl-9wmri5mdlqps');
$recurring = $unzer->activateRecurringPayment($paypal, 'https://your.return.url');
$unzer = new UnzerSDK\Unzer('s-priv-xxxxxxxxxx');
$paypal = $unzer->fetchPaymentType('s-ppl-9wmri5mdlqps');
$recurring = $paypal->activateRecurring('https://your.return.url');

When activating recurring, an object of type UnzerSDK\Resources\Recurring is returned which has the property redirectUrl. If this URL is not empty you need to redirect the customer to it, so they can authenticate the payment.

// Redirect to PayPal or to success depending on the state of the transaction
$redirect = !empty($recurring->getRedirectUrl());
if (!$redirect && $recurring->isSuccess()) {
  // Redirect to success page
} elseif ($redirect && $recurring->isPending()) {
  // redirect to $recurring->getRedirectUrl()
}

When the customer returns and all has been successful the method isRecurring of the payment type should return true.

$unzer = new UnzerSDK\Unzer('s-priv-xxxxxxxxxx');
$paypal  = $unzer->fetchPaymentType('s-ppl-9wmri5mdlqps');

if ($paypal->isRecurring()) {
  // handle as success
}
// else handle as failure

Arguments to Paypal::activateRecurring

ParameterTypeDescription
returnUrlstringThe URL the API leads the customer to after they finished entering payment information outside of the shop (for example, PayPal).
This needs to be set to a valid URL, no matter whether a redirect is necessary or not.
Required: true

Arguments to Unzer::activateRecurringPayment

ParameterTypeDescription
paymentTypestring or UnzerSDK\Resources\PaymentTypes\PaypalReference to the payment type to use either by ID or the object itself.
Required: true
returnUrlstringThe URL the API leads the customer to after they finished entering payment information outside of the shop (for example, PayPal).
This needs to be set to a valid URL, no matter whether a redirect is necessary or not.
Required: true

Registering Unzer Direct Debit

With Unzer Direct Debit recurring is activated automatically when a charge has been successful.