Vent venligst ...


Loading...
Teknisk Dokumentation
Hjemmesider

Recurring payments

Abonnementsbetalinger

Mange forretninger ønsker at trække penge fra et betalingskort flere gange, uden at kunden skal indtaste sine kortoplysninger igen og igen. Det kan være til månedlige abonnementer/gebyrer (f.eks. til online datingprofiler) eller mobilselskaber, hvis kundens konto automatisk tankes op, når den er i bund. Denne logik kan bruges på mange forskellige services, men er helt generelt en måde, hvorpå en forretning kan gemme kortholderens kort uden at være PCI-certificeret, som ePay er.   

Hos ePay kalder vi disse tilbagevendende betalinger for abonnementsbetalinger. Ideen bag er, at der oprettes et abonnement ved ePay. Der kan så trækkes penge flere gange over dette abonnement. Når kortholder annullerer sit abonnement ved forretningen, slettes abonnementet ved ePay.
Vigtigt: IP-adresse

Du skal tilføje din IP-adresse under API/Webservices -> Adgang på din ePay-administration, før du kan lave abonnementsbetalinger.

Abonnementets trin

En abonnementsbetaling går gennem disse fire trin:


Trin 1

Kortholder indtaster sine kortoplysninger, som godkendes af forretningens indløser (gennem ePay). Det sker i ePays betalingsvindue. Parameteren subscription skal være = 1. Så ved ePay, at transaktionen skal være et abonnement, og at kortoplysningerne skal gemmes, så der kan laves abonnementsbetalinger.

Eksempel

Bemærk! Parameteren amount kan sættes til 0, hvis der ikke skal trækkes penge ved tilmelding.

<script type="text/javascript" src="https://ssl.ditonlinebetalingssystem.dk/integration/ewindow/paymentwindow.js" charset="UTF-8"></script>
 
<script type="text/javascript">
    paymentwindow = new PaymentWindow({
        'merchantnumber': "ENTER YOUR MERCHANT NUMBER HERE",
        'amount': "10095",
        'currency': "DKK",
        'subscription': "1"
    });
</script>
 
<input type="button" onclick="javascript: paymentwindow.open()" value="Go to payment" />

Trin 2

ePay gemmer kortoplysningerne og returnerer en reference til betalingskortet til forretningen. Denne reference kaldes subscriptionid, og parameteren subscriptionid har samme værdi som referencen. Den returneres som et GET-parameter på accepturl og callbackurl. Parameterens værdi skal gemmes sammen med kundens øvrige informationer i forretningens system.

Trin 3

Når forretningen vil trække penge på kortet (f.eks. den første dag i måneden), sker følgende:

  • a. Forretningens system kalder ePays webservicefunktion authorize. Referencen subscriptionid bliver tilføjet som en parameter for at lave en betaling med betalingskortet, som er gemt ved ePay.

PHP-eksempel

<?php
    $epay_params = array();
    $epay_params['merchantnumber'] = "ENTER YOUR MERCHANT NUMBER HERE";
    $epay_params['subscriptionid'] = "ENTER THE SUBSCRIPTIONID RETURNED FROM EPAY HERE";
    $epay_params['orderid'] = "1234";
    $epay_params['amount'] = "9995";
    $epay_params['currency'] = "208";
    $epay_params['instantcapture'] = "0";
    $epay_params['fraud'] = "0";
    $epay_params['transactionid'] = "-1";
    $epay_params['pbsresponse'] = "-1";
    $epay_params['epayresponse'] = "-1";

    $client = new SoapClient('https://ssl.ditonlinebetalingssystem.dk/remote/subscription.asmx?WSDL');

    $result = $client->authorize($epay_params);

    if($result->authorizeResult == true)
    {
        $transactionid = $result->transactionid;
    }
    else
    {
        //Error - see pbsresponse and epayresponse
    }
?>
  • b. Ved en succesfuld betaling returnerer ePay en unik reference på transaktionen, som kaldes transactionid

  • c. Forretningens system hæver betalingen ved at kalde ePays betalingswebservice med parameteren transactionid. Bemærk venligst, at parameteren instantcapture kan defineres ved trin ‘a’, hvilket betyder, at dette trin kan springes over. Du må dog kun bruge instantcapture, hvis kunden modtager sin vare/service med det samme.  

PHP-eksempel

<?php 
$epay_params = array();

$epay_params['merchantnumber'] = "ENTER YOUR MERCHANT NUMBER HERE";
$epay_params['transactionid'] = "ENTER THE TRANSACTIONID HERE";
$epay_params['amount'] = "9995";
$epay_params['pbsResponse'] = "-1";
$epay_params['epayresponse'] = "-1";
$client = new SoapClient('https://ssl.ditonlinebetalingssystem.dk/remote/payment.asmx?WSDL');
$result = $client->capture($epay_params);
if($result->captureResult == true)
{
    //Capture OK
}
else
{
    //Error - see pbsResponse and epayresponse
}
?>

Trin 4

Når abonnementet skal annulleres, kalder forretningen system webservicefunktionen deletesubscription med abonnementswebservicen. Alle kortoplysninger slettes ved ePay, og der kan ikke længere foretages abonnementsbetalinger.

Når kortet udløber

Når betalingskortet udløber, skal kortholderen oprette et nyt abonnement. Det kan gøres på følgende måde:

1. Forretningens system kalder funktionen deletesubscription med abonnementswebservicen. Referencen subscriptionid tilføjes som et parameter for at fortælle ePays system, hvilket abonnement der skal slettes. 

2. Forretningens system sletter referencen til abonnementet i sit eget system. 

3. Forretningens system skal så bede kortholder om at genindtaste sine kortoplysninger i ePays betalingsvindue. Derefter gentages trin 1 i sektionen ovenfor.