TargetPay

Paysafecard Documentatie

1. Algemeen
In dit document staat beschreven hoe u een Paysafecard betaling afhandelt via TargetPay door gebruik te maken van onze API (technische koppeling). Om hiermee aan de slag te kunnen heeft u technische kennis nodig. Heeft u zelf geen technische kennis en ook geen programmeur om u hiermee te helpen, kijk dan bij de kant-en-klaar modules.

1.1 Opmerking vooraf
Om de integratie voor u gemakkelijk te maken hebben we onderaan deze pagina een PHP voorbeeld geplaatst.

1.2 Werking van de API in een notedop
Afrekenen met Paysafecard werkt als volgt:
  1. U roept bij TargetPay een URL aan met alle kenmerken van de betaling, TargetPay retourneert een link naar de afrekenpagina waar uw bezoeker af zal rekenen (zie paragraaf 2);
  2. Na betaling wordt de bezoeker teruggestuurd naar uw site (zie paragraaf 3);
  3. U controleert bij ons of de betaling succesvol is geweest (zie paragraaf 4);
  4. Bij een succesvolle betaling levert u de gekozen dienst aan uw bezoeker.

1.3 E-mail notificaties
Het is mogelijk om van iedere succesvolle iDEAL betaling een E-mail notificatie te ontvangen. Hiervoor gaat u naar het scherm Subaccounts/Layouts en wijzig daar de betreffende layoutcode. Onderin het scherm kunt u het E-mail adres en de betaalvorm aangeven waarvan u de notificaties wilt ontvangen.
LET OP, controleer ook de orderdetails indien u een E-mail ontvangt.

2. Opvragen link naar betaalpagina
2.1 Aanroep

U kunt een transactie starten door een aanroep te doen via HTTP GET of POST naar:

https://www.targetpay.com/paysafecard/start

Met de volgende parameters:

Variabele Naam Formaat Voorbeeld Verplicht
rtloLayoutcodeNumeriek12345Ja
descriptionOmschrijvingAlfanumeriek300 creditsJa
amountBedrag in centen (150 = 1,50)Alfanumeriek150Ja
useripIP adres van uw bezoekerAlfanumeriek123.45.122.89Ja
returnurlReturn URLAlfanumeriekhttp://mijnsite.nl/bedankt.phpJa
reporturlRapporteer naar URL URLAlfanumeriekhttp://mijnsite.nl/report.phpNee

Toelichting per variabele:
  • rtlo
    De layoutcode waarop de betaling geboekt moet worden. Zie subaccounts.

  • description
    Duidelijke omschrijving van de te leveren dienst. Alleen letters of cijfers, maximaal 32 tekens.

  • amount
    Het in rekening te brengen bedrag in centen. Het bedrag moet liggen tussen de 10 eurocent (vul 10 in!) en 150 euro (vul 15000 in!). Het is alleen mogelijk om hier Euro's in te voeren. Paysafecard ondersteunt alle Europese valuta en Australische dollars. Indien een consument een Paysafecard gebruikt die in een andere valuta is aangekocht, dan wordt de wisselkoers van Paysafecard aangehouden.

  • returnurl
    De URL waarnaar de bezoeker moet worden verwezen na betaling (zie kopje 3).

  • reporturl
    Als u deze invult, dan roepen we deze URL aan op uw server, na een succesvolle betaling bij Paysafecard. Dit gebeurt ook als uw klant niet op de knop 'Verder klikte...'. Aan uw URL voegen we 2 parameters toe: trxid met daarin het bestelnummer en amount met daarin het afgerekende bedrag in centen. De reporturl wordt aangeroepen met een HTTP POST request. Als uw report URL 'www.test.nl/report' is dan roepen we bijvoorbeeld aan: http://www.test.nl/report?trxid=13377159&amount=1000. Let op: verwar de reporturl niet met de returnurl. Uw bezoeker krijgt de reporturl nooit te zien, dit gebeurt 'onder water'.

2.2 Resultaatcode's
Als de overboeking met succes klaargezet is, ontvangt u een resultaat in de vorm:

000000 xxxxxx|yyyyyy
  • xxxxxx : Het transactie ID van 8 tekens (nodig voor het opvragen van de status van de transactie);
  • yyyyyy : URL waarnaar u de bezoeker kunt doorverwijzen;
Voorbeeld:

000000 15641569|https://www.targetpay.com/paysafecard/start?trxid=15641569

U kunt uw bezoeker nu redirecten naar de teruggegeven URL, bijv. met een HTTP 302 response.

Als er een fout is opgetreden, dan wordt een van de volgende foutcodes geretourneerd:

TP0001 No layoutcode specified
TP0002 Amount too low
TP0003 Amount too high
TP0004 Invalid or no return URL
TP0006 No description given
TP0007 Invalid or no country
TP0008 Country not supported for Paysafecard
TP0009 Invalid or no user IP given


Controleer in geval van fouten of de parameters goed zijn overgenomen uit de documentatie. Als dit het geval lijkt te zijn. Neem dan contact op met TargetPay, vermeldt de aanroep en de foutmelding.


3. Klant wordt doorverwezen
Als uw klant klaar is met afrekenen bij Paysafecard óf wanneer hij op 'annuleren' klikt tijdens dit proces, wordt hij automatisch doorverwezen naar uw site, namelijk naar de opgegeven return URL. Daarbij wordt door Paysafecard als extra parameter 'ShoppingCartID' meegegeven, welke het transactie ID bevat (trxid). Dit is gelijk aan het transactie ID van de vorige stap.
Let op hoofd- en kleine letters in de variabele-naam ShoppingCartID. In PHP bijvoorbeeld zijn variabele-namen standaard hoofdlettergevoelig!


4. Status opvragen
4.1 Aanroep
U kunt nu met een aanroep naar TargetPay opvragen of de betaling afgerond is:

https://www.targetpay.com/paysafecard/check

Met de volgende parameters:

Variabele Naam Formaat Verplicht
rtloLayoutcodeNumeriekJa
trxidTransactie IDNumeriekJa
once'Reeds ingewisseld' melding?0 of 1Ja
testTestmode0 of 1Nee

Toelichting per variabele:
  • rtlo
    Layoutcode (zelfde waarde als meegegeven onder 5.1)

  • trxid
    Transactie ID, geretourneerd als ShoppingCartID in de returnurl (8 tekens, zie kopje 3)

  • once
    Als u voor once '1' invult dan zal slechts 1x een OK status teruggegeven worden. Als de bovenstaande URL nog een keer wordt aangeroepen voor hetzelfde Transactie ID dan krijgt u een foutmelding TP00014 (Reeds ingewisseld) terug en de datum/tijd waarop deze voor het eerst ingewisseld was.
    Als u voor once '0' invult dan zal steeds een OK status terug blijven komen.
    Vul bij twijfel 1 in, zo weet u zeker dat een dienst niet meerdere malen geleverd wordt als de bezoeker op Refresh/F5 zou drukken.

  • test
    Vul hier 1 in en de transactie wordt ook als OK aangemerkt als deze nog niet betaald is. Alle andere checks worden wel net als normaal doorlopen.


4.2 Resultaatcode's
Als de betaling met succes afgerond is, ontvangt u als antwoord:

000000 OK

Als de betaling nog niet is afgerond of de transactie is niet bekend:

TP0010 Transaction not finished, try again later
TP0011 Transaction cancelled by user
TP0012 Transaction not finished and expired
TP0014 Already redeemed at YYYY-MM-DD HH:MM:SS
TP0020 No layoutcode given
TP0021 No transaction ID given
TP0022 No transaction with this ID
TP0023 Layoutcode doesn't match transaction

5. Voorbeelden
5.1 Paysafecard voorbeeld.
Het onderstaande voorbeeld kunt u kopiëren in een bestand PaysafecardExample.php en uploaden naar uw server. U hoeft alleen de parameters bovenin het bestand in te stellen om een transacties te doen. Als u dit script wilt koppelen met een webwinkel kunt u zelf programmacode toevoegen in de functies StartTransaction, HandleReporturl en bij het resultaat van de returnurl.
<?php
$rtlo=xxxxx;
$description="Paysafecard Voorbeeld";
$amount=100;
$returnurl="http://uwsite.nl/PaysafecardExample.php";
$reporturl="http://uwsite.nl/PaysafecardExample.php";

// De returnurl wordt aangeroepen. We moeten de status controleren
if( isset($_GET['ShoppingCartID'])){
  // 000000 OK Betekent succesvol. We kunnen het product leveren
  if( ($status = CheckReturnurl( $rtlo,  $_GET['ShoppingCartID'] )) == "000000 OK" ){
    // Zet uw orderinformatie op succesvol
    die( "Status was Successful...<br>Thank you for your order" );
  }
  // In de overige gevallen niet leveren.
  else die( $status );
} 
// De reporturl wordt aangeroepen vanaf de targetpay server
elseif ( isset($_POST['trxid']) && isset($_POST['amount']) ){

  HandleReporturl( $_POST['trxid'], $_POST['amount'] );
} else{
  // Hier starten we met een redirect naar Paysafecard
  $redirecturl = StartTransaction( $rtlo, $description, $amount, $returnurl, $reporturl );
  header ("Location: ".$redirecturl);
  die();
}

// Opvragen redirecturl met transactienummer
function StartTransaction( $rtlo, $description,  $amount, $returnurl, $reporturl){
  $url= "https://www.targetpay.com/paysafecard/start?".
  "rtlo=".$rtlo.
  "&description=".urlencode(substr($description,0,32)).
  "&amount=".$amount.
  "&userip=".urlencode($_SERVER['REMOTE_ADDR']).
  "&returnurl=".urlencode($returnurl).
  "&reporturl=".urlencode($reporturl);
	
  $strResponse = httpGetRequest($url);
  $aResponse = explode('|', $strResponse );
  # Bad response
  if ( !isset ( $aResponse[1] ) ) die('Error' . $aResponse[0] );
 
  $responsetype = explode ( ' ', $aResponse[0] );

  $trxid = $responsetype[1];
  // Hier kunt u het transactienummer toevoegen aan uw order
    
  if( $responsetype[0] == "000000" ) return $aResponse[1];
  else die($aResponse[0]);
}

// Statusverzoek in de returnurl
function CheckReturnurl($rtlo, $trxid){
  $once=1;
  $test=0; // Set to 1 for testing as described in paragraph 1.3 
  $url= "https://www.targetpay.com/paysafecard/check?".
  "rtlo=".$rtlo.
  "&trxid=".$trxid.
  "&once=".$once.
  "&test=".$test;
  return httpGetRequest($url);
}

// reporturl handler. Werk uw orderstatus bij naar succesvol. 
// Deze aanroep komt van Targetpay. 
// De consument heeft hier geen verbinding meer
function HandleReporturl($trxid, $amount ){
  if( substr($_SERVER['REMOTE_ADDR'],0,10) == "89.184.168" ||
  
substr($_SERVER['REMOTE_ADDR'],0,9) == "78.152.58"
 ){
    // Werk hier uw status bij naar Succesvol.
    //reporturl hoort OK terug te geven naar Targetpay.
    die( "OK" );
  }else{
    die("IP address not correct... This call is not from Targetpay");
  }
}

function httpGetRequest($url){
  $ch = curl_init( $url );
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
  $strResponse = curl_exec($ch);
  curl_close($ch);
  if ( $strResponse === false ) 
    die("Could not fetch response " . $url );	
  return $strResponse;
}
?>