2.3 Datahåndtering (Secure Capture)
Efter kunden har tastet data fra securetunnel.asp laves et kald (POST) til securecapture.asp, som håndterer medsendte variabler.
POST request sendt til: https://pay.dandomain.dk/securecapture.asp tager følgende parametre:
|
Parameter
|
Beskrivelse
|
|
MerchantNumber (krævet)
|
Merchantnummer tildelt af PBS
|
|
Amount (krævet)
|
Beløb som hæves. Bemærk, decimal separatoren er altid , (komma)
|
|
OrderID (krævet)
|
Butikkens ID nr. for ordren
|
|
CurrencyID (krævet)
|
Valutakode (ISO4217) 208 for DKK er default
|
|
CardNumber (krævet)
|
Kreditkortnummer
|
|
CardCVC (krævet)
|
Kontrolcifre
|
|
ExpireMonth (krævet)
|
Kreditkort udløbsmåned (Krævet - længde:2)
|
|
ExpireYear (krævet)
|
Kreditkort udløbsår (Krævet - længde:2)
|
|
OKURL (Valgfri)
|
En godkendt transaktion viderestilles hertil.
Følgende parametre tilføjes:
transact(transaktionsnr)
orderid(transaktionens ordreid)
Disse parametre medsendes også:
CardType= Visa (korttypen)
Attempts= 3 (antal forsøg på at gennemføre betaling i denne session)
Attempts FromIPToday=6 (antal forsøg fra denne ip adresse idag)
Hvis man kører 3D secure: 3DLiabilityshift=1 (0 = nej, 1= ja)
Tager prioritet over OKURL angivet i administrationen
|
|
FAILURL (Valgfri)
|
Ved afvist transaktion viderestilles hertil.
Desuden tilføjes parameteren errorcode(fejlkode).
Tager prioritet over FAILURL angivet i administrationen
|
|
SessionID (Valgfri)
|
SessionID
|
|
OKStatusURL (Valgfri)
|
Der foretages et skjult http kald til adressen, hvis transaktionen godkendes.
Desuden tilføjes parametrerne transact(transaktionsnummeret) samt orderid(transaktionens ordreid)
|
|
FAILStatusURL (Valgfri)
|
Der foretages et skjult http kald til adressen, hvis transaktionen afvises.
Desuden tilføjes parameteren errorcode(fejlkode).
Tager prioritet over FAILURL angivet i administrationen
|
|
Port
|
Kan angives på OKStatusUrl og FailStatusUrl.
fx. <input type="hidden" name="port" value="8080">
vil denne blive brugt både på OKStatusUrl og FailStatusUrl.
Denne kan med fordel benyttes til integrering med eksterne systemer. Også selvom server for modtagelse af status kaldene bruger anden port end standard port 80
|
|
ReferenceText
|
I ReferenceText er det muligt at angive en referencetext til eget brug. Denne medtages på E-mailen der sendes fra Betalingssystemet ved gennemførsel af en transaktion. (Valgfri)
|
|
PayType (Valgfri)
|
Kan tage følgende værdier:
0 = Normal kreditkort (Default)
1 = eDankort
2 = 3D Secure
10 = eWire
|
|
PostingID
KeyLabel
SigISO9796
AuthLifeCycle
|
Signaturfelter som bruges til eDankort. Alle felter skal med og skal afspejle data modtaget fra banken. (Vigtig: linierne skal med som det står her)
|
|
Checksum
|
Angivelse af sikkerhedsnøgle for MD5 kryptering.
CheckSum er resultatet af:
I asp vil det se således ud:
CheckSum = md5(OrderID & "+" & Amount & "+" & ChecksumSecretKey & "+" & CurrencyID)
I PHP vil det se således ud:
$CheckSum = md5($OrderID."+".$Amount."+".$ChecksumSecretKey."+".$CurrencyID);
Hvis variablerne indeholder følgende: OrderID=100 Amount=100,50 ChecksumSecretKey=key
så det bliver en streng der hedder 100+100,50+key+208 som man så md5'er og gemmer i variablen CheckSum
Brug af MD5 checksum skal sikrer mod svindel, da transaktioner der ikke opfylder Checksum specifikationer afvises
kode for post: <input type="hidden" name="checksum" value="info fra ChecksumCalced">
|
|
InstantCapture
|
Betyder, at der foretages øjeblikkelig hævning af transaktionen lige efter autorisation.
eksempel på instantcapture felt: <input type="hidden" name="instantcapture" value="1">
|
|
CardTypeID
|
Mulighed for at sende flere parametre for hvilke korttyper der kan benyttes. Se liste over korttyper: 3.3 Korttyper
SecureCapture.asp kaldes med følgende for kontrol af korttyper:
https://pay.dandomain.dk/SecureCapture.asp?CardTypeID=1,2,3,4
Her begrænses betalingen til typerne: Dankort, Visa, Mastercard og Visa / Dankort
|
|
TestMode (Valgfri)
|
Hvis parameteren medtages og sættes = 1 kører systemet i testmode. Dvs. at det er muligt at teste implementeringen op mod betalingsserveren, uden at der foretages nogen form for rigtig registrering.
For at simulere en betaling kan der testes med følgende kortnr.:
1111111111111111 = Godkendt kort
2222222222222222 = Afvist transaktion
Bemærk! Der genereres ikke nogen rigtig transaktion - dvs. at transaktionen ikke kan ses i administrationsmodulet.
Bemærk: Da der er tale om en test implementering, vil der ikke blive trukket informationer fra betalingssystem administrationen for OkUrl og FailUrl eksempelvis. Disse kan dog sættes ind i html formularen istedet. MerchantNumber SKAL sendes med som et POST request hvis testmode != 1 ellers vil man få fejlen "KUN POST requests tillades!!"
<input type="hidden" name="TestMode" value="1">
|
Specielt for oprettelse af abonnementsbetalinger (kræver specialaftale med PBS!)
I tillæg til ovenstående, kan der angives om nye transaktioner skal oprettes som abonnementsbetalinger. Dette gøres ved at benytte:
|
Parameter
|
Beskrivelse
|
Format
|
|
RecurringPayment
(krævet)
|
Sættes den til værdien 1, vil transaktionen blive oprettet som abonnementsbetaling.
<input type="hidden" name="RecurringPayment" value="1">
|
Int
|
|
RecurringCustNumber
(Krævet)
|
Her sættes kundenummer der skal tillægges til den nyoprettede abonnementsbetaling. Bemærk dette kundenummer bruges fremover som reference til det aktuelle abonnement.
|
String
|
|
RecurringDelete
|
Hvis en kunde skal slettes sættes parameteren RecurringDelete=1 i kombination med RecurringCustNumber=kundenummer for den kunde der skal slettes
|
String
|
|
RecurringDays*
|
Angiver interval af dage mellem hver abonnementsbetaling.
|
Int
|
|
RecurringMonths*
|
Angiver interval af måneder mellem hver abonnementsbetaling.
|
Int
|
|
RecurringNextCapure*
|
Angiver hvornår den næste abonnementsbetaling skal finde sted. Datoformat for eksempelvis d. 22 oktober 2006 er:
22-10-06
|
String
|
*Det er ikke nødvendigt at sende både RecurringDays, RecurringMonths, RecurringNextCapure med en af dem er nok.
Opdatering af abonnementer
Se punkt 2.4 PayApi / efterbehandling under Specielt for abonnementsbetalinger
For at opdatere eksisterende abonnementer, kan man til securecapture.asp og payapi.asp medsende variablen UpdateExistingSubscriber.
Fejlkoder
Hvis der opstår fejl under betalingstransaktionen medtages følgende fejlkoder til FAILURL samt FAILStatusURL kaldene.
Se mere om disse error codes i afsnit 4.1 Dandomains fejlkoder.
Form eksempel for kreditkort transaktioner:
For at se eksempel Tryk her <form method="post" action="https://pay.dandomain.dk/securecapture.asp" name="Form" autocomplete="off">
<input type="hidden" name="OKURL" value="http://www.domainname.dk/site/index.php?fail=1">
<input type="hidden" name="FAILURL" value="https://pay.dandomain.dk/securetunnel.asp?merchantnumber=1234567&sessionid=sessionid&tunnelurl=http://www.domainname.dk/site/index.php?ok=1">
<input type="hidden" name="SessionID" value="sessionid">
<input type="hidden" name="OrderID" value="1">
<input type="hidden" name="CurrencyID" value="208">
<input type="hidden" name="Amount" value="100,00">
<input type="hidden" name="MerChantNumber" value="1234567">
<input type="hidden" name="TestMode" value="0">
<table border="0" cellpadding="6" cellspacing="1" width="50%">
<tr>
<td height="23" width="364"><b>Cardnumber :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="CardNumber" size="20" maxlength="50"></td>
</tr>
</tr>
<tr>
<td height="23" width="364"><b>CVC / kontrolcifre :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="CardCVC" size="3" maxlength="3"></td>
</tr>
<tr>
<td height="23" width="364"><b>Expire date (month / year) - Udløbsdato(måned / år) :</b></td>
<td height="23" width="686" align="left">
<select name="ExpireMonth">
<option>01<option>02<option>03<option>04
<option>05<option>06<option>07<option>08
<option>09<option>10<option>11<option>12
</select><font color="#000000"><b> /
<select name="ExpireYear">
<option>00<option>01<option>02<option>03<option>04
<option>05<option>06<option>07<option>08<option>09
<option>10<option>11<option>12<option>13<option>14
<option>15<option>16<option>17<option>18<option>19
<option>20
</select><br><br>
</td>
</tr>
<tr>
<td height="23" colspan="2"><input type="submit" value="Approve payment"></td>
</tr>
</table>
</form>.
Eksempler kan også findes under 5.0 Download eksempler
Form eksempel for abonnementsbetalinger:
For at se eksempel Tryk her
<html>
<head>
<title>DanDomain Paygateway example</title>
</head>
<body>
<hr>
<form method="post" action="https://pay.dandomain.dk/securecapture.asp" name="Form" autocomplete="off">
<input type="hidden" name="SessionID" value="">
<input type="hidden" name="CurrencyID" value="208">
<input type="hidden" name="MerChantNumber" value="1234567">
<input type="hidden" name="Testmode" value="0">
<h3> USING SECURE CAPTURE </h3>
<table border="0" cellpadding="6" cellspacing="1" width="50%">
<tr>
<td height="23" colspan="2"><b>Creditcard information:</b><br><br></td>
</tr>
<tr>
<td height="23" colspan="2">Type your creditcard information - creditcard number, expire data, control digits. The amount stated is the amount that will be debited your creditcard. All info typed on this page will be sent encrypted to PBS<br><br></td>
</tr>
<tr>
<td height="23" width="364"><b>OrderID :</b></td>
<td height="23" width="686" align="left"> <b><input type="text" name="OrderID" value="100"></b></td>
</tr>
<tr>
<td height="23" width="364"><b>Amount :</b></td>
<td height="23" width="686" align="left"> <b><input type="text" name="Amount" value="100">DDK</b></td>
</tr>
<tr>
<td height="23" width="364"><b>Cardnumber :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="CardNumber" size="20" maxlength="50" value=""></td>
</tr>
</tr>
<tr>
<td height="23" width="364"><b>CVC / kontrolcifre :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="CardCVC" size="3" maxlength="3" value="106"></td>
</tr>
<tr>
<td height="23" width="364"><b>Expire date (month / year) - Udløbsdato(måned / år) :</b></td>
<td height="23" width="686" align="left">
<input type="text" name="ExpireMonth" value="07">
<input type="text" name="ExpireYear" value="07"><br><br>
</td>
</tr>
<tr>
<td height="23" width="364"><b>Kunde nummer :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="RecurringCustNumber" value="12345"></td>
</tr>
<tr>
<td height="23" width="364"><b>Interval dage :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="RecurringDays" value="14"></td>
</tr>
<tr>
<td height="23" width="364"><b>Interval måneder :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="RecurringMonths" value="1"></td>
</tr>
<tr>
<td height="23" width="364"><b>Næste betaling :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="RecurringNextCapure" value="28-09-2006"></td>
</tr>
<tr>
<td height="23" width="364"><b>RecurringPayment :</b></td>
<td height="23" width="686" align="left"> <input type="checkbox" name="RecurringPayment" value="1"></td>
</tr>
<tr>
<td height="23" width="364"><b>InstantCapture :</b></td>
<td height="23" width="686" align="left"> <input type="checkbox" name="InstantCapture" value="1"></td>
</tr>
<tr>
<td height="23" width="364"><b>OK url :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="OKURL" value="https://pay.dandomain.dk/securetunnel.asp?merchantnumber=1234567&sessionid=sessionid&tunnelurl=http://www.domainname.dk/site/index.php?ok=1" ID="Checkbox1" size="20"></td>
</tr>
<tr>
<td height="23" width="364"><b>Fail url :</b></td>
<td height="23" width="686" align="left"> <input type="text" name="FAILURL" value="https://pay.dandomain.dk/securetunnel.asp?merchantnumber=1234567&sessionid=sessionid&tunnelurl=http://www.domainname.dk/site/index.php?ok=0" ID="Checkbox2" size="20"></td>
</tr>
<tr>
<td height="23" colspan="2"><img src="kort-dankort.gif" border="0"> <img src="kort-visa.gif" border="0"> <img src="kort-euromaster.gif" border="0"></td>
</tr>
<tr>
<td height="23" colspan="2"><input type="submit" value="Approve payment"></td>
</tr>
</table>
</form>
<hr />
<h3> PAY API </h3>
<a href="https://pay.dandomain.dk/payapi.asp?Username=1234567&Password=password&PreAutRecurring=1&RecurringCardType=1&RecurringCustNumber=Kim100&RecurringDays=14&RecurringMonths=1&RecurringAmount=100&RecurringCurrency=208&RecurringNextCapure=28-12-2006&PreAutCardNumber=1111111111111111&PreAutCardExpireYear=07&PreAutCardExpireMonth=07&PreAutCardCVC=106&OrderID=9000">(1) Recurring pre-aut - no capture</a>
<br>
<a href="https://pay.dandomain.dk/payapi.asp?Username=1234567&Password=password&PreAutRecurring=1&RecurringCardType=1&RecurringCustNumber=Kim100&RecurringDays=14&RecurringMonths=1&RecurringAmount=99,50&RecurringCurrency=208&RecurringNextCapure=28-12-2006&PreAutCardNumber=1111111111111111&PreAutCardExpireYear=07&PreAutCardExpireMonth=07&PreAutCardCVC=106&PreAutInstantCapture=1&OrderID=9000">(2) Recurring pre-aut - with capture</a>
<br>
<a href="https://pay.dandomain.dk/payapi.asp?Username=1234567&Password=password&RecurringAmount=50&RecurringCustNumber=Kim100&RecurringCapture=1">(3) Recurring capture (Kim100) (amount specified to 50)</a>
<br>
<a href="https://pay.dandomain.dk/payapi.asp?Username=1234567&Password=password&RecurringCustNumber=customer100&RecurringCapture=1">(3) Recurring capture (Kim100) (no amount specified)</a>
<br>
<a href="https://pay.dandomain.dk/payapi.asp?Username=1234567&Password=password&RecurringStatusList=1">(5) List all recurring ready for capture</a>
<br>
</body>
</html>