Documente Academic
Documente Profesional
Documente Cultură
Forcredit/debitcardandalternativepayments
HowtointegratetotheSkrillPaymentPlatformusingtheSkrillPHP
library
www.skrill.com
Version1.6
SkrillLimited,25CanadaSquare,CanaryWharf,London,E145LQ,UK
Copyright
2014.SkrillLtd.Allrightsreserved.
ThematerialcontainedinthisguideiscopyrightedandownedbySkrillLtdtogetherwithanyother
intellectualpropertyinsuchmaterial.Exceptforpersonalandnoncommercialuse,nopartofthis
guidemaybecopied,republished,performedinpublic,broadcast,uploaded,transmitted,
distributed,modifiedordealtwithinanymanneratall,withoutthepriorwrittenpermissionofSkrill
Ltd,and,then,onlyinsuchawaythatthesourceandintellectualpropertyrightsareacknowledged.
Tothemaximumextentpermittedbylaw,SkrillLtdshallnotbeliabletoanypersonororganisation,
inanymannerwhatsoeverfromtheuse,constructionorinterpretationof,ortherelianceupon,allor
anyoftheinformationormaterialscontainedinthisguide.
TheinformationinthesematerialsissubjecttochangewithoutnoticeandSkrillLtd.assumesno
responsibilityforanyerrors.
SkrillLtd.
Registeredoffice:SkrillLimited,25CanadaSquare,CanaryWharf,London,E145LQ,UK.
VersionControlTable
Date
Version
Description
November2013
1.0
GuideCreated
January2014
1.1
Examplesupdated,alternativepaymentsand
WPFincluded.
March2014
1.2
InclusionofSandboxURLs.
April2014
1.3
Updatestorequirements.
June2014
1.4
August2014
1.5
September2014
1.6
AllAPIrequestsandcallbacksmustusethe
HTTPSstandard.Detailsaddedabouthandling
theSkrillresponsesenttoyourresponseurl
page.
Removalofreversalrequest.Newexamplesof
paymentscenarios.
Removalofpaymentmethodscurrentlynot
available:Boleto,WebMoney,Neosurf,Lobanet
andMultibanco
Publicationnumber:PSPPHPREL9/9/14
Skrill2014
Page2
SkrillPHPLibraryGuide1.6
Contents
1.AboutthisGuide .......................................................................................................3
1.1.Objectivesandtargetaudience ........................................................................................... 3
1.2.Relateddocumentation........................................................................................................ 3
1.3.Conventionsusedinthisguide ............................................................................................ 3
2.Introduction ..............................................................................................................4
2.1.Paymentprocessingflows.................................................................................................... 4
2.1.1UsingthePHPlibrarywithanotherintegrationmethod .............................................. 4
2.1.2UsingthePHPlibraryonitsown................................................................................... 5
2.1.3Security ......................................................................................................................... 6
2.2.Paymentscenarios ............................................................................................................... 7
2.2.1Immediatepaymentcapture ........................................................................................ 7
2.2.2Delayedpaymentcapture............................................................................................. 8
3.UsingthePHPLibrary ................................................................................................9
3.1.Requirements....................................................................................................................... 9
3.2.IncludingthePHPLibrary ..................................................................................................... 9
3.3.UsingthePHPlibrary............................................................................................................ 9
3.3.1Preparetherequestobject ........................................................................................... 9
3.3.2SettheSkrillAPIendpoint............................................................................................. 11
3.3.3SettheparameterstosendtoSkrill.............................................................................. 12
3.3.4ViewtheJSONrequestparameters .............................................................................. 14
3.3.5SendtheAPIrequest..................................................................................................... 14
3.3.6Handletheresponse ..................................................................................................... 14
3.3.7HandlingresponsesfortheWebPaymentFrontend.................................................... 18
4.PaymentParameters.................................................................................................19
4.1.Paymentrequest .................................................................................................................. 19
4.2.PaymentResponse............................................................................................................... 21
4.2.1Errorresponse............................................................................................................... 22
5.PHPExamples ...........................................................................................................23
5.1.preauthorization .................................................................................................................. 23
5.2.debit ..................................................................................................................................... 25
5.3.capture ................................................................................................................................. 26
5.4.credit .................................................................................................................................... 28
5.5.cancel ................................................................................................................................... 29
5.6.register ................................................................................................................................. 30
5.7.refund................................................................................................................................... 31
6.WebPaymentFrontend(WPF) ..................................................................................33
6.1.Customerdetails .................................................................................................................. 34
6.2.Paymentandconfigurationdetails ...................................................................................... 35
7.AlternativePayments................................................................................................37
7.1.iDEAL .................................................................................................................................... 38
7.1.1Merchantwebsiterequirements .................................................................................. 38
7.1.2Directory(iDEAL)........................................................................................................... 38
7.1.3Preauthorization(iDEAL)............................................................................................... 40
7.2.Paysafecard .......................................................................................................................... 43
Skrill2014
Page1
SkrillPHPLibraryGuide1.6
7.2.1Preauthorization(Paysafecard)..................................................................................... 43
7.2.2Testing........................................................................................................................... 47
7.3.SkrillDirect ........................................................................................................................... 48
7.3.1Preauthorization(SkrillDirect)...................................................................................... 48
7.3.2Testing.......................................................................................................................... 51
7.4.SkrillWallet .......................................................................................................................... 51
7.4.1Preauthorization(SkrillWallet)..................................................................................... 51
7.4.2SkrillWalletrefund ....................................................................................................... 55
7.4.3SkrillWalletcredit(SendMoney) ................................................................................. 58
7.4.4Skrill1Tapregisterrequest .......................................................................................... 61
7.4.5UsingtheSkrill1Taptoken .......................................................................................... 65
7.4.6Skrill1TapStatusrequest ............................................................................................ 66
7.4.7Skrill1TapCancelrequest............................................................................................ 68
7.4.8SkrillWalletPaymentmethods..................................................................................... 70
7.5.Yandex.................................................................................................................................. 72
7.5.1Preauthorization(Yandex) ............................................................................................ 72
8.Testingyourconnection ............................................................................................75
8.1.Usingtestdata ..................................................................................................................... 75
8.1.1Non3DSecuretransactions.......................................................................................... 75
8.1.23DSecuretransactions ................................................................................................. 75
8.2.Testingerrorhandling .......................................................................................................... 76
9.Appendices ...............................................................................................................80
9.1.Responsecodes.................................................................................................................... 80
9.1.1Level1:Formaterror(frontendvalidationerrors) ...................................................... 80
9.1.2Level2:Systemerror(configuration/connectivityerrors)............................................ 91
9.1.3Level4:Acquirerreasoncodes .................................................................................... 92
10.Glossary ..................................................................................................................93
Skrill2014
Page2
SkrillPHPLibraryGuide1.6
1. ABOUTTHISGUIDE
1.1. Objectivesandtargetaudience
ThisguidedescribeshowintegratetotheSkrillPaymentPlatformusingtheSkrillPHPlibrary.Itis
intendedformerchantswhowanttointegratewithSkrillusingPHP.Ifyouareusingthismethod,
developerlevelknowledgeofobjectorientedprogrammingusingPHPisessential.
1.2. Relateddocumentation
YoushouldusethisguidetogetherwiththeadditionalSkrilldocumentsdescribedbelow.
Table11:OtherGuides
Guide
GettingStartedGuide
SkrillIntegrationGuide
cardpayments
MerchantPortalGuide
AlternativePayment
MethodsGuide
SkrillWebPayment
FrontendGuide
Description
GuidesettingupyourSkrillaccount,documentationrequiredand
anoverviewofthedifferentproductoptionsandservicesfortaking
paymentsthroughSkrill.
DescribeshowtoconnecttotheSkrillPaymentPlatformusing
JSON.
DescribeshowtomanageyouraccountusingtheMerchantPortal.
GuidetoprocessingalternativepaymentmethodswithSkrill.
GuidetousingtheSkrillhostedpaymentpage.
1.3. Conventionsusedinthisguide
Thetablebelowlistssomeoftheconventionsusedinthisguide.
Table12:Listofconventions
Convention
[Directory]
Description
Indicatesagenericdirectory(e.g.,Cdrive),whichmaybesetup
accordingtotheclientsrequirements.
Reference
Indicatesareferencetoanothersectioninthisguide.Forexample,
refertoUserAdministrationonpage34.
Code example
Usedtoillustrateexamplecode,functionsandcommands.
Filepath
Usedtoindicateafilepathorfolderstructure.
Glossary
Glossaryterm
Menu1>Menuoption2>
Indicatesamenupath.
Skrill2014
Page3
SkrillPHPLibraryGuide1.6
2. INTRODUCTION
TheSkrillPHPlibraryprovidesamethodforconnectingtotheSkrillPaymentPlatformforpayment
processing.ThePHPlibraryisaclientlibraryprovidingPHPclassesthatenableyoutosendand
receiveJSONRPCrequests.
2.1. Paymentprocessingflows
2.1.1.UsingthePHPlibrarywithanotherintegrationmethod
Theexamplesbelowshowsomeadditionalcardpaymentflows,whicharerelevantifyouareeither
notPCIcompliantorarelookingforaquickandsimplewaytocollectcustomercarddetails.Inthis
case,youcanuseSkrill.jsortheWebPaymentFrontend(WPF)fortheinitialregisterrequestand
thenusethePHPlibraryforotherpaymentrequests,suchascapture,refund,cancelandcredit
payments.
2.1.1.1.PHPlibraryplusSkrill.js
Figure21:UsingtheSkrillPHPlibrarywithSkrill.js(nonrecurringpayment)
1. Whenthecustomerisreadytocheckouttheirorderonyourwebsite,youcanprovidean
HTMLpaymentformonyourfrontendserversorothermeanswherecustomerscanenter
theirpaymentdetails.
2. ThecustomerenterstheirpaymentdetailsandclicksaSubmitorPaybutton.Yourweb
serverpassesthisinformationthroughtoSkrill.js,whichsendsittotheSkrillPayment
Platform.
Skrill2014
Page4
SkrillPHPLibraryGuide1.6
Note:Carddetailsmustnotbestoredonyoursystems,unlessyouarePCIcompliant.
3. TheSkrillPaymentPlatformstoresthecarddetailsandreturnsapaymenttoken,whichyou
canstoreforfutureuse.
4. Yourbackendsystemssendanauthorisation,debitorcreditrequestusingthePHPlibrary.
5. TheSkrillPaymentPlatformrequestsauthorisationforthepaymentfromthecardschemeor
bank.(PaymentisrequestedviayourAcquirer.)
Note:Atthisstage,Cardholderauthenticationsuchas3DSecuremayberequested.
6. ASuccessfulorFailedtransactionresponseisreturnedtoyoursystems,togetherwiththe
transactiondetails.Youcanstoredetailssuchasthepaymenttoken(registerrequests)or
uniquereferenceIDinyourbackendsystemsforusewithfuturetransactions.
7. Yoursystemscanusethetransactionresponsetoprovidefeedbacktothecustomeror
initiateanyotherrequiredaction(forexample,returnthecustomertoapaymentsuccessful
pageorrequestanalternativepaymentmethodforafailedtransaction).
2.1.2.UsingthePHPlibraryonitsown
ThefigurebelowprovidesanoverviewofthepaymentprocessusingtheSkrillPHPlibraryonitsown,
withoutanyotherintegrationmethod.ThefiguredescribesaninitialPreauthorisation,Debitor
RegisterrequestusingtheSkrillPHPlibrary.NotethatyoumustbePCIcompliantifyouarecollecting
customercarddetails.
Figure22:Preauthorisation,debitorregisterflowusingtheSkrillPHPlibrary
Skrill2014
Page5
SkrillPHPLibraryGuide1.6
1. Whenthecustomerisreadytocheckouttheirorderonyourwebsite,youcanprovidean
HTMLpaymentformonyourfrontendserversorothermeanswherecustomerscanenter
theirpaymentdetails.
2. ThecustomerenterstheirpaymentdetailsandclicksaSubmitorPaybutton.Yourweb
serverspassthisinformationthroughtoyourPHPapplication,whichwillusetheSkrillPHP
librarytosendittotheSkrillPaymentPlatforminJSONformat.
3. TheSkrillPaymentPlatformrequestsauthorisationforthepaymentfromthecardschemeor
bank.(PaymentisrequestedviayourAcquirer.)
Note:Atthisstage,Cardholderauthenticationsuchas3DSecuremayberequested.
4. ASuccessfulorFailedtransactionresponseisreturnedtoyoursystems,togetherwiththe
transactiondetails.Youcanstoredetailssuchasthepaymenttoken(registerrequests)or
uniquereferenceIDinyourbackendsystemsforusewithfuturetransactions.
5. Yoursystemscanusethetransactionresponsetoprovidefeedbacktothecustomeror
initiateanyotherrequiredaction(forexample,returnthecustomertoapaymentsuccessful
pageorrequestanalternativepaymentmethodforafailedtransaction).
2.1.2.1.Cardholderauthentication
Skrillsupportscardholderauthenticationschemes,suchasVerifiedbyVisaandMasterCard3D
Secure.Tosupportcardholderauthentication,werecommendthatyouusethePHPlibraryin
combinationwithSkrill.js.Formoreinformation,seetheSkrill.jsGuide.
2.1.3.Security
AdirectservertoserverconnectiontotheSkrillPaymentPlatformoverasecure,encryptedSSL
connectionensuresthattransactiondetailsarealwayskeptsecure.TheHTTPSstandardprovides
websiteauthenticationandprotectsagainstmaninthemiddleattacks.Sinceallcommunication
betweenSkrillandyourbackendserversisencrypted,thisprotectsagainsteavesdroppingand
tamperingwiththecontentsoftheJSONrequest.
Inaddition,SkrillonlyacceptstransactionrequestscontainingavalidmerchantIDandchannel.
Note:Toensuresecurity,allproductionAPItransactionrequestsorcallbackURLssubmittedtothe
SkrillPaymentPlatformmustusethesecureHTTPSstandard.
Skrill2014
Page6
SkrillPHPLibraryGuide1.6
2.2. Paymentscenarios
Thissectionprovidesexamplesoftypicalpaymentscenarios,includingthepossiblestepsinatypical
payment.Twoexamplesareprovided:oneforImmediatepaymentcaptureandoneforDelayed
paymentcapture.
2.2.1.Immediatepaymentcapture
Thisscenarioissuitableformerchantswhotakefullpaymentimmediatelyfromthecustomer.
Shipmentofgoodsorprovisionofserviceisonlyprovidedoncepaymenthasbeenconfirmed.
Figure23:Immediatepaymentcapturescenario
Themerchantmakesadebitrequest,whichincludesthepreauthorisationandcapture
methodsinonerequest.Authorisationisrequestedfromthecustomersbankandthefunds
areimmediatelycaptured.
Oncethetransactionhasbeenmade,themerchanthasashortwindowwhentheycancancel
thetransaction(beforethecutoffperiodwhenthepaymenthasbeendeductedfromthe
customersaccount).
Afterthecutoffperiod,oncethefundshavebeendeductedfromthecustomersaccount,
themerchantcaninitiatearefund.
Intheeventofadispute,thecustomercancontacttheirbanktorequestachargeback,in
whichcasepartorallofthefundsmaybedeductedfromthemerchantsaccount.
FormoreinformationonthedifferentpaymentrequestoptionsavailableviatheSkrillPayment
Platform,seeSupportedAPICallMethods,onpage 10.
Skrill2014
Page7
SkrillPHPLibraryGuide1.6
2.2.2.Delayedpaymentcapture
Thisscenarioissuitableformerchantswhorequestaninitialauthorisationforapaymentorpart
payment,butonlytakefullpaymentaftertheservicehasbeendeliveredtothecustomer.For
example,acarhireorholidaybookingmerchant,whereaninitialdepositmaybetakenandthefull
amountcapturedatalaterdate.
Figure24:Delayedpaymentcapturescenario
Themerchantmakesapreauthorisationrequest.Authorisationisrequestedfromthe
customersbankandthefundsarereservedontheiraccount.
Atthisstage,themerchantcancancelthepreauthorisation.
Whenthemerchantisready,theycancaptureapayment.Capturecanbeforapartial
amount(e.g.,deposit)orforthefullamountofthepreauthorisation.Merchantscanmake
multiplecapturesforpartialamounts,providedthatthesumofallthesepartialcaptures
doesnotexceedtheamountoftheoriginalpreauthorisation.
Oncethecapturehasbeenmade,themerchanthasashortwindowwhentheycancancel
thetransaction(beforethecutoffperiodwhenthepaymenthasbeendeductedfromthe
customersaccount).
Afterthecutoffperiod,oncethefundshavebeendeductedfromthecustomersaccount,
themerchantcaninitiatearefund.
Intheeventofadispute,thecustomercancontacttheirbanktorequestachargeback,in
whichcasepartorallofthefundsmaybedeductedfromthemerchantsaccount.
FormoreinformationonthedifferentpaymentrequestoptionsavailableviatheSkrillPayment
Platform,seeSupportedAPICallMethods,onpage 10.
Skrill2014
Page8
SkrillPHPLibraryGuide1.6
3. USINGTHEPHPLIBRARY
3.1. Requirements
Ensurethatthefollowingareinstalledonyourwebserver:
PHP5(5.2.0)
cURLextensionshouldbeenabled
CopyoftheSkrillPHPLibrary,whichcanbeobtainedfromtheSkrillMerchantServicesTeam
3.2. IncludingthePHPLibrary
ToincludethePHPlibrary,addthefollowingscripttoyourPHPcode:
require_once ' <path to file>/lib/SkrillPSP.php';
Where<pathtofile>isthepathtowheretheSkrillPHPLibraryisinstalledonyourwebserver.
3.3. UsingthePHPlibrary
YourPHPcodeshouldincludethefollowingsteps:
Preparetherequestobject
SettheSkrillAPIendpoint
SettheparameterstosendtoSkrill
ViewtheJSONrequestparameters(optional)
SendtheAPIrequest
Handletheresponse
Thesestepsaredescribedinmoredetailbelow.Toseehowthisisimplementedinworkingexamples,
seePHPExamplesonpage 23.
Alternativepaymentmethodsworkinasimilarway,althoughsomeareimplementedslightly
differently.Fordetails,seeAlternativePaymentsonpage 37.
3.3.1.Preparetherequestobject
EachSkrillAPIrequestmethodisrepresentedinaseparaterequestobject.Therequestobjectloads
thepredefinedJSONstructureandsetstheIDmemberoncreationoftherequest.
Skrill2014
Page9
SkrillPHPLibraryGuide1.6
ThefollowingAPIrequestmethodsaresupported:
Table31:SupportedAPICallMethods
APIMethod
Description
PHPRequestObject
cancel
Cancelsatransaction.Thisisonlypossible $cancel=newSkrillPsp_Cancel();
beforeyouhavecapturedthepaymentor
untilthepreauthorisationexpires.Itcan
beforapartialamount.
capture
$capture=new
Requestcaptureofapaymentthathas
SkrillPsp_Capture();
beenauthorised.Capturecanbeforthe
fullamountofthepreauthorisation,orfor
apartialamount.
credit
Requestapaymenttoacustomerwhichis $credit=newSkrillPsp_Credit();
notlinkedtoanyexistingtransactionon
thesystem.
debit
Requestimmediateauthorisationofa
cardpaymentanddebitoftheamount
fromthecardholdersaccount.
preauthorisation
$preauth=new
Requestpreauthorisationforadebitor
creditcardtransaction.
SkrillPsp_Preauthorization();
Asuccessfulpreauthorisationreserves
thetransactionamountonthecustomers
card.Fundsarenottakenfromthe
customersaccountuntilyouinvokethe
capturerequest.
refund
Requestarefundonapaymentthathas
beenprocessed,forapartialamountor
uptothefullamountoftheinitial
payment.
$refund=newSkrillPsp_Refund();
register
RequestapaymenttokenfromtheSkrill
paymentplatform.
$register=newSkrillPsp_Register
();
$debit=newSkrillPsp_Debit();
Note:Foradditionalrequestobjectsavailablewithalternativepaymentmethods,refertoAlternative
Paymentsonpage 37.
Requestusingapaymenttoken
Foranauthorization,creditordebitrequestonacardthatisalreadyregisteredontheSkrillpayment
platform,youcanprovidethepaymenttokenreturnedbySkrill.jsastheconstructorparameter.
Forexample:
$debit=newSkrillPsp_Debit("58409c4a39a94cf4bd3fe07647fca9fd");
Where("58409c4a39a94cf4bd3fe07647fca9fd")isthepaymenttokenreturnedbySkrill.js.
Skrill2014
Page10
SkrillPHPLibraryGuide1.6
Requestwithcreditcarddata
Note:youneedtobePCIcomplianttocollectcreditcarddatadirectlyonyourwebsite.We
recommendthatyouuseSkrill.jstocollectthecustomerscarddetailsandreturnapayment
token,forusewithsubsequenttransactions.Alternatively,youcanusetheSkrillWebPayment
Frontend(WPF)toprocessdebit,creditandpreauthorizationrequests.ToconnecttotheWPF
viathePHPlibrary,seeWebPaymentFrontend(WPF)onpage 33.
Foradebitorregisterrequest,whereyoudonothaveaPaymenttoken,youdonotneedtoinclude
anyconstructorparameterintherequestobject.However,youmustthenincludethefollowing
parameterswhenyousettherequiredparameterstosendtoSkrill:(cardholder,number,expirydate
andcvv).
Forexample:
$debit = new SkrillPsp_Debit();
$debit->setTransactionId("Ckdkd12")
->setCardholder("John Smith")
->setCardNumber("4000000000000051")
->setExpiryDate("12/2016")
->setCVV(122)
RequestusingareferenceID
Forarefund,captureorcancelrequest,youcanprovidethereferenceIdastheconstructor
parameter.
Forexample:
$capture=newSkrillPsp_Capture("c21a0ef567a14d7bad56582099f9f7c8");
Where("c21a0ef567a14d7bad56582099f9f7c8")isthereferenceIDcreatedfortheoriginal
transaction.
Note:ThereferenceIdparameterismandatoryforarefundandcancelrequest.
3.3.2.SettheSkrillAPIendpoint
ThenextstepistosettheSkrillAPIendpoint.TheAPIendpointstringshouldpointtoeithertheSkrill
testorliveenvironment:
Testenvironment:https://psp.sandbox.dev.skrillws.net/v1/json/
Liveenvironment:https://psp.skrill.com/v1/json/
Thestringmustalsoincludethefollowingparameters:
Table32:APIendpointparameters
Parameter
Description
Examples
MerchantID
AuniquemerchantidentifierontheSkrillpayment
processingplatform.
zmcdptfj8kv9fwhj
Skrill2014
Page11
SkrillPHPLibraryGuide1.6
Table32:APIendpointparameters
Parameter
Description
Examples
ChannelID
Identifierofthechannelinwhichyouareprocessing
payments.
channelid_3d
Paymenttype
Identifierofthepaymentmethod,suchascreditcardor
analternativepaymentmethod,suchasskrillwallet.
creditcard
YouraccountmanagerortheSkrillMerchantServicesTeamcanprovideyouwiththesedetails.
Contactthemtodiscussanyadditionalchannelrequirements.
Example
TheexamplebelowshowshowtosettheAPIendpoint:
$debit-> setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_3d/creditcard");
DynamicallysettingtheAPIendpoint
Thefollowingalternativecodingmethodenablesyoutodynamicallyprovideandchangeyour
MerchantID,ChannelIDandpaymentmethod:
$debit->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/json", "3e40a821",
"channelid_3d", "creditcard");
3.3.3.SettheparameterstosendtoSkrill
ThenextstepistosetthepaymentparametersthatyouwanttosendtotheSkrillPaymentPlatform.
Eachtypeofrequestneedstoincludedifferentparameters.Someparametersaremandatory,while
othersareoptional.Foradetailedlistofsupportedparameters,seePaymentParameterson
page 19.
ThereareanumberofmethodsthatyoucanusetosettheparametersinyourPHPfile:
UsingtheSetParametersmethod
ThecodeexamplebelowusestheSetParametersmethodtoincludethepaymentparametersinan
array:
$params = array(
'identification' => array(
'transactionid' => 'CRM_F56A',
'customerid' => '122456'
),
'payment' => array(
'amount' => '128',
'currency' => 'USD',
'descriptor' => 'description'
),
'account' => array(
'cardholder' => 'Joe Dofof',
'number' => '4000000000000051',
'expiry' => '01/2016',
'cvv' => '123'
),
'customer' => array(
'name' => array(
Skrill2014
Page12
SkrillPHPLibraryGuide1.6
'title' => 'Mrs',
'firstname' => 'Sarah',
'lastname' => 'Roly',
'company' => 'Cisco Systems'
),
'address' => array(
'street' => 'Test stree',
'zip' => '1001',
'city' => 'Berlin',
'state' => 'BE',
'country' => 'DE'
),
'contact' => array(
'phone' => ' +4545454545 ',
'mobile' => '',
'email' => 'info@test',
'ip' => '122.20.20'
)
),
'merchant' => array(
'key' => 'value4545'
)
);
$preauth->setParameters($params);
ThesetParametersmethodenablesyoutosetallparametersatonce.However,ifyoudonotprovide
themandatoryparametersforthetypeofAPIrequesttype,oryouprovideinvaliddata,thenan
exceptionisthrown.
WiththismethodyoucannotmodifyoroverwritethepredefinedJSONRPCstructurefortherequest,
whichpreventsyoufromsendingincorrectdatatotheSkrillPaymentPlatform.
UsingtheSettermethod
Thecodeexamplebelowusesthesettermethodtoincludethepaymentparameters:
$debit->setTransactionId("Ckdkd12")
->setCustomerId("39393993")
->setAmount("457")
->setCurrency("EUR")
->setDescriptor("description")
->setCardholder("John Smith")
->setCardNumber("4000000000000051")
->setExpiryDate("12/2016")
->setCVV(122)
->setTitle("Mr.")
->setFirstName('Ibrahim')
->setLastName('Musa')
->setCompany('Cicso')
->setStreet('Market Street')
->setZip('1001')
->setCity('London')
->setState('London')
->setCountry('UK')
->setPhone('202020202')
->setMobile('+440203030303')
->setEmail('nbn313@yahoo.com')
->setIpAddress('127.1.0.0');
Settermethodssupportmethodchaining.Withsetters,yousettheparametersonebyone.
Note:Foracreditordebitrequest,ifyouprovideapaymenttokenwithintheconstructor,thenyou
donotneedtosettheAccountgroupparameters(cardholder,number,ExpiryDateandcvv).
Skrill2014
Page13
SkrillPHPLibraryGuide1.6
3.3.4.ViewtheJSONrequestparameters
FordebuggingpurposesyoucanusetheshowJsonmethodtoviewtheJSONrequestparametersand
valuesthataresenttotheSkrillPaymentPlatform.Thisenablesyoutocheckyourrequesteither
beforeoraftermakingthecall.
Forexample:
echo $debit->showJson();
TheabovemethodwillprinttheJSONcodetoyourbrowserwindow.
3.3.5.SendtheAPIrequest
ThefinalstepistosendtherequestwiththemakeCallmethod.
Forexample:
$result = $debit->makeCall();
ChangeforotherAPIrequestmethods,e.g.,$creditand$refund.
3.3.6.Handletheresponse
Thetransactionresponsewillbeeitherasuccessobjectoranerrorobject.
Theresponseobjectreturnedforapaymentrequestmaybeoneofthefollowingthreetypes:
SkrillPsp_Response_Successreturnedonsuccess
SkrillPsp_Response_Errorreturnedonerror
SkrillPsp_Response_ErrorLevelreturnedonerrorlevel1
Asanalternativetousingvar_dumponthereturnedresponsetoseethestructureofthedata,you
canuseoneofthefollowingtocheckthetypeofresponseobject:
if($result->isSuccess()) {
// work with success object
echo $result->getReferenceId();
}
elseif ($result->isError()) {
// work with error object
echo $result->getErrorMessage();
}
elseif ($result->isErrorLevel()) {
// work with errorlevel object
echo $result->getAdvice();
}
Or
if($result instanceof SkrillPsp_Response_Success) {
// work with success object
echo $result->getTimeStamp();
}
elseif ($result instanceof SkrillPsp_Response_Error)
{
// work with error object
echo $result->getErrorMessage();
Skrill2014
Page14
SkrillPHPLibraryGuide1.6
}
elseif($result instanceof SkrillPsp_Response_ErrorLevel)
{
// work with errorlevel object
echo $result->getErrorCode();
}
isSuccessreturnstrueonlyif$resultisSkrillPsp_Response_Success
isErrorretrunstrueonlyif$resultisSkrillPsp_Response_Error
isErrorLevelreturnstrueonlyif$resultisSkrillPsp_Response_ErrorLevel
getJsonResponseretrievesresponsefromserverinJSONformat.Thisallowsrawjsontobe
seenwithoutphpwrappercode.Thismethodissupportedbyallthreeresponseobjectsno
mattersuccessorerror.
3.3.6.1.Handlingasuccessfullevel1response(SkrillPsp_Response_Success)
YoucanusethegetAccountmethodtoretrievegenericresponsevalues.
Note:YoucansafelyusethesemethodsdirectlywithothertypeofResponseobjectswithoutdoing
isset()checks.Ifthekeydoesnotexist,thenthevaluewillbereturnedasnull.
Table33:Methodsusedtoretrieveparametersforasuccessfulresponse
Method
Descriptionofparameterreturned
getAccount
TheAccountgroupresponseparametersfortheJSONRPCResponseobject.
getCode
Thecodethatdictatesthestatusofthetransaction.
getId
Therequestidentifier.
getIdentification
TheidentificationresponseparametersfromJSONRPCResponseobject.
getLevel
Thelevelresponsefield.
getMessage
Themessagethatindicatesthestatusofthetransaction.
getMethod
Thepaymentmethod.
getPayment
ThepaymentresponseparametersfromJSONRPCResponseobject.
getRedirectUr
TheRedirectURLinAlternativePayments.Ifcardpaymentsreturnsnull
getReferenceId
AuniquereferencegeneratedbySkrillspaymentplatformtoidentifythe
transactionornull.
getRequestType
Therequesttype.
getTimeStamp
ThetimestampparameterforAlternativepayments.Foracardpayment,this
methodreturnsavalueofnull.
getVersion
TheJSONRPCprotocolversion.
Skrill2014
Page15
SkrillPHPLibraryGuide1.6
Retrievingdetailsfromacardregistrationresponse
ThefollowingmethodsreturnvaluesfromtheAccountgroupforasuccessfulcredit/debitcard
Registerresponse.
Table34:Methodsusedtoretrieveparametersforasuccessfulcardregistrationresponse
Method
Descriptionofparameterreturned
getToken
Thegeneratedtoken,ornullifanotherrequesttypeismade.
getBin
TheBIN,ornullifotherrequesttypeismade.
getExpiryMonth
ThecardsExpiryMonthornullifanotherrequesttypeismade.
getExpiryYear
ThecardsExpiryYearornullifotherrequesttypeismade
getLast
Thelast4digitsofthecustomerscardnumber,ornullifanotherrequesttype
ismade.
getMasked
TheMaskedCardNumberornullifotherrequesttypeismade
Retrievingparametersthatarenotpartofanyparametergroup
Parametersfromtheresponsethatarenotpartofanyparametergroupcanbeaccessedviapublic
properties.Forexample:
$response->type;
$response->message;
$response->method;
$response->code;
$response->level; Where $response is Skrill_Response_Success object
Note:SkrillPsp_Response_ErrorLevelandSkrill_Response_Errordonotsupportpublicproperties.
ReturningaresponsearrayinJSONformat
YoucanusethegetArrayResponseobjecttoretrievethefullresponsefromtheSkrillPayment
PlatforminJSONformat.Itissupportedbyallresponseobjects(Error,ErrorLevelandSuccess).For
example:
elseif ($result->isSuccess()) {
$arr = $result->getArrayResponse();
foreach($arr as $key => $value) {
// do some stuff here
}
}
3.3.6.2.Handlinganerrorresponse(SkrillPsp_Response_ErrorLevel)
Thefollowingmethodscanbeusedtoretrievedetailsofanyerrorresponse:
Table35:Methodsusedtoretrieveparametersforanerrorresponse
Method
Descriptionofparameterreturned
isSuccess
Willalwaysbefalseforthisobject.
Skrill2014
Page16
SkrillPHPLibraryGuide1.6
Table35:Methodsusedtoretrieveparametersforanerrorresponse
Method
Descriptionofparameterreturned
isError
Willalwaysbetrueforthisobject.
isErrorLevel
Willalwaysbetrueforthisobject.
getId
Therequestidentifier.
getVersion
TheJSONRPCversion.
getErrorLevel
Theerrorlevelthattheresponseiscomingfrom.
getErrorCode
Theresponsecodereturnedfromtheacquirerorcardissuer.
getMethod
Themethodparameteroftheoriginalrequest,suchasdebitor
preauthorization.
getType
Anabbreviationofthetypeofrequestthatwasinvoked.
getErrorMessage
Ashortdescriptionoftheerror.
getAdvice
Theadviceforthenextsteptotake.
getIdentification
Theidentificationgroupprovidedintheoriginalrequest.
The$responseobjectforanerrorresponsecontainsthemessage,codeanddata(optional)fields.
YoucanobtaintheidandJSONversioninthesamewayaswithasuccessresponse.Thecodeand
messagefieldscanbeobtainedasfollows:
throughthemethodsgetErrorCodeandgetErrorMessage:
echo $result->getErrorMessage();
echo $result->getErrorCode();
throughthegetErrormethod,whichreturnstheCODEandMESSAGEmembersofJSONRPC
Errorobject:
$errorData = $result->getError();
echo $errorData->code;
echo $errorData->message;
Level,errormessageandadvicecanbeobtainedasfollows:
throughthegetErrorDatamethodwhichreturnstheDATAmemberofJSONRPCErrorobject:
directlythroughthegetErrorLevel,getAdviceandgetErrorDataMessagemethods:
echo $result->getErrorLevel();
echo $result->getErrorDataMessage();
echo $result->getAdvice();
getErrorDataprovidesashortdescriptionoftheerror.
getErrorDataMessageprovidesamoredetaileddescriptionoftheerror.
Skrill2014
Page17
SkrillPHPLibraryGuide1.6
The$responseobjectforanerrorresponsecontainsthemessage,codeanddata(optional)fields.
3.3.7.HandlingresponsesfortheWebPaymentFrontend
TheWebPaymentFrontend(WPF)objectreturnsastringthatistheWPFendpoint,withprovided
parametersencodedandappendedtoit.Forexample:
http://wpf.dev.skrillws.net/payments/new?payload=<your-encryped-payload>)
YoucanretrievethisusingthegetResultmethod.Thevaluereturnedfromthismethodisthenused
tomakeaWPFcall.
Skrill2014
Page18
SkrillPHPLibraryGuide1.6
4. PAYMENTPARAMETERS
4.1. Paymentrequest
Belowisalistofpaymentparametersthatcanbeincludedinyourrequest.
Table41:Paymentrequestparameters
FieldName
Description
Required?
Length/format
transaction_id
Afreetextfieldincludedbyyoutotrackthe
transaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
customer_id
Freetextfieldthatenablesyoutopass
throughyouruniquecustomeridentifier.
No
0256
(alphanumeric)
reference_id
Usedtorefertoaprevioustransactionfor
example,whenimplementingacapture,
refundoracancelrequest.Thismustbethe
uniqueIDgeneratedbySkrilltotrackthe
transaction.
Conditional
(depending
ontypeof
transaction)
32
(alphanumeric)
amount
Transactionamountinthespecifiedcurrency. Yes
Thereisnodecimalseparator.Thisnumber
mustbeatleasttwodigits.TheAPIisbuilton
acentbasedISO8583structurethatdoesnot
caterfordecimals(e.g.,.or,).For
example:10=tenEurocents,100=1Euro,
1000=10Euros.
212(numeric)
currency
Currencythatthetransactionisprocessedin.
CurrencycodeisaccordingtotheISO4217
specification.Forexample:USD(USDollars).
3(alpha)
descriptor
Enablesyoutoaddadescriptiontobe
Yes
displayedonthecustomerscreditcard
statement.
Notethatthisdescriptormaybetruncatedby
thecustomersbank/cardissuer.
Thedescriptorhastwolines:thefirstlineis
dynamicandthesecondlineisstatic.Onlythe
Dynamicpartissentinthedescriptorfield.
1128(alpha)
Line1:21
characters
Line2:16
characters
cardholder
Nameofthecardholder(asitisdisplayedon
thecard).
Optional
4128
(alpha)
number
Thelongcardnumberofthecreditcardor
debitcardusedtomakethepayment.
Yes
1516
(numeric)
expiry
Theexpirydateofthecardused.
Yes
7
(alphanumeric)
Skrill2014
Yes
Page19
SkrillPHPLibraryGuide1.6
Table41:Paymentrequestparameters
FieldName
Description
cvv
TheCardVerificationValueorCSC(Card
Yes
SecurityCode).Thisisthelast3digitsofthe
customerssecuritycodeonthebackonany
MasterCardorVisabrandedcardsor4digits
forAmexcards.Note:theCVVvaluemustnot
bestoredinanycapacity.
34
(numeric)
token
Enablesyoutouseatokentorefertoan
existingcardstoredontheSkrillsystem.Can
beusedforrepeatbillingtransactions.
Yes,ifusing
theSkrill
tokenization
service
32
(alphanumeric)
language
Languageofthepaymentfrontend.
No
2digit,ISOcode
response_url
TheURLtowhichSkrillsendstheresponse
data.
Yes
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofsuccessfulpayment
Yes
Anylength
(alphanumeric)
error_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofunsuccessfulpayment
Yes
Anylength
(alphanumeric)
title
Titleoftheendcustomer:Mr,Mrs,Ms,
Dipl.Ing,Dr,Phd,Prof.
Optional
26
(alpha)
lastname
Thecustomerssurname
Optional
240
(alpha)
firstname
Thecustomersfirstname
Optional
240
(alpha)
company
Thecompanythecustomerworksfor
Optional
240
(alphanumeric)
street
Thefirstpartofthecustomersaddress,
includingthestreetandhousenumber.
Conditional
5128
(alphanumeric)
zip
Thecustomerspostal/zipcode
Conditional
110
(alphanumeric)
city
Thecustomerscity
Conditional
230
(alpha)
state
Thecustomersstate,countyorlocalregion
Conditional
230
(Alpha)
country
CountrycodeaccordingtotheISO31661
specification.
Conditional
2
(alpha)
phone
Thecustomerslandlinephonenumber.Must Optional
startwithadigitora'+'.
864
(alphanumeric)
mobile
Thecustomersmobilephonenumber.Must
startwithadigitora'+'.
864
(alphanumeric)
Skrill2014
Required?
Optional
Length/format
Page20
SkrillPHPLibraryGuide1.6
Table41:Paymentrequestparameters
FieldName
Description
Required?
Length/format
Thecustomersemailaddress
Conditional
6128
(alphanumeric)
ip
TheIPaddressthatwascapturedandsent
throughintherequest.
Mandatory
15
(alphanumeric)
key0tokey9
Thereare10freefieldsthatallowyouto
includeadditionaltransactionalinformation,
whichcanbeusedbyyourbackendsystems
(e.g.,yourOrderManagementSystem).
No
032
(alphanumeric)
value0to
value9
Theactualvaluepassedthroughassociated
withthekeyparametersyouhavedefined.
No
01024
(alphanumeric)
4.2. PaymentResponse
Thetablebelowdescribestheattributesthatarereturnedwithintheresponse.
Table42:Paymentrequestresponsefields
FieldName
Description
transaction_id
Theuniquetransactionidentifiervaluethatwasprovidedin 0256
youroriginaltransactionrequest.
(alphanumeric)
customer_id
Theuniquecustomeridentifiervaluethatwasprovidedin
youroriginaltransactionrequest.
0256
(alphanumeric)
unique_id
AuniquereferencegeneratedbytheSkrillPayment
Platformtoidentifythetransaction.
32
(alpha)
short_id
Ashortidentifierthatcanalsobeusedasareferencetothe 1625
transaction.
(alphanumeric)
amount
Transactionamountinspecifiedcurrency.Thereisno
decimalseparator.Mustbeleasttwodigits.
210
(numeric)
currency
Currencythatthetransactionisbeingprocessedin.
CurrencycodeaccordingtotheISO4217specification.
3
(alpha)
descriptor
Thevalueyouprovidedinthetransactionrequesttobe
displayedonthecustomerscreditcardstatement.
0128
(alpha)
token
Thetokenreturnedifyoumadearegisterrequesttothe
SkrillPaymentPlatformtostorethecustomerscarddata.
Youcanusethistokenforfuturepaymentsfromthesame
cardholder,withoutrequiringthemtoreentertheircard
details.
32
(alphanumeric)
code
Thevaluethatdictatesthestatusofthetransaction.For
example: 0
12
(integer)
type
Anabbreviationofthetypeofrequestthatwasinvokedin
themerchantrequest.Forexamplepa.
23
(alpha)
Skrill2014
Length/format
Page21
SkrillPHPLibraryGuide1.6
Table42:Paymentrequestresponsefields
FieldName
Description
Length/format
message
Thismessageindicatesthestatusofthetransaction.For
example:approved
128
(alphanumeric)
id
Avalueofanynumerictype,whichyoucanusetomatchthe 016
responsewiththerequestthatisbeingrepliedtoo.
(numeric)
4.2.1.Errorresponse
Thisresponseisonlyreturnedifanerroroccurs.
Table43:Errorresponse
FieldName
Description
Required?
message
Ashortdescriptionoftheerror.Forexample:skrillwallet
error".
256
(alphanumeric)
level
Thisvalueindicatesthelevelthattheresponseiscoming
from:
0=PaymentServiceLevel(ACKresponse)
1=FormatError(frontendvalidationerrors)
2=SystemError(configuration/connectivityerrors)
3>=Intheeventofanerrorthelevelvaluewilldepictwhat
acquirertheerrorresideswith(NOKresponse)
12
(integer)
error_message
Amoredetaileddescriptionoftheerror.Forexample:
technicalerror".
advice
Providesadviceonthenextstepstotake.Forexample:
"Pleasecontacttechnicalsupport".
id
Avalueofanynumerictype,whichyoucanusetomatchthe 016
responsewiththerequestthatisbeingrepliedtoo.
(numeric)
Skrill2014
256
(alphanumeric)
Page22
SkrillPHPLibraryGuide1.6
5. PHPEXAMPLES
ThissectioncontainsexamplesofcommonAPIcallrequests.
5.1. preauthorization
Requestapreauthorizationofanamountonacreditordebitcard.Ifyoudonothaveapayment
token,thecarddetailsmustbepassedintherequest.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$preauth = new SkrillPsp_Preauthorization ("c21a0ef567a14d7bad56582099f9f7c8");
// Set API endpoint
$preauth->setMerchantUrl ("https://psp.sandbox.dev.skrillws.net/v1/json",
"3e40a821", "channelid_3d", "creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => 'CRM_F56A',
'customerid' => '122456'
),
'payment' => array(
'amount' => '128',
'currency' => 'USD',
'descriptor' => 'description'
),
'account' => array(
'cardholder' => 'Joe Dofof',
'number' => '4000000000000051',
'expiry' => '01/2016',
'cvv' => '123'
),
'customer' => array(
'name' => array(
'title' => 'Mrs',
'firstname' => 'Sarah',
'lastname' => 'Roly',
'company' => 'Cisco Systems'
),
'address' => array(
'street' => 'Test stree',
'zip' => '1001',
'city' => 'Berlin',
'state' => 'BE',
'country' => 'DE'
),
'contact' => array(
'phone' => ' +4545454545 ',
'mobile' => '',
'email' => 'info@test',
'ip' => '122.20.20'
)
),
Skrill2014
Page23
SkrillPHPLibraryGuide1.6
'merchant' => array(
'key' => 'value4545'
)
);
$preauth->setParameters($params);
// Check the request
echo $preauth->showJson();
// send request and save the response
$result = $preauth->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page24
SkrillPHPLibraryGuide1.6
5.2. debit
Requestadebitonacreditordebitcard.Theamountisauthorisedandcapturedinasinglerequest.
Ifyoudonothaveapaymenttoken,thecarddetailsmustbepassedintherequest.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$debit = new SkrillPsp_Debit();
// Set API endpoint
$debit->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/json",
"3e40a821", "channelid_3d", "creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => 'CRM_F56A',
'customerid' => '122456'
),
'payment' => array(
'amount' => '128',
'currency' => 'USD',
'descriptor' => 'description'
),
'account' => array(
'cardholder' => 'Joe Dofof',
'number' => '4000000000000051',
'expiry' => '01/2016',
'cvv' => '123'
),
'customer' => array(
'name' => array(
'title' => 'Mrs',
'firstname' => 'Sarah',
'lastname' => 'Roly',
'company' => 'Cisco Systems'
),
'address' => array(
'street' => 'Test stree',
'zip' => '1001',
'city' => 'Berlin',
'state' => 'BE',
'country' => 'DE'
),
'contact' => array(
'phone' => ' +4545454545 ',
'mobile' => '',
'email' => 'info@test',
'ip' => '122.20.20'
)
),
'merchant' => array(
'key' => 'value4545'
)
);
$debit->setParameters($params);
// Check the request
echo $debit->showJson();
Skrill2014
Page25
SkrillPHPLibraryGuide1.6
// send request and save the response
$result = $debit->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
5.3. capture
Requestacaptureofapreauthorisedamount,whichcanbepartialoruptothefullamountofthe
originalpreauthorization.ThetransactionreferenceIDisrequired.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$capture = new SkrillPsp_Capture("c21a0ef567a14d7bad56582099f9f7c8");
// Set API endpoint
$capture->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/json",
"3e40a821", "channelid_3d", "creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => '32160904e6ea4a50bf964e5e095f5692',
'customerid' => '122456'
),
Skrill2014
Page26
SkrillPHPLibraryGuide1.6
'payment' => array(
'amount' => '122',
'currency' => 'EUR',
'descriptor' => 'item description'
)
);
$capture->setParameters($params);
// Check the request
echo $capture->showJson();
// send request and save the response
$result = $capture->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page27
SkrillPHPLibraryGuide1.6
5.4. credit
Requestacreditpaymenttocardholder,whichisnotlinkedtoanytransactionandcanbeforany
amount.Ifyoudonothaveapaymenttoken,thecarddetailsmustbepassedintherequest.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$credit = new SkrillPsp_Credit("c21a0ef567a14d7bad56582099f9f7c8");
// Set API endpoint
$register->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/json",
"3e40a821", "channelid_3d", "creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => 'CRM_F56A',
'customerid' => '122456'
),
'payment' => array(
'amount' => '122',
'currency' => 'EUR',
'descriptor' => 'item description'
)
);
$credit ->setParameters($params);
// Check the request
echo $credit ->showJson();
// send request and save the response
$result = $credit ->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
Skrill2014
Page28
SkrillPHPLibraryGuide1.6
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
5.5. cancel
Requesttocancelaprevioustransaction.Thiscanonlybedoneuptoacertaincutoffpoint,before
thetransactionhasbeensenttotheacquirer.ThetransactionreferenceIDisrequired.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$capture = new SkrillPsp_Capture("c21a0ef567a14d7bad56582099f9f7c8");
// Set API endpoint
$capture->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/
json","3e40a821","channelid_3d","creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => '32160904e6ea4a50bf964e5e095f5692',
'customerid' => '122456'
),
'payment' => array(
'amount' => '122',
'currency' => 'EUR',
'descriptor' => 'item description'
)
);
$capture->setParameters($params);
// Check the request
echo $capture->showJson();
// send request and save the response
$result = $capture->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
Skrill2014
Page29
SkrillPHPLibraryGuide1.6
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
5.6. register
Requesttoregisteracreditordebitcard.Skrillreturnsapaymenttoken,whichcanbeusedin
subsequenttransactionswiththiscard.YouwillneedtopasstheCVVwhenusingthetokenin
subsequenttransactions.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$register = new SkrillPsp_Register();
// Set API endpoint
$register->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/
json","3e40a821","channelid_3d","creditcard");
// Set required parameters
$register->setCardNumber("4000000000000002")
->setExpiryDate("12/2016")
->setCVV("111");
// Check the request
echo $register->showJson();
// send request and save the response
$result = $register->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
Skrill2014
Page30
SkrillPHPLibraryGuide1.6
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
5.7. refund
Requesttorefundapreviousamount.Thiscanbeforapartialamountorthefullamountofthe
originaltransaction.ThetransactionreferenceIDisrequired.
<?php
// include library
require_once /lib/SkrillPSP.php;
try {
// Create request object
$refund = new SkrillPsp_Refund("c21a0ef567a14d7bad56582099f9f7c8");
// Set API endpoint
$register->setMerchantUrl("https://psp.sandbox.dev.skrillws.net/v1/json",
"3e40a821", "channelid_3d", "creditcard");
// Set required parameters
$params = array(
'identification' => array(
'transactionid' => 'CRM_F56A',
'customerid' => '122456'
),
'payment' => array(
'amount' => '122',
'currency' => 'EUR',
'descriptor' => 'item description'
)
);
$refund->setParameters($params);
// Check the request
echo $refund->showJson();
// send request and save the response
$result = $refund->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
Skrill2014
Page31
SkrillPHPLibraryGuide1.6
echo
echo
echo
echo
echo
echo
echo
echo
echo
$token = $result->getTokenFromAccount();
$result->type;
"<br />";
$result->message;
"<br />";
$result->method;
$result->getCode();
"<br />";
$result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page32
SkrillPHPLibraryGuide1.6
6. WEBPAYMENTFRONTEND(WPF)
TheWebPaymentFrontend(WPF)isaSkrillhostedpaymentpage,whereSkrillrequestscardand
paymentdetailsforthecustomer.YoucanintegratedirectlytoitviathePHPlibrary.
BelowisanexampleofarequesttotheWebPaymentFrontend(WPF).Parametersuniquetothe
WPFarehighlighted.
<?php
require_once 'lib/SkrillPSP.php';
try {
$params = array(
"amount" => 1000,
"merchant_id" => "3e40a821",
"customer" => array(
"firstname" => "John",
"country" => "DE",
"email" => "wpf@skrill.com",
"ip" => ($_SERVER['REMOTE_ADDR'])
),
"method" => "debit",
"currency" => "USD",
"theme"=>"skeuo",
"descriptor" => "wpf test",
"transaction_id" => "FOO",
"channel_id" => "channelid_3d",
"success_url" => "http://merchant.com/success.php",
"response_url" => "http://merchant.com/response.php",
"error_url" => "http://merchant.com/error.php"
);
// Create WPF object
$obj = new WPF_Prepare();
// Set service endpoint
$obj->setUri("https://wpf.dev.skrillws.net/3e40a821/payments/new?payload");
// Set request parameters
$obj->setParameters("B[zcj2AGQmL@3k", $params);
// Get the result - wpf endpoint with provided parameters appended to it
echo $obj->getResult();
}
catch (Exception $e) {
echo $e->getMessage();
}
BelowisasummaryofthemainparametersthatcanbeincludedinyourrequesttotheWPF.For
furtherdetailsaboutusingtheWebPaymentFrontend,refertotheWebPaymentFrontendGuide.
Skrill2014
Page33
SkrillPHPLibraryGuide1.6
6.1. Customerdetails
YoucanpassdetailsofthecustomerthroughtotheWPF.
Table61:Paymentparameterscustomerdetails
FieldName
Description
Status*
Length/format
title
Titleoftheendcustomer:Mr,Mrs,Ms,
DPLING,DR,PHD,PROF.
Optional
26
(alpha)
lastname
Thecustomerslastname
Optional
240
(alpha)
firstname
Thecustomersfirstname
Optional
240
(alpha)
company
Thecompanythecustomerworksfor
Optional
240
(alphanumeric)
street
Thecustomersfirstlineoftheiraddress
Conditional
5128
(alphanumeric)
zip
Thecustomerspostal/zipcode
Conditional
110
(alphanumeric)
city
TheCustomerscity
Conditional
230
(alpha)
state
Thecustomersstate,countyorlocalregion
Conditional
230
(Alpha)
country
CountrycodeaccordingtotheISO31661
specification.
Conditional
2
(alpha)
phone
Thecustomerslandlinephonenumber.
Muststartwithadigitora'+'.
Optional
864
(alphanumeric)
mobile
Thecustomersmobilephonenumber.Must
startwithadigitora'+'.
Optional
864
(alphanumeric)
Thecustomersemailaddress.
Mandatory
6128
(alphanumeric)
ip
TheIPaddressthatwascapturedandsent
throughintherequest.
Mandatory
15
(alphanumeric)
id
Freetextfieldthatenablesyoutopass
throughyouruniquecustomeridentifier.
Optional
0256
(alphanumeric)
*Optionalindicatesanonmandatoryparameter.Conditionalindicatesaparameterthatmaybe
mandatory,ifitisusedbyanyoftheriskchecksperformed(forexample,valuesareusedforAVS
checks).
Tip: Ifyouarenotsurewhetheraconditionalparametermayberequired,checkwithyouraccount
manager.
Skrill2014
Page34
SkrillPHPLibraryGuide1.6
6.2. Paymentandconfigurationdetails
Thesearedetailsofthepayment,plusotherinternalconfigurationparametersthatindicatetothe
WPFhowtohandlethepaymentrequest.Theseparametersarehiddenfromthecustomerandare
notdisplayedontheSkrillpaymentform.
Table62:Hiddenpaymentparameters
Parameter
Description
Status
Value/Length
transaction_id
Afreetextfieldincludedbyyoutotrackthe
transaction.Thisshouldbeunique.
Mandatory
0256
(alphanumeric)
checkout_label
TexttobedisplayedontheSubmitbuttonon Optional
thepaymentpage.Forexample:PayNow.If
notprovided,thedefaultSubmittextis
displayed.
Text;upto25
characters
amount
Transactionamountinthespecifiedcurrency. Mandatory
Thereisnodecimalseparator.Thisnumber
mustbeatleasttwodigits.TheAPIisbuilton
acentbasedISO8583structurethatdoesnot
caterfordecimals(e.g.,.or,).For
example:10=tenEurocents,100=1Euro,
1000=10Euros.
212(numeric)
currency
Currencythatthetransactionisprocessedin. Mandatory
CurrencycodeisaccordingtotheISO4217
specification.Forexample:USD(USDollars).
3(alpha)
method
Definesthetypeofpaymentrequestyou
wanttouse,suchaspreauthorisationor
debit.
Alpha
descriptor
Enablesyoutoaddadescriptiontobe
Optional
displayedonthecustomersbankstatement.
Notethatthisdescriptormaybetruncatedby
thecustomersbank.
channel_id
YouruniquechannelIDforthetransaction.
Mandatory
Alphanumeric
theme
Enablesyoutoselectoneofthepredefined
stylesheetsthatdefinethelookandfeelof
thepaymentpage.
Optional
Alpha
locale
Optional
Codeindicatingthelanguage/countryin
whichthepaymentpageistobedisplayed.
Forexample,enGBforBritishEnglishandde
DEforGerman.
5digitcode
target
SpecifiestheframewhereURLshouldbe
renderedin.
Optional
Alpha
required_
attributes
Includesalistofparametersthatmustbe
completedbythecustomer.TheWPFwill
validatethesefieldsontheform.
Optional
Listofattributes
editable_
attributes
Includesalistofparameterswhosevalues
canbeeditedbythecustomer.
Optional
Listofattributes
Skrill2014
Mandatory
1128(alpha)
Page35
SkrillPHPLibraryGuide1.6
Table62:Hiddenpaymentparameters
Parameter
Description
Status
Value/Length
noneditable_
attribute_style
Definesthebehaviourofnoneditable
attributes.Optionsinclude:
Optional
Listofattributes
hiddendonotdisplaythesefields
ontheform.
nonedisplaythesefieldsasnormal
inputfields,butwillbeignored.Can
beusedtoapplycustomstyles.
disabledthisoptionisdisabled.i.e.,
willbedisplayedbutnoteditable.
success_url
Pagewherethecustomerisredirectedifthe
transactionissuccessful.
Mandatory
Mustbeavalid
URLonyour
website
error_url
Pagewherethecustomerisredirectedifthe
transactionfails.
Mandatory
Mustbeavalid
URLonyour
website
response_url
Mandatory
Pagewhereyouarenotifiedoftheresultof
thetransaction.Note:thismustbeinHTTPS
format.YourservershouldrespondtoaPOST
tothisURLbyreturningHTTP200withOKin
themessagebody.
Mustbeavalid
URLonyour
website
stylesheet_url
Linktoastylesheetwhichdefinesyourown
lookandfeelforthepaymentpage.Ifthis
fieldisleftblank,Skrillusesthedefaultstyle
sheet.
Note:ThismustbeinCSSformatand
availableviaasecure(HTTPS)URL.
javascript_url
LinktoaJavaScriptfileonyourwebsitewhich Optional
definesthebehaviourofthepaymentpage.If
thisisnotincluded,Skrillusesthedefault
JavaScriptfile.
Note:ThismustbeinJSformatandavailable
viaasecure(HTTPS)URL.
Skrill2014
Optional
Mustlinktoa
validCSSfile.
Mustlinktoa
validJavaScript
file.
Page36
SkrillPHPLibraryGuide1.6
7. ALTERNATIVEPAYMENTS
Thissectionprovidesdetailsofhowtointegratelocal/alternativepaymentmethodsusingthePHP
library.
ThetablebelowdescribesthealternativepaymentmethodssupportedviathePHPLibrary.For
informationonadditionalpaymentmethodsavailablethroughSkrill,refertotheAlternative
PaymentsGuide.
Table71:Supportedalternativepaymentmethods
PaymentMethod
Description
iDEAL
Paymentmethodthatenablescustomerstomakesecureonlinebank
transfers,withoutsharingcardinformationwiththemerchant.Itisoneof
themostpopularpaymentmethodsintheNetherlands.
Paysafecard
Paymentmethodenablingcustomerstopayonlineusingprepaid
vouchers.Vouchersareforfixeddenominationsandcanbecombined.
SkrillDirect
SkrillDirectisaninstantonlinepaymentmethodthatcurrentlysupports
over100banksandreachesmorethan110millionEuropeanconsumers,
whocandirectlypayfromtheironlinebankingaccount.
SkrillWallet
Enablescustomerstopayusingtheirbankaccount,ordebitandcredit
cardswithouthavingtoenteranysensitivedetailsonlineCustomersalso
haveaccesstoawiderangeofalternativepaymentmethods
Yandex
Yandex.moneyisapopulareWalletandpaymentservice,offeredby
Yandex,Russiasprimarysearchengine,whichisusedbyover56million
usersworldwide.
Eachofthesepaymentmethodsisdescribedinfurtherdetailbelow.
Skrill2014
Page37
SkrillPHPLibraryGuide1.6
7.1. iDEAL
iDEALisapaymentmethodthatenablescustomerstomakesecureonlinebanktransfers,without
sharingcardinformationwiththemerchant.Itisoneofthemostpopularpaymentmethodsinthe
Netherlands.iDEALsupportsthefollowingrequestmethods:
createDirectoryusethismethodtoobtainalistofbankssupportingiDEAL.
createPreAuthorizationusethismethodtorequestauthorizationfordebitingoffundsfrom
thecustomersonlinebankaccount.
Note:Checkwithyouraccountmanagerregardingtheavailabilityofthisservice.
7.1.1.Merchantwebsiterequirements
AllSkrillmerchantsofferingtheiDEALpaymentmethodontheirwebsitemustcomplywithstringent
requirements,whicharemandatedbyiDEAL.Fordetails,refertotheSkrilliDEALGuide.
7.1.2.Directory(iDEAL)
<?php
require_once lib/SkrillPSP.php;
try {
// Create iDEAL request object
$obj = new SkrillPsp_iDEAL();
// Set service endpoint
$obj->setUri(https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
testchannel_ideal/ideal);
// Display the request in JSON format
echo $obj->showJsonDirectory();
// Make iDEAL directory request
$result = $obj->createDirectory();
// Handle the response
if($result->isSuccess()) {
$issuerid = $result->directory;
}
elseif ($result->isError()) {
// error
}
elseif ($result->isErrorLevel()) {
// error level
}
}
catch (Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page38
SkrillPHPLibraryGuide1.6
Belowarefurtherdetailsoftherequestobjectsandparametersusedwiththispaymentmethod.
RequestobjectsusedwithiDEALCreatDirectory
RequestObject
Description
newSkrillPsp_iDEAL()
CreatestheiDEALrequestobject.
setUri()
SetstheAPIendpointforthispaymentmethod.Youmustincludeyour
merchantIDandchannelID.
showJsonDirectory()
DisplaysthelistofreturnedbanksinJSONformat.
createDirectory();
InvokestheCreatDirectorymethodrequesttoiDEAL.
7.1.2.1. Responseexample
TheexamplebelowshowstheresponsereturnedfromSkrill.Youcanusetheissuerlisttoprovidea
listofiDEALoptionstothecustomer.TheissuerIDofthebankselectedmustthenbepassedtoSkrill
inyourpaymentrequest.
{
"result":
{
"method": "ideal",
"type": "directory",
"level": 0,
"code": 0,
"directory":
[
[
"Nederland",
"Issuer Simulation V3 - ING",
"INGBNL2A"
],
[
"Nederland",
"Issuer Simulation V3 - RABO",
"RABONL2U"
]
]
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page39
SkrillPHPLibraryGuide1.6
7.1.3.Preauthorization(iDEAL)
Thisrequestobtainsauthorizationfortheonlinepayment.Belowisanexampleoftherequest.
<?php
require_once lib/SkrillPSP.php;
try {
// Create iDEAL request object
$obj = new SkrillPsp_iDEAL();
// Set service endpoint
$obj->setUri(https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
testchannel_ideal/ideal);
// Set request parameters
$obj->setParameters(array(
identification => array(
transactionid => MerchntAsignedID,
customerid => CustomerID
),
payment => array(
amount => 107,
currency => eur,
descriptor => comment
),
account => array(
issuerid => INGBNL2A
),
frontend => array(
language => NL,
responseurl => https://merchant.com/response.php,
successurl => https://merchant.com/success.php,
errorurl => https:// merchant.com/error.php
),
customer => array(
name => array(
firstname => Tom,
company => Skrill LTD,
lastname => Jones,
salutation => Mr
),
address => array(
street => 42 Street,
zip => 6778,
city => Amsterdam,
country => NL
),
contact => array(
email => inf@fi.nl,
ip => 127.0.0.15
)
)
));
// Display the request in JSON format
echo $obj->showJson();
// Make the iDEAL preauthorization request
//This can include both createDirectory and createPreAuthorization requests
// $dir = $obj->createDirectory();
$result = $obj->createPreAuthorization();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
Skrill2014
Page40
SkrillPHPLibraryGuide1.6
echo
echo
echo
echo
echo
echo
echo
echo
$result->type;
<br />;
$result->message;
<br />;
$result->method;
$result->getCode();
<br />;
$result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo <br />;
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo <br />;
foreach ($data as $val)
{
echo $val<br />;
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
?>
Belowarefurtherdetailsoftherequestobjectsandparametersusedwiththispaymentmethod.
Table72:RequestobjectsusedwithiDEALPreauthorization
RequestObject
Description
newSkrillPsp_iDEAL()
CreatestheiDEALrequestobject.
setUri()
SetstheAPIendpointforthispaymentmethod.Youmust
includeyourmerchantIDandchannelID.
setParameters
Setstheparameterstobeincludedinthepreauthorization
request.Adescriptionofthemandatoryparametersisincluded
below.
showJson()
DisplaysthelistofreturnedresponseinJSONformat.
createPreAuthorization()
InvokesthepreauthorizationmethodrequesttoiDEAL.
Table73:ParametersusedwithiDEALPreauthorization
FieldName
Description
transaction_id
Afreetextfieldincludedbyyoutotrackthe Yes
transaction.Thisshouldbeunique.
0256
(alphanumeric)
amount
Transactionamountinthespecified
currency.
Yes
212(stringor
integer,nodecimals)
currency
Currencyidentifier(Alpha3ISO4217code)
Yes
3
(alpha)
Skrill2014
Required
Length/format
Page41
SkrillPHPLibraryGuide1.6
Table73:ParametersusedwithiDEALPreauthorization
FieldName
Description
Required
Length/format
descriptor
Commentordescriptionofthetransaction
whichappearsonthecustomersbank
statement.
Yes
1256
(alpha)
Issuer_id
TheissuerIDofthebankthatisproviding
thecustomeronlinepaymentthrough
iDEAL.Thisisreturnedinresponsetothe
directoryRequest.
Yes
Alphanumeric
response_url
TheURLtowhichthetransactionresponse Yes
dataissent.Note:thismustbeinHTTPS
format.Yourservershouldrespondtoa
POSTtothisURLbyreturningHTTP200with
OKinthemessagebody.
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofsuccessfulpayment
Yes
Anylength
(alphanumeric)
error_url
TheURLtowhichthepayerwillbe
redirectedtoincaseofunsuccessful
payment
Yes
Anylength
(alphanumeric)
7.1.3.1. Responseexample
{
result: {
identification: {
transactionid: MerchantAssignedID,
uniqueid: e8166b8c52704389ba9b2fa78839aed9,
shortid: 7292.4803.9309,
customerid: CustomerID
},
method: ideal,
type: preauthorization,
level: 0,
code: 0,
message: waiting,
processing: {
timestamp: 2014-01-16T11:19:24+00:00,
redirecturl: https://idealtest.secure-ing.com/ideal/
issuerSim.do?trxid=0050000080688526&ideal=prob
},
merchant: {
key0: Value0,
key1: Value1,
key2: Value2
}
},
id: 1,
jsonrpc: 2.0
}
YoucanusetheredirecturlprovidedintheresponsetoredirectthecustomertotheiDEALpayment
page,wheretheycancompletetheirpayment.
Skrill2014
Page42
SkrillPHPLibraryGuide1.6
7.2. Paysafecard
Paymentmethodenablingcustomerstopayonlineusingprepaidvouchers.Vouchersareforfixed
denominationsandcanbecombined.
7.2.1.Preauthorization(Paysafecard)
Thisrequestobtainsauthorizationfortheonlinevoucherpayment.Belowisanexampleofthe
request.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create the Paysafecard request object
$pay = new SkrillPsp_PaySafeCardPA();
Skrill2014
Page43
SkrillPHPLibraryGuide1.6
$result = $pay->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Belowarefurtherdetailsoftherequestobjectsusedwiththispaymentmethod.
Table74:RequestobjectsusedwithPaysafecardpreauthorization
RequestObject
Description
newSkrillPsp_PaysafecardPA()
CreatesthePaysafecardrequestobject.
setUri()
SetstheAPIendpointforthispaymentmethod.Youmustinclude
yourmerchantIDandchannelID.
setParameters
Setstheparameterstobeincludedinthepreauthorization
request.Adescriptionofthemandatoryparametersisincluded
below.
showJson()
DisplaysthelistofreturnedresponseinJSONformat.
makeCall()
InvokestherequesttoPaysafecard.
Skrill2014
Page44
SkrillPHPLibraryGuide1.6
Table75:ParametersusedwithPaysafecardpreauthorization
FieldName
Description
Required
Length/format
transaction_id
Afreetextfieldincludedbyyoutotrack
thetransaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
amount
Transactionamountinthespecified
Yes
currency.Thereisnodecimalseparator.
Thisnumbermustbeatleasttwodigits.
TheAPIisbuiltonacentbasedISO8583
structurethatdoesnotcaterfordecimals
(e.g.,.or,).Forexample:10=tenEuro
cents,100=1Euro,1000=10Euros.
212
(stringor
integer)
currency
Currencythatthetransactionisprocessed
in.CurrencycodeisaccordingtotheISO
4217specification.
Yes
3
(alpha)
locale
Localeofthepaymentpage(e.g.,"en",
"de",).
No
2
(alpha)
country
ListsthecountrieswherePaysafecardis
supported(e.g.,DE,FR,GR,AT).
No
2letterISO
countrycode
country_
restriction
Listsanycountriesyouwanttobe
excluded.
No
2letterISO
countrycode
minimum_age
RestrictsthePaysafecarduseraccountto
usersofthisageorabove.
No
2letternumber.
kyc_level
Definesthelevelofcustomerverification
required.Optionsare:
No
Alpha
simpletextandemail
documentproofofidentityand
address
postidentGermanyonly,full
proofofidentity,pluspickupform
atpostoffice
response_url
Enablestheresponsedatatoberedirected Yes
toSkrill.Note:thismustbeinHTTPS
format.Yourservershouldrespondtoa
POSTtothisURLbyreturningHTTP200
withOKinthemessagebody.
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoforasuccessfulpayment.
Yes
Anylength
(alphanumeric)
error_url
TheURLtowhichthepayerwillbe
redirectedtoincaseofunsuccessful
payment.
Yes
Anylength
(alphanumeric)
Skrill2014
Page45
SkrillPHPLibraryGuide1.6
7.2.1.1. Skrillresponse
Belowisanexampleoftheresponsetothepreauthorizationrequest.
{
"result": {
"identification": {
"transactionid": "MerchantAssignedID",
"uniqueid": "df62b42b0a4a41f5abfe271ea53170f1",
"shortid": "3731.6399.6317",
"customerid": "customerid 12345"
},
"method": "paysafecard",
"type": "preauthorization",
"level": 0,
"code": 0,
"message": "new",
"processing": {
"timestamp": "2014-01-16T12:36:17+00:00",
"redirecturl": "https://customer.test.at.paysafecard.com/psccustomer/
GetCustomerPanelServlet?mid=1000004553&mtid=373163996317&amount=1.00¤cy=EUR"
},
"merchant": {
"key0": "Value0",
"key1": "Value1",
"key2": "Value2"
}
},
"id": 1,
"jsonrpc": "2.0"
}
Table76:Paysafecardresponseparameters
Parameter
Description
Length/format
transaction_id
Theuniquevalueyouprovidedintherequest.
0256
(alphanumeric)
unique_id
ThisvalueisareferencethatisgeneratedbySkrills
paymentplatformtouniquelyidentifythetransaction.
32
(alpha)
method
Thisvalueindicatesthemethodusedintheoriginal
transactionrequest.Forexample:paysafecard.
Anylength
type
Anabbreviationonthetypeofrequestthatwasinvoked
inyourrequest.Forexample:debit
23
(alpha)
alias
Thetypeofrequestthatwasinvoked.Forexample:
preauthorization
Anylength
level
ThisvaluedepictsthelevelthattheresponseIDiscoming 12
from:
(numeric)
0=PaymentServiceLevel(ACKresponse)
1=FormatError(frontendvalidationerrors)
2=SystemError(configuration/connectivityerrors)
3>=Intheeventofanerrorthelevelvaluewilldepict
whatacquirertheerrorresideswith(NOKresponse)
code
Avaluethatindicatesthestatusofthetransaction.For
example:0
12
(numeric)
message
Amessagethatdescribesthestatusofthetransaction.
Forexample:new.
128
(alphanumeric)
Skrill2014
Page46
SkrillPHPLibraryGuide1.6
Table76:Paysafecardresponseparameters
Parameter
Description
Length/format
timestamp
Thedateandtimestampofthetransactioninthe
followingformat:YYYYMMDDHH:MM:SS
19
(alphanumeric)
redirect_url
Usedinthereturnresponsefollowingthedirectpayment Nolength
request.Yourwebserversshouldusethisresponseto
restriction
redirectthecustomertothePaysafecardwebsite.
(alphanumeric)
7.2.2.Testing
YoucanusethefollowingdetailstotestyourPaysafecardtransactions.
Table77:PaysafecardPINs
PIN
Amount
Currency
8888888888804380
500
eur
8888888883004381
500
skk
8888888883104381
10000
skk
30000000000043805
100
eur
5000000000004380
51.13
eur
Testlogincredentials
User:skrilltest01
Password:Paysafe1!
Skrill2014
Page47
SkrillPHPLibraryGuide1.6
7.3. SkrillDirect
SkrillDirectisaninstantonlinepaymentmethodthatenablescustomerstopaydirectlyfromtheir
onlinebankingaccount.
7.3.1.Preauthorization(SkrillDirect)
Thisrequestobtainsauthorizationfortheonlinebanktransfer.Belowisanexampleoftherequest.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create SkrillDirect request object
$skrill = new SkrillPsp_SkrillDirect();
Skrill2014
Page48
SkrillPHPLibraryGuide1.6
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Belowarefurtherdetailsoftherequestobjectsusedwiththispaymentmethod..
Table78:RequestobjectsusedwithSkrillDirectpreauthorization
RequestObject
Description
newSkrillPsp_SkrillDirect()
CreatestheSkrillDirectrequestobject.
setUri()
SetstheAPIendpointforthispaymentmethod.Youmustinclude
yourmerchantIDandchannelID.
setParameters
Setstheparameterstobeincludedinthepreauthorization
request.Adescriptionofthemandatoryparametersisincluded
below.
showJson()
DisplaysthelistofreturnedresponseinJSONformat.
makeCall()
InvokestherequesttoSkrillDirect.
Table79:SkrillDirectpaymentparameters
FieldName
Description
transaction_id
Afreetextfieldincludedbyyoutotrackthe Yes
transaction.Thisshouldbeunique.
Skrill2014
Required
Length/format
0256
(alphanumeric)
Page49
SkrillPHPLibraryGuide1.6
Table79:SkrillDirectpaymentparameters
FieldName
Description
Required
Length/format
amount
Transactionamountinthespecified
currency.
Yes
212(stringor
integer)
currency
Currencyidentifier(Alpha3ISO4217code).
Yes
3
(alpha)
descriptor
Commentordescriptionofthetransaction.
Yes
1256
(alpha)
recipient
Youcanaddanadditionalmerchant
descriptionhere.
No
1256
(Alphanumeric)
account_
holder
Theaccountholdersname.
Yes
Account_
number
Thecustomersaccountnumber.
routing_
number
Thecustomersroutingnumberorsort
code.
Yes
6digits
(numeric)
country
Thebankcountry.
Yes
2digitISOcode
response_url
Enablestheresponsedatatoberedirected Yes
toSkrill.Note:thismustbeinHTTPSformat.
YourservershouldrespondtoaPOSTtothis
URLbyreturningHTTP200withOKinthe
messagebody.
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofsuccessfulpayment.
Yes
Anylength
(alphanumeric)
error_url
TheURLtowhichthepayerwillbe
redirectedtoincaseofunsuccessful
payment.
Yes
Anylength
(alphanumeric)
(alphanumeric)
Yes
(numeric)
7.3.1.1. Responseexample
TheexamplebelowshowstheresponsereturnedfromSkrill.
{
"result":
{
"identification":
{
"transactionid": "transactionID",
"uniqueid": "f29331af11914ab297677de3b3a47404",
"shortid": "1379.4044.4186",
"customerid": "customerID"
},
"method": "skrilldirect",
"type": "preauthorization",
"level": 0,
"code": 0,
"message": "waiting",
"processing":
{
"timestamp": "2013-09-17T07:45:26+00:00",
"redirecturl": "https://payment.onlinebanktransfer.com/secure/payment/
?ngpID=1000001523607&hash=Uk1PcXdvYkRyc0s5U2NPT01CRld3NXhPQ1NuQ29jTyt3NzFmdzZVMA=="
}
},
"id": 1,
Skrill2014
Page50
SkrillPHPLibraryGuide1.6
"jsonrpc": "2.0"
}
7.3.2.Testing
YoucanusethefollowingparameterstotestyourSkrillDirectintegration:
Table710:
Account/routingnumber
PIN
TIN
56341200
123456
111111
7.4. SkrillWallet
TheSkrillDigitalWalletenablescustomerstopayusingtheirbankaccount,debitandcreditcards,
withouthavingtoenteranysensitivedetailsonline.Customersalsohaveaccesstoawiderangeof
alternativepaymentmethods.
7.4.1.Preauthorization(SkrillWallet)
ThisrequestobtainsauthorizationfortheSkrillWalletpayment.Belowisanexampleoftherequest.
ParametersuniquetoSkrillWalletarehighlighted.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create SkrillWallet PA request object
$obj = new SkrillPsp_SkrillWalletPreauthorization();
// Set service endpoint
$obj->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet");
//Set request parameters
$obj->setParameters(array(
'identification' => array(
'transactionid' => 'RT126',
'customerid' => 'TYY66'
),
'frontend' => array(
'responseurl' => 'http://www.merchant.com/response.php',
'successurl' => 'http://merchant.com/success.php',
'successurl_url_text' => 'Return to sample merchant',
'errorurl' => 'http://merchant.com/error.php',
'language' => 'EN',
'errorurl_url_target' => '4',
'new_window_redirect' => '1',
'ext_ref_id' => '12345',
'confirmation_note' => Confirmation comments',
'logo_url' => 'http://merchant.com/logo.gif',
'rid' => '2323',
'detail_description1' => 'test description',
'detail_text1' => 'test details
),
'payment' => array(
'amount' => '500',
'currency' => 'EUR',
'descriptor' => 'Your order details'
),
'customer' => array(
Skrill2014
Page51
SkrillPHPLibraryGuide1.6
'name' => array(
'firstname' => 'Nick',
'lastname' => Smith
),
'address' => array(
'street' => 21 Lane',
'zip' => '45454',
'city' => 'Birmingham',
'country' => 'UK'
),
'contact' => array(
'email' => 'mb654@abv.bg',
'ip' => '124.0.0.12'
)
)
));
// Display the request in JSON format
echo $obj->showJson();
// Make SkrillWallet PA request
$result = $obj->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page52
SkrillPHPLibraryGuide1.6
Belowarefurtherdetailsoftherequestobjectsusedwiththispaymentmethod..
Table711:RequestobjectsusedwithSkrillWalletpreauthorization
RequestObject
Description
new
SkrillPsp_SkrillWalletPreauthor
ization()
CreatestheSkrillWalletrequestobject.
setUri()
SetstheAPIendpointforthispaymentmethod.Youmustinclude
yourmerchantIDandchannelID.
setParameters
Setstheparameterstobeincludedinthepreauthorization
request.Adescriptionofthemandatoryparametersisincluded
below.
showJson()
DisplaysthelistofreturnedresponseinJSONformat.
makeCall()
InvokestherequesttoSkrillWallet.
Table712:SkrillWalletpreauthorizationparameters
FieldName
Description
Required
Length/format
transaction_id
Afreetextfieldincludedbyyoutotrack
thetransaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
amount
Transactionamountinthespecified
Yes
currency.
Thereisnodecimalseparator.This
numbermustbeatleasttwodigits.The
APIisbuiltonacentbasedISO8583
structurethatdoesnotcaterfor
decimals(e.g.,.or,).Forexample:
10=tenEurocents,100=1Euro,1000=
10Euros.
212
(stringorinteger)
currency
Currencythatthetransactionis
Yes
processedin.Currencycodeisaccording
totheISO4217specification.
3
(alpha)
descriptor
Commenttotheinvoice.
Enablesyoutoaddadescriptiontobe
displayedonthecustomersbank
statement.
Yes
1256
(alpha)
account_holder
SkrillWalletaccountholdername.
Yes
50(alphanumeric)
recipient_descripti
on
AdescriptiontobeshownontheSkrill
Gatewaypage.Ifnovalueissubmitted,
thepay_to_emailvalueisshownasthe
recipientofthepayment.
No
30(alphanumeric)
response_url
TheURLtowhichSkrillsendsthe
responsedata.
Yes
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofsuccessful
payment.
Yes
Anylength
(alphanumeric)
Skrill2014
Page53
SkrillPHPLibraryGuide1.6
Table712:SkrillWalletpreauthorizationparameters
FieldName
Description
Required
Length/format
error_url
TheURLtowhichthecustomerwillbe
redirectedtoincaseofunsuccessful
payment
Yes
Anylength
alphanumeric)
error_url_url_targ
et
Thetargetinwhichthereturn_urlvalue
isdisplayeduponanerror.Defaultvalue
is1.
1='_top'2='_parent'3='_self'
4='_blank'
new_window_redi
rect
Youcanredirectcustomersanew
windowinsteadofinthesamebrowser
window(e.g.,foronlinebanktransfer
paymentmethods).
No
0(default)
or1(newwindow).
language
2lettercodeofthelanguageusedfor
Skrillspages.CanbeanyofEN,DE,ES,
FR,IT,PL,GRRO,RU,TR,BG,CN,CZ,NL,
DA,SVorFI.
Yes
2lettercode
confirmation_note
Thisenablesyoutodisplaya
No
confirmationmessageorotherdetailsat
theendofthepaymentprocess.
Linebreaks<br>canbeusedforlonger
messages.
240characters
(alphanumeric)
logo_url
TheURLofthelogowhichyouwouldlike No
toappearatthetopoftheSkrillpage.
ThelogomustbeaccessibleviaHTTPSor
itwillnotbeshown.
Forbestresultsuselogoswith
dimensionsupto200pxinwidthand
50pxinheight.
240characters
(alphanumeric)
rid
YoucanpassauniquereferralIDor
emailofanaffiliatefromwhichthe
customerisreferred.Theridvaluemust
beincludedwithintheactualpayment
request.
No
100characters
(alphanumeric)
ext_ref_id
Youcanpassadditionalidentifierinthis
fieldinordertotrackyouraffiliates.You
mustinformyouraccountmanager
abouttheexactvaluethatwillbe
submittedsothataffiliatescanbe
tracked.
No
100characters
(alphanumeric)
payment_methods
Acommaseparatedlistofpayment
methodcodes,indicatingthepayment
methodstobepresentedtothe
customer.Ifincluded,thecustomeris
presentedwiththeselectedpayment
methodsandtheircorrespondinglogos.
No
3digitcode.
Skrill2014
Page54
SkrillPHPLibraryGuide1.6
Table712:SkrillWalletpreauthorizationparameters
FieldName
Description
Required
detail_description
Enablesyoutoaddadditionaldetails
No
abouttheproductintheMore
informationsectionintheheaderofthe
SkrillGatewaypage.
240characters
(alphanumeric)
detail_text
Shownnexttothedetail_description
andisalsoshowntothecustomerin
theirSkrillDigitalWalletaccounthistory.
240characters
(alphanumeric)
No
Length/format
7.4.1.1. Preauthorisationresponse
Belowisanexampleofthepreauthorizationresponse.
{
"result":
{
"identification":
{
"transactionid": "MerchantAssignedID",
"uniqueid": "83ed01cce74ac43061b5ab3c91e51dad",
"shortid": "0019.6099.9707"
},
"level": "14",
"code": "0",
"method": "skrillwallet",
"type": "preauthorization",
"message": "new",
"processing":
{
"timestamp": "2013-03-12 15:54:11",
"redirecturl": "https://www.skrill.com/app/
payment.pl?sid=6e1ba0c61c1e547bcd4cc37b2c567ccc"
}
},
"id": 1,
"jsonrpc": "2.0"
}
7.4.2.SkrillWalletrefund
ThisrequestcanbeusedtoissuearefundforaSkrillWalletpayment.Belowisanexampleofthe
request.ParametersuniquetoSkrillWalletrefundsarehighlighted.
?php
require_once 'lib/SkrillPSP.php';
try {
// Create Skrill Wallet Refund request object
$refund = new SkrillPsp_SkrillWalletRefund("83ed01cce74ac43061b5ab3c91e51dad");
// Set service endpoint
$refund->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet");
//Set request parameters
$refund->setParameters(array(
'identification' => array(
'transactionid' => 'RT126'
),
'payment' => array(
'amount' => '600',
'currency' => 'eur',
'descriptor' => 'wallet refund'
)
));
Skrill2014
Page55
SkrillPHPLibraryGuide1.6
Belowarefurtherdetailsoftherequestobjectsandparametersusedwiththispaymentmethod..
Table713:RequestobjectsusedwithSkrillWalletrefund
RequestObject
Description
new
SkrillPsp_SkrillWalletRefund()
CreatestheSkrillWalletrefundrequestobject.Yourargument
shouldincludetheuniqueIDforreturnedwiththeoriginal
transaction.Forexample:newSkrillPsp_SkrillWalletRefund
("83ed01cce74ac43061b5ab3c91e51dad");
setUri()
SetstheAPIendpointforthispaymentmethod.Youmustinclude
yourmerchantIDandchannelID.
setParameters
Setstheparameterstobeincludedinthepreauthorization
request.Adescriptionofthemandatoryparametersisincluded
below.
showJson()
DisplaysthelistofreturnedresponseinJSONformat.
Skrill2014
Page56
SkrillPHPLibraryGuide1.6
Table713:RequestobjectsusedwithSkrillWalletrefund
makeCall()
InvokestherefundrequesttoSkrillWallet.
Table714:SkrillWalletrefundparameters
FieldName
Description
Required
Length/format
channel_id
transaction_id
Afreetextfieldincludedbyyoutotrack
thetransaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
reference_id
Usedtorefertoaprevioustransaction.
Yes
ThismustbetheuniqueIDgeneratedby
Skrilltotrackthetransaction.
32
(alphanumeric)
amount
Refundamountinthespecifiedcurrency. Yes
212
(stringorinteger)
Thereisnodecimalseparator.This
numbermustbeatleasttwodigits.
currency
Currencythattherefundisprocessedin. Yes
CurrencycodeisaccordingtotheISO
4217specification.
3
(alpha)
descriptor
Enablesyoutoaddadescriptiontobe
displayedonthecustomersbank
statement.
1256
(alpha)
Yes
7.4.2.1. Refundresponse
BelowisanexampleoftheresponsetotheSkrillWalletrefundrequest.
{
"result":
{
"identification":
{
"transactionid": "MerchantAssignedID",
"uniqueid": "0a8480bc0b8646ec8c1e6ccbd7ca71d5",
"shortid": "1322.1463.4193"
},
"method": "skrillwallet",
"type": "refund",
"level": 0,
"code": 0,
"message": "approved",
"clearing":
{
"amount": "08",
"currency": "EUR",
"descriptor": "wallet refund"
},
"processing": {"timestamp": "2013-11-25T15:00:04+00:00"}
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page57
SkrillPHPLibraryGuide1.6
7.4.3.SkrillWalletcredit(SendMoney)
ThisrequestcanbeusedtosendmoneyormakeapayouttothecustomersSkrillWalletaccount.
Belowisanexampleoftherequest.ParametersuniquetoaSkrillWalletcreditarehighlighted.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create SkrillWallet SendMoney request object
$send = new SkrillPsp_SkrillWalletCredit();
// Set service endpoint
$send->setUri('https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet');
//Set request parameters
$send->setParameters(array(
'identification' => array(
'transactionid' => 'TY6788',
'customerid' => '123456'
),
'payment' => array(
'amount' => '203',
'currency' => 'eur',
'subject' => 'Your payment,
'note' => details'
),
'customer' => array(
'contact' => array(
'email' => 'nb@di.nf',
'ip' => '127.0.0.1'
)
)
));
// Display the request in JSON format
echo $send->showJson();
// Make Skrill Wallet Credit request
$result = $send->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
Skrill2014
Page58
SkrillPHPLibraryGuide1.6
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Belowarefurtherdetailsoftherequestobjectsandparametersusedwiththispaymentmethod.
Table715:SkrillWalletCreditparameters
FieldName
Description
Required
Length/format
transaction_id
Afreetextfieldincludedbyyoutotrackthe
transaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
amount
Theamounttosendtothecustomer.The
minimumamountis01.
Yes
212(stringor
integer)
currency
Thecurrencyofthetransaction.Theamount
willbesentinthiscurrency.Providethe3digit
3ISO4217currencycode.
Yes
3digitcurrency
code
descriptor
Youcanaddabriefsubjectforthecredit
request.Thisisdisplayedintheemailsubject
fieldofthemessagesenttothecustomer.
Yes
1625
(alphanumeric)
note
Youcanaddamoredetaileddescriptionofthe
transaction,whichisdisplayedinthebodyof
themessagesenttothecustomer.
Yes
firstname
Customersfirstname.
No
240(alpha)
lastname
Thecustomerssurname.
No
240(alpha)
IP
TheIPaddressofthecustomer.
No
15
(alphanumeric)
Thecustomerorusersemailaddress.
Yes
6128
(alphanumeric)
7.4.3.1. Creditresponse
BelowisanexampleoftheresponsetotheSkrillWalletcreditrequest.
{
"result": {
"identification": {
"transactionid": "Marcel 0002",
"uniqueid": "f29c7caca06e40c88ef67337e0e6a9c9",
"shortid": "5067.9576.6150",
"customerid": "customerid 12345"
},
"method": "skrillwallet",
"type": "credit",
"level": 0,
"code": 0,
"message": "approved",
"clearing": {
Skrill2014
Page59
SkrillPHPLibraryGuide1.6
"amount": "1.20",
"currency": "EUR"
},
"processing": {
"timestamp": "2013-11-27T10:00:36+00:00"
}
},
"id": 1,
"jsonrpc": "2.0"
}
7.4.3.2. Creditresponsefornonregistereduser
Belowisanexampleoftheresponsetothecreditrequest.
{
"result": {
"identification": {
"transactionid": "Marcel 0002",
"uniqueid": "0ac8ab8492814a6caf1816efbca8e4a6",
"shortid": "2681.8077.0807",
"customerid": "customerid 12345"
},
"method": "skrillwallet",
"type": "credit",
"level": 1,
"code": 518,
"message": " skrill Wallet send money status PENDING",
"advice": " Declined - beneficiary's email address is not registered"
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page60
SkrillPHPLibraryGuide1.6
7.4.4.Skrill1Tapregisterrequest
Belowisanexampleofthepreauthorizationrequesttosetupa1Tappayment.Youmustbeenabled
foronetaptousethisservice.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create OneTap Register object
$one = new OneTap_Register();
// Set service endpoint
$one->setUri('https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet');
// Set request parameters
$one->setParameters(array(
'identification' => array(
'transactionid' => 'RT5',
'customerid' => 'TYy6868'
),
'payment' => array(
'amount' => '1984',
'currency' => 'eur',
'descriptor' => 'descriptor line',
'payment_methods' => array(
'SFT',
'LSR'
)
),
'frontend' => array(
'amount_details' => array(
array(
"86",
"amount1 desc1"
),
array(
"678",
"amount2 desc"
)
),
'responseurl' => 'https://merchant.com/response.php',
'successurl' => array(
'url' => 'http:// merchant.com/response.php',
'text' => 'Return to sample merchant',
'target' => '4'
),
'errorurl' => array(
'url' => 'http:// merchant.com/response.php',
'target' => '4'
),
'new_window_redirect' => "1",
'language' => 'EN',
'hide_login' => '1',
'confirmation_note' => 'Thanks for shopping with us',
'logo_url' => 'https:// merchant.com /logo.png',
'rid' => '123445',
'ext_ref_id' => 'AffiliateName',
'detail_descriptions' => array(
array(
"detail description",
"detail text"
),
array(
"detail description",
"detail text"
)
)
),
Skrill2014
Page61
SkrillPHPLibraryGuide1.6
'customer' => array(
'name' => array(
"salutation" => "Mr",
"title" => "Mr",
"firstname" => "John",
"lastname" => "Doe",
"company" => "Skrill"
),
'address' => array(
"street" => "Karl-Liebknecht-Strasse 5",
"zip" => "10117",
"city" => "Berlin",
"state" => "BE",
"contry" => "UK"
),
'contact' => array(
'phone' => '+49302341423',
'mobile' => '+49 172 931 44 01',
'email' => 'mb654@abv.bg',
'ip' => '127.0.0.1'
)
),
'merchant' => array(
'product' => 'Nokia'
)
));
// Allows you to view request in raw json format
echo $one->showJson();
// Make OneTap Register request
$result = $one->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
Skrill2014
Page62
SkrillPHPLibraryGuide1.6
}
Skrill1Tapparameters
Thetablebelowliststheparametersthatshouldbeincludedinthe1Taprequest.
Table716:SkrillWallet1Tapparameters
FieldName
Description
Required
Length/format
remote_method
ThetypeofAPIrequest.Forexample,
onetap.
Yes
String
amount
Theamounttosendtothecustomer.The
minimumamountis01.
Yes
212(stringor
integer)
currency
Thecurrencyofthetransaction.Theamount
willbesentinthiscurrency.Providethe3
digit3ISO4217currencycode.
Yes
3digitcurrency
code(upperor
lowercase)
ondemand_
max_amount
Maximumamountforfuturepaymentsthat
willbedebitedfromthecustomersaccount.
Yes
ondemand_
note
Textshowntothecustomeronthe
confirmationpageasthereasonfortheSkrill
1Tappayment.
Yes
1000
responseurl
TheURLtowhichSkrillsendstheresponse
data.Note:thismustbeinHTTPSformat.
YourservershouldrespondtoaPOSTtothis
URLbyreturningHTTP200withOKinthe
messagebody.
Yes
Any
successurl
TheURLtowhichthecustomerwillbe
redirectedtoforasuccessfulpayment.
Youcanincludeatextdescriptionandthe
URLtargetvalue,definingtheareaonyour
websitewheretheresponseisdisplayed.
1='_top',2='_parent'
3='_self',4='_blank'
Yes
Any
errorurl
TheURLtowhichthecustomerwillbe
redirectedforanunsuccessfulpayment.You
canincludeaURLtargetvalue.
Yes
Any
language
2lettercodeofthelanguageusedforthe
paymentpages.CanbeanyofEN,DE,ES,FR,
IT,PL,GRRO,RU,TR,CN,BG,CZ,NL,DA,SV
orFI.
Yes
Thecustomerorusersemailaddress.
Yes
6128
(alphanumeric)
Notes
Inadditiontotheaboveparameters,youcanaddanamountandtextdescriptiontoyourrequestby
includingthefollowingparameters:
amount_details
Skrill2014
Page63
SkrillPHPLibraryGuide1.6
detail_descriptions
7.4.4.1. Skrill1Tapresponse
YoucanusethereferenceIDreturnedintheresponseasthepaymenttokenforprocessingfuture
transactionsforthiscardholder.
{
"result":
{
"identification":
{
"transactionid": "c16c3378c6c34ed1be1c692b4d087bc0",
"uniqueid": "4707179ff2ca4a32bef006ac32ce8a27",
"shortid": "8663.2679.2135"
},
"method": "skrillwallet",
"type": "onetap",
"level": 0,
"code": 0,
"message": "waiting",
"processing":
{
"timestamp": "2013-12-20T11:27:38+00:00",
"redirecturl": "https://www.moneybookers.com/app/
payment.pl?sid=e758cb49b2ec9b40464156b3b54bbe8f"
}
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page64
SkrillPHPLibraryGuide1.6
7.4.5.UsingtheSkrill1Taptoken
Apaymenttokenisprovidedinthetransactiondetailsreturnedtoyourresponseurlpageaftera
successful1Taprequest.Youcanusethetokentoprocessfurtherpaymentsfromthecustomer,as
shownintheexamplebelow.
<?php
try {
// Create OneTap debit object
$onetap = new OneTap_Debit("b316cb82490044979e8e19345e2bce24");
// Set service endpoint
$onetap->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet");
// Set request parameters
$onetap->setParameters(array(
'identification' => array(
'transactionid' => 'Tyjyj23',
'customerid' => 'yuyuuy'
),
'payment' => array(
'amount' => '567',
'currency' => 'eur',
'descriptor' => 'dkdkdk'
),
'account' => array(
'token' => 'b316cb82490044979e8e19345e2bce24'
)
));
// Allows you to view request in raw json format
echo $one->showJson();
// Make OneTap Debit request
$result = $onetap->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
Skrill2014
Page65
SkrillPHPLibraryGuide1.6
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
7.4.5.1. Skrill1Taptokenresponse
{
"result":
{
"identification":
{
"transactionid": "MerchantAssignedID",
"uniqueid": "8e707e07e447468eaa78fd30c25daae4",
"shortid": "3916.1769.4186",
"customerid": "customerid 12345",
"referenceid": "b316cb82490044979e8e19345e2bce24"
},
"method": "skrillwallet",
"type": "onetap",
"level": 0,
"code": 0,
"message": "approved",
"account": {"token": "b316cb82490044979e8e19345e2bce24"},
"clearing":
{
"amount": "10.80",
"currency": "EUR"
},
"processing": {"timestamp": "2013-12-20T11:28:55+00:00"}
},
"id": 1,
"jsonrpc": "2.0"
}
7.4.6.Skrill1TapStatusrequest
ThisoptionenablesyoutocheckthestatusofaSkrill1Taprequest.Youwillneedtoincludetheone
taptokeninyourrequest,asshownbelow.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create Onetap Status object
$tab = new OneTap_Status("5504eaee2ef54e369ba620cb716426f1");
// Set service endpoint
$tab->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet");
// Set request parameters
$tab->setParameters(array(
'identification' => array(
'transactionid' => 'TYYY',
'customerid' => 'HJJJ67'
),
'account' => array(
'token' => 'fkfkfkfk'
)
));
// Allows you to view request in raw json format
echo $tab->showJson();
// Make OneTap Status request
$result = $tab->makeCall();
// check response object for success or error
if($result->isSuccess()) {
Skrill2014
Page66
SkrillPHPLibraryGuide1.6
7.4.6.1. Skrill1TapStatusresponse
Belowisanexampleoftheresponsetoa1Tapstatusrequest.
{
"result":
{
"identification":
{
"transactionid": "c16c3378c6c34ed1be1c692b4d087bc0",
"uniqueid": "de3df200e5a441d3b0089897ac66257d",
"shortid": "6380.6105.7980"
},
"method": "skrillwallet",
"type": "status",
"level": 0,
"code": 0,
"message": "cancelled",
"account": {"token": "b316cb82490044979e8e19345e2bce24"},
"processing":
{
"last_execution": " Last execution date: 20-12-2013\n",
"timestamp": "2013-12-20T11:37:48+00:00"
}
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page67
SkrillPHPLibraryGuide1.6
7.4.7.Skrill1TapCancelrequest
ThisoptionenablesyoutocanceltheSkrill1TaptokensetupinthePaymentGateway.Youwillneed
toincludetheonetaptokeninyourrequest,asshownbelow.
try {
// Create OneTap cancel object
$onetap = new OneTap_Cancel("5504eaee2ef54e369ba620cb716426f1");
// Set service endpoint
$onetap->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrillwallet/skrillwallet");
// Set request parameters
$onetap->setParameters(array(
'identification' => array(
'transactionid' => 'Tyjyj23',
'customerid' => 'yuyuuy'
),
'account' => array(
'token' => 'fjfjfj'
)
));
// Allows you to view request in raw json format
echo $one->showJson();
// Make OneTap Cancel request
$result = $onetap->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Skrill2014
Page68
SkrillPHPLibraryGuide1.6
7.4.7.1. Skrill1TapCancelresponse
Belowisanexampleoftheresponsetoa1Tapcancelrequest.
{
"result":
{
"identification":
{
"transactionid": "c16c3378c6c34ed1be1c692b4d087bc0",
"uniqueid": "e896f1bcc61f4dfeabe223eb719e1255",
"shortid": "6876.3019.6103"
},
"method": "skrillwallet",
"type": "cancel",
"level": 0,
"code": 0,
"message": "approved",
"account": {"token": "b316cb82490044979e8e19345e2bce24"},
"processing": {"timestamp": "2013-12-20T11:29:22+00:00"}
},
"id": 1,
"jsonrpc": "2.0"
}
Skrill2014
Page69
SkrillPHPLibraryGuide1.6
7.4.8.SkrillWalletPaymentmethods
ThefollowingpaymentmethodsaresupportedonSkrillWallet:
Table717:SkrillWalletpaymentmethodcodes
PaymentMethod
Value
SupportedCountries
Wallet
WLT
ALL
AllCardTypes
ACC
ALL
Visa
VSA
ALL
MasterCard
MSC
ALL
VisaDelta/Debit
VSD
UnitedKingdom
VisaElectron
VSE
ALL
Maestro
MAE
UnitedKingdom,Spain&Austria
AmericanExpress
AMX
ALL
Diners
DIN
ALL
JCB
JCB
ALL
CarteBleue
GCB
France
Dankort
DNK
Denmark
PostePay
PSP
Italy
CartaSi
CSI
Italy
SkrillDirect(OnlineBank
Transfer)
OBT
Germany,UnitedKingdom,France,Italy,Spain,
HungaryandAustria
Giropay
GIR
Germany
DirectDebit/ELV
DID
Germany
Sofortueberweisung
SFT
Germany,Austria,Belgium,Netherlands,
Switzerland&UnitedKingdom
eNETS
ENT
Singapore
NordeaSolo
EBT
Sweden
NordeaSolo
SO2
Finland
iDEAL
IDL
Netherlands
EPS(Netpay)
NPY
Austria
POLi
PLI
Australia
AllPolishBanks
PWY
Poland
INGBanklski
PWY5
Poland
PKOBP(PKOInteligo)
PWY6
Poland
Credit/DebitCards
InstantBankingOptions
Skrill2014
Page70
SkrillPHPLibraryGuide1.6
Table717:SkrillWalletpaymentmethodcodes
PaymentMethod
Value
SupportedCountries
Multibank(Multitransfer)
PWY7
Poland
LukasBank
PWY14
Poland
BankBPH
PWY15
Poland
InvestBank
PWY17
Poland
PeKaOS.A.
PWY18
Poland
Citibankhandlowy
PWY19
Poland
BankZachodniWBK(Przelew24)
PWY20
Poland
BG
PWY21
Poland
Millenium
PWY22
Poland
mBank(mTransfer)
PWY25
Poland
PaczInteligo
PWY26
Poland
BankOchronyrodowiska
PWY28
Poland
Nordea
PWY32
Poland
FortisBank
PWY33
Poland
DeutscheBankPBCS.A.
PWY36
Poland
ePay.bg
EPY
Bulgaria
Skrill2014
Page71
SkrillPHPLibraryGuide1.6
7.5. Yandex
Yandex.moneyisapopulareWalletandpaymentservice,offeredbyYandex,Russiasprimarysearch
engine,whichisusedbyover56millionusersworldwide.Customerscanmakeonlinepaymentsin
realtime,fromtheireWalletaccount,withoutpayingacommission.
7.5.1.Preauthorization(Yandex)
Thisrequestobtainsauthorizationfortheonlinepayment.Belowisanexampleoftherequest.
<?php
require_once 'lib/SkrillPSP.php';
try {
// Create Yandex request object
$yandex = new SkrillPsp_Yandex();
// Set service endpoint
$yandex->setUri ("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
testchannel_yandex/yandex");
// Set request parameters
$yandex->setParameters(array(
'identification' => array(
'transactionid' => 'TY',
'customerid' => '5666'
),
'payment' => array(
'amount' => '4444',
'currency' => 'EUR',
'country' => 'RU',
'descriptor' => 'Description'
),
'frontend' => array(
'language' => 'EN',
'responseurl' => 'https://merchant.com/wpf_response.php',
'successurl' => 'https://merchant.com/success_url.php',
'errorurl' => 'https:// merchant.com/error_url.php'
),
'customer' => array(
'contact' => array(
'email' => 'test@dir.bg',
'ip' => '129.0.0.10'
)
)
));
// View request in JSON format
echo $yandex->showJson();
// Make Yandex request
$result = $yandex->makeCall();
// check response object for success or error
if($result->isSuccess()) {
// work with result method and properties
$identity = $result->getIdentification();
$payment = $result->getPayment();
echo $token = $result->getTokenFromAccount();
echo $result->type;
echo "<br />";
echo $result->message;
echo "<br />";
echo $result->method;
echo $result->getCode();
echo "<br />";
echo $result->getLevel();
}
Skrill2014
Page72
SkrillPHPLibraryGuide1.6
else {
// work with error data
$data = $result->getErrorData();
$errorData = $result->getError();
var_dump($data);
echo $errorData->code;
echo $errorData->message;
echo $result->getErrorLevel();
echo "<br />";
echo $result->getErrorMessage();
echo $result->getErrorCode();
echo $result->getErrorDataMessage();
echo $result->getId();
echo "<br />";
foreach ($data as $val)
{
echo "$val<br />";
}
}
catch (SkrillPsp_Exception $e) {
echo $e->getMessage();
}
Belowarefurtherdetailsoftheparametersusedwiththispaymentmethod.
Table718:ParametersusedwithYandex
FieldName
Description
Required
Length/format
transaction_id
Afreetextfieldincludedbyyoutotrack
thetransaction.Thisshouldbeunique.
Yes
0256
(alphanumeric)
amount
Transactionamountinthespecified
Yes
currency.Thereisnodecimalseparator.
Thisnumbermustbeatleasttwodigits.
TheAPIisbuiltonacentbasedISO8583
structurethatdoesnotcaterfordecimals
(e.g.,.or,).Forexample:10=tenEuro
cents,100=1Euro,1000=10Euros.
212
(stringor
integer)
currency
Currencythatthetransactionisprocessed
in.CurrencycodeisaccordingtotheISO
4217specification.
3
(alpha)
response_url
TheURLtowhichthetransactionresponse Yes
dataissent.Note:thismustbeinHTTPS
format.Yourservershouldrespondtoa
POSTtothisURLbyreturningHTTP200
withOKinthemessagebody.
Anylength
(alphanumeric)
success_url
TheURLtowhichthecustomerwillbe
redirectedtoforasuccessfulpayment.
Yes
Anylength
(alphanumeric)
error_url
TheURLtowhichthepayerwillbe
redirectedtoincaseofunsuccessful
payment.
Yes
Anylength
(alphanumeric)
Skrill2014
Yes
Page73
SkrillPHPLibraryGuide1.6
7.5.1.1. Responseexample
BelowisadescriptionoftheparametersreturnedinaresponsetoaYandexrequest.
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"code": "0",
"identification": {
"shortid": "0039.0344.9374",
"transactionid": "MerchantAssignedID",
"uniqueid": "d0a56d001568dde31f7a28275604ee99"
},
"level": "16",
"message": "new",
"method": "webmoney",
"processing": {
"redirecturl": "http://test.transfers.com?tokenId=625ad496-6a21-491891a4-e2fbfb270d28",
"timestamp": "2013-04-11T13:13:02+01:00"
},
"type": "pa"
}
}
YoucanusetheredirecturlprovidedintheresponsetoredirectthecustomertotheYandexpayment
page,wheretheycancompletetheirpayment.
Skrill2014
Page74
SkrillPHPLibraryGuide1.6
8. TESTINGYOURCONNECTION
8.1. Usingtestdata
Seebelowfortestcarddetailsthatyoucanusetoprocesstesttransactions.
8.2.1.Non3DSecuretransactions
Table81:Visatestcarddetails
Testcardvalues
ExpectedResults
MerchantAction
PAN=4000000000000051
Expiry=01/2016
CVV=123
Successfultokengeneration
Storeandusethe
token
Table82:MasterCardtestcarddetails
Testcardvalues
ExpectedResults
MerchantAction
PAN=5200000000000056
Expiry=01/2016
CVV=123
Successfultokengeneration
Storeandusethe
token
8.3.1.3DSecuretransactions
Table83:Visatestcarddetails
Testcardvalues
ExpectedResults
MerchantAction
Liabilityshift
PAN=4000000000000002
Expiry=01/2016
CVV=123
3DSecurewindow
displayed.
Successfultoken
generationupon
completionof3DSecure.
Merchantshould
appendthe
CAVVandtoken
valuestothe
authorisation
request.
Yes
Table84:MasterCardtestcarddetails
Testcardvalues
ExpectedResults
MerchantAction
Liabilityshift
PAN=5200000000000007
Expiry=01/2016
CVV=123
3DSecurewindow
displayed.
Successfultoken
generationupon
completionof3DSecure.
Merchantshould
appendthe
CAVVandtoken
valuestothe
authorisation
request.
Yes
Skrill2014
Page75
SkrillPHPLibraryGuide1.6
8.1. Testingerrorhandling
Refertothetablebelowforalistoflevel4errormessagesforsimulating3cardpayments.Youcan
triggertheseerrorsbyincludingthecodeinthepaymentamountforthetransactiononthetest
environment.(Notethatanyamountvaluefrom0to99willtriggerthecorrespondingerror
message).Forexample:
"payment": {
"amount": "01",
"currency": "eur",
"descriptor": "order number"
},
Table85:Level4errormessages
Code
Message
Advice
01
Refertocardissuer
Youshouldcontacttheissuerbeforethetransactioncanbe
approved.
02
Refertocardissuerspecial Specialconditionsmayapplytothiscard.Youshouldcontact
conditions
theissuerbeforethetransactioncanbeapproved.
03
Invalidmerchant
YouhavenotprovidedavalidmerchantID.Pleasecontact
youraccountmanagerormerchantservices.
04
Pickupcard
ThecardnumberhasbeenlistedontheWarningBulletinList
forreasonsofcounterfeitfraudorother.
05
Genericauthorization
decline
Thetransactionwasdeclinedbythecardissuerwithouta
specificreason.Thecustomershouldcontacttheirbankfor
clarification.
06
Error
ThebankingnetworkreturnedaGeneralerrorwithnofurther
explanation.
07
Pickupcardspecial
conditions
ThecardnumberhasbeenlistedontheWarningBulletinList.
Themerchantmayreceiverewardmoneybycapturingthe
card.
08
Honourwithidentification
Thepurchasecanproceed,butweadviseyoutorequestsome
formofidentificationfromthecustomer.
10
Approvalforpartial
amount
Thetransactionhasbeenapprovedforapartialamount.
11
ApprovedVIP
ThecardholderisenrolledintheVIPprogramme.
12
Invalidtransaction
Thebankreceivedaninvalidtransactioncode.The
transactionrequestpresentedisnotsupportedorisnotvalid
forthecardnumber.
13
Invalidamount
Thepurchaseamountwaslessthantheminimumorgreater
thanthemaximumamountallowedforthiscard.
14
Invalidcardnumber
Thecardissuerindicatesthatthiscardisnotvalid.
15
Nosuchissuer
TheissuingbanksidentificationnumberorBINisinvalid.
Pleaseaskthecustomertocheckthecardnumberorusean
alternativepaymentmethod.
Skrill2014
Page76
SkrillPHPLibraryGuide1.6
Table85:Level4errormessages
Code
Message
Advice
17
Customercancellation
Thecustomercancelledthistransaction.
19
Reentertransaction
Enterthetransactiondetailsagainandresendthetransaction.
21
Cancelunsuccessful
Thetransactioncancelrequestwasdeclinedbythebank.This
couldbebecausethetimelimitforacancelhasexpired.
25
Unabletolocaterecordin Therecordcouldnotbelocated.
file
27
Fileupdatefieldediterror
Therewasanerrorwhenupdatingthefile.
28
Filetemporarilynot
availableforupdate
Thisfileiscurrentlynotavailable.Tryagainlater.
30
Messageformaterror
ErrorinthecommunicationbetweenthebankandSkrill.
Pleasecontactyouraccountmanagerormerchantservices.
32
Partialcancel
Onlyapartialcancelispossible.Pleasetrytoreverseasmall
amount.
33
Expiredcardpickup
Thecardhasexpired.Thecustomershouldpayusingan
alternativemethod.
38
Pintriesexceeded
ThenumberofPINtrieshasbeenexceeded.Thecustomer
shouldpayusinganalternativemethod.
40
Functionnotsupported
Thisoptionisnotsupported.Contactmerchantservicesfor
details.
41
Lostcard
Thiscardhasbeenreportedaslost.
43
Stolencard
Thiscardhasbeenreportedasstolen.
51
Insufficientfunds
Thetransactionamountisoverthecustomerscreditlimitor
thecustomerhasinsufficientfundsintheiraccountforthis
transaction.
52
Nocheckingaccount
Notused
53
Nosavingaccount
Notused
54
Expiredcard
Thecardhasexpiredortheexpirationdateisinvalid.
55
Invalidpin
ThePINprovidedisinvalid.
56
Cannotprocess
Thebankingnetworkcouldnotprocessthispayment.No
reasonhasbeenprovided.
57
Transactionnotpermitted Thecardholderisnotpermittedtomakethistransaction.The
bycardholder
customershouldcontacttheirbankfordetails.
58
Transactionnotpermitted Thebankingnetworkdoesnotallowthistypeoftransaction.
byacquirer
Pleasecontactyouraccountmanagerormerchantservices.
61
Exceedsapprovalamount
Skrill2014
Thecardholderhasrequestedawithdrawalamountinexcess
oftheirdailylimit.
Page77
SkrillPHPLibraryGuide1.6
Table85:Level4errormessages
Code
Message
Advice
62
Restrictedcard
Thecardhasbeenrestrictedbythecardissuer.Thecustomer
shouldcontacttheirbankfordetails.
63
Securityviolation
Thecardhasbeenrestricted.
65
Exceedswithdrawal
frequencylimit
Theallowednumberofdailytransactionshasbeenexceeded.
66
Cardacceptorcallacquirer Contactmerchantservicesfordetails.
decline
67
Hardcapture
Notused
68
Responsereceivedtoo
late
Thetransactionhastimedoutbecausetheresponsewas
receivedtoolate.
69
Badclose
Notused
70
Cardalreadyactive
Notused
71
Cardnotagiftcard
Notused
72
Cardalreadyclosed
Notused
73
Overmaximumbalance
Notused
74
Invalidactivategiftcard
Notused
75
Exceedspintries
Theallowednumberofpinentrieshasbeenexceed
76
Latecancel
Thecreditaccountdoesnotexistorisnotassociatedwiththe
cardnumberpresented
77
Canceldoesnotmatch
originaltransaction
Thecancelrequestdoesnotmatchthedetailsoftheoriginal
transaction.
78
Invalidaccountspecified
(general)
Theassociatedcardnumberaccountisinvalidordoesnot
exist.
79
Alreadycancelled.
Alreadycancelled.
80
Processorlinkoutof
service
Notused.
81
Pinkeysyncerror
Notused.
82
InvalidCVV
Notused.
83
Unabletoverifypin
Notused.
85
Noreasontodecline
Notused.
87
NetworkUnavailable
Bankingnetworkisunavailable
88
Cardrecordnotavailable
Notused
91
Issuerswitchinoperative
Thebankisnotavailabletoauthorisethistransaction.
92
Cannotreachnetwork
Thebankingnetworkiscurrentlynotavailable.Pleasetry
againlater.Iftheproblempersists
Skrill2014
Page78
SkrillPHPLibraryGuide1.6
Table85:Level4errormessages
Code
Message
Advice
93
Illegaltransaction
Thistransactionisnotallowed.
94
Duplicatetransaction
Aduplicatetransactionhasbeenmade.Somebanksdecline
transactionsifthesametransactiondetailsaresentmore
thanonceinaveryshorttimeperiod.
95
Reconciliationerror
Reconciliationerror.
96
Systemerror
Thebankingnetworkiscurrentlynotavailable.Pleasetry
againlater.Iftheproblempersistscontactmerchantservices.
97
Noresponsefromhost
NotUsed
98
Duplicatetransaction
Aduplicatetransactionhasbeenmade.Somebanksdecline
transactionsifthesametransactiondetailsaresentmore
thanonceinaveryshorttimeperiod.
99
Credittransactioncanbe
performedasdebit
NotUsed
Skrill2014
Page79
SkrillPHPLibraryGuide1.6
9. APPENDICES
9.1. Responsecodes
9.2.1.Level1:Formaterror(frontendvalidationerrors)
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
Cardnumberismissing
Pleaseprovideacardnumber.
Cardholdernameis
missing
Pleaseenterthenamedisplayedonthecreditcard.
Expirydateismissing
Pleaseprovideanexpirydate.
CVVismissing
PleaseprovidetheCardVerificationValue(CVV).Thisislast3
digitsonthebackofVisaandMasterCardcards,orlast4digits
foranAmexcard.
Expirydateismissing
Pleaseprovideavalidexpirydate.
Amountismissing
Pleaseprovideanamount.
Currencyismissing
Pleaseprovideacurrency.
Descriptorismissing
Pleaseprovideashortdescriptionofthetransaction,toappear
onthecardholdersstatement.
ResponseURLismissing
PleaseprovidearesponseURL.
10
SuccessURLismissing
PleaseprovideasuccessURL.
11
ErrorURLismissing
PleaseprovideanerrorURL.
12
Emailismissing
Pleaseprovideanemailaddress.
13
IPismissing
PleaseprovideanIPaddress.
14
ReferenceIDismissing
PleaseprovideareferenceID.
15
TokenIDismissing
Pleaseprovideatoken.
16
PAResismissing
PleaseprovideaPayerAuthenticationResponse(PARes)value.
17
MDismissing
PleaseprovideaMerchantData(MD)value.
18
CAVVismissing
PleaseprovideaCardholderAuthenticationVerificationValue
(CAVV).
19
XIDismissing
Pleaseprovideatransactionidentifier(XID).
2021
Notinuse
22
Routingnumber/Sort
Codeismissing
Skrill2014
Pleaseprovidethecustomersbankroutingtransitnumberor
sortcode.
Page80
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
23
Countryismissing
PleaseprovideanISO2digitcountrycode.
24
Accountnumberis
missing
Pleaseprovidethecustomersbankaccountnumber.
25
PINismissing
PleaseprovideaPIN.
26
QIWIuserIDismissing
PleaseprovidetheQIWIuserID.Thisisthecustomers
telephonenumber.
27
Detaileddescriptionis
missing
Pleaseprovidethedetaileddescription.
28
Detailedtextismissing
Pleaseprovidethedetailedtext.
29
BoletoFiscalIDis
missing
PleaseprovideaBoletoCustomerFiscalNumber.
30
Receivingcurrencyis
missing
Pleaseprovideareceivingcurrency.
31
Boletocountryis
missing
Pleaseprovideacountry.
32
WebMoneycountryis
missing
Pleaseprovideacountry.
33
Frontendparameters
aremissing
PleaseprovidefrontendparameterssuchasResponseURL,
successURLanderrorURL.
34
SessionIDismissing
PleaseprovideasessionID.
35
iDEALissuerIDis
missing
PleaseprovidetheiDEALissuerIDreturnedbytheDirectory
request.
36
MultiBancocountryis
missing
Pleaseprovideacountry.
37
Neosurfcountryis
missing
Pleaseprovideacountry.
38
Lobanetcountryis
missing
Pleaseprovideacountry.
39
Usageismissing
Pleaseprovideausage.
40
Salutationismissing
Pleaseprovideasalutation.
41
Titleismissing
Pleaseprovideatitle.
42
Firstnameismissing
Pleaseprovideafirstname.
43
Surnameismissing
Pleaseprovideasurname.
45
Streetismissing
Pleaseprovideastreet.
46
Cityismissing
Pleaseprovideacity.
47
Stateismissing
Pleaseprovideastate.
Skrill2014
Page81
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
48
Phonenumberis
missing
Pleaseprovideaphonenumber.
49
Mobilenumberis
missing
Pleaseprovideamobilenumber.
50
Notinuse
51
Cardnumberisinvalid
Pleaseprovideavalidcreditordebitcardnumber.
52
Expirydateisinvalid
Pleaseprovideavalidexpirydate.Thisisanumberinthe
formatDD/YYYY.
53
CVVisinvalid
PleaseprovideavalidCardVerificationValue(CVV).Thisislast
3digitsonthebackofVisaandMasterCardcards,orlast4
digitsforanAmexcard.
54
Amountisinvalid
Pleaseprovideavalidamount.Thismustbeanumberbetween
212characters,withaminimumvalueof01.Amountsare
centbasedandmustnotincludedecimalsorcommas.
55
Currencyisinvalid
Pleaseprovideavalid3digitISOcurrencycode.
56
IPisinvalid
PleaseprovideavalidIPaddress.Thismustbeanumericvalue
of15characters,intheformat:255.255.255.255
57
Salutationisinvalid
PleaseprovideavalidSalutation.Thismustbeanalphabetic
valuebetween26characters.
58
Titleisinvalid
Pleaseprovideavalidtitle.Thismustbeanalphanumericvalue
between120characters.
59
InvalidSkrillRiskscore
InvalidSkrillRiskscore
60
Skrillbankrouting
numberisinvalid
Skrillbankroutingnumberisinvalid
61
TokenVaulterror
Problemprocessingthepaymenttoken.Pleasetryagainor
contactMerchantServices
62
Invalidlanguage
Invalidlanguage
63
Routingnumberis
invalid
Routingnumberisinvalid
64
InvalidPaysafecard
Localeparameter
PleaseprovideavalidPaysafecardLocalevalue,suchas
en_en.
65
InvalidPaysafecard
Minageparameter
PleaseprovideavalidPaysafecardminimumagevalue,suchas
18.
66
InvalidPaysafecardKYC
parameter
PleaseprovideavalidPaysafecardKYClevel,suchasSIMPLE.
67
InvalidQIWILifetime
parameter
PleaseprovideavalidQIWIlifetimevalueinminutes,for
example,15.
68
InvalidYandex
Paysourceparameter
PleaseprovideavalidPaysourceparameter.Thismustalways
beYandex.
Skrill2014
Page82
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
69
InvalidPaysafecard
country
Pleaseprovideavalid2digitISOcountrycode.
70
InvalidURLtargets
PleaseprovideavalidURLtarget.
71
Invalidnewwindow
redirect
PleaseprovideavalidnewwindowredirectURL.
72
Notinuse
73
InvalidHideLogin
PleaseprovideavalidHideLoginparameter.
74
InvalidsuccessURL
PleaseprovideavalidsuccessURL.
75
InvaliderrorURL
PleaseprovideavaliderrorURL.
76
InvalidresponseURL
PleaseprovideavalidresponseURL.
77
InvalidFiscalID
PleaseprovideavalidBoletoCustomerFiscalNumber.
78
InvalidReceiving
currency
Pleaseprovideavalidcurrency.
79
Notinuse
80
InvalidBoletocountry
Pleaseprovideavalid2digitISOcountrycode.
81
InvalidWebmoney
country
Pleaseprovideavalid2digitISOcountrycode.
82
Paysafecardamount
limit
Pleaseprovideavalidamount.Thismustbeacentbased
numberbetween212characters,withoutdecimals.
83
InvalidNeosurfcountry
Pleaseprovideavalid2digitISOcountrycode.
84
InvalidMultibanco
country
Pleaseprovideavalid2digitISOcountrycode.
85
InvalidLobanetcountry
Pleaseprovideavalid2digitISOcountrycode.
86
TransactionIDisinvalid
PleaseprovideavalidtransactionID.Thismustbean
alphanumericvaluebetween0256characters.
87
ReferenceIDisinvalid
PleaseprovideavalidreferenceID.Thismustbean
alphanumericvaluewith32characters.
88
CustomerIDisinvalid
PleaseprovideavalidCustomerID.Thismustbean
alphanumericvaluewith32characters.
89
Descriptorisinvalid
PleaseprovideavalidDescriptor.Thismustbean
alphanumericvaluebetween1255characters.Ifdisplayedon
thecustomerscreditcardstatement,thismaybetruncatedto
thefirst18charactersbycertainbanks.
90
Cardholdernameis
invalid
Pleaseprovideavalidcardholdername.Thismustbean
alphabeticvaluebetween4128characters.
91
Expirydateisinvalid
Pleaseprovideavalidexpirydate.Thisisanumberinthe
formatDD/YYYY.
Skrill2014
Page83
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
92
Descriptorisinvalid
Pleaseprovideavaliddescriptor.Thismustbeanalphanumeric
valuebetween1255characters.Ifdisplayedonthecustomers
creditcardstatement,thismaybetruncatedtothefirst18
charactersbycertainbanks.
93
Firstnameisinvalid
Pleaseprovideavalidfirstname.Thismustbeanalphabetic
valuebetween240characters.
94
Surnameisinvalid
Pleaseprovideavalidsurname.Thismustbeanalphabetic
valuebetween240characters.
95
Companyisinvalid
Pleaseprovideavalidcompanyname.Thismustbean
alphanumericvaluebetween240characters.
96
Streetisinvalid
Pleaseprovideavalidstreet.Thismustbeanalphanumeric
valuebetween550characters.
97
Stateisinvalid
Pleaseprovideavalidstate,regionorcounty.Thismustbean
alphabeticvaluebetween28characters.
98
Titleisinvalid
Pleaseprovideavalidtitle.Thismustbeanalphanumericvalue
between120characters.
99
Phonenumberisinvalid
Pleaseprovideavalidphonenumber.Thismustbean
alphanumericvaluebetween864characters.
100
Creditcardlengthissue
Pleaseprovideavalidcreditordebitcardnumber.Thisshould
beanumberbetween1517characterslong.
101
Cardholdernamelength Pleaseprovideavalidcardholdername.
issue
102
Expirydatelengthissue
Pleaseprovideavalidexpirydate.Thisisanumberinthe
formatDD/YYYY.
103
Expirymonthlength
issue
Pleaseprovideavalidexpirymonth.Thisisanumberwith2
characters.
104
Expiryyearlengthissue
Pleaseprovideavalidexpiryyear.Thisisanumberwith4
charactersandmustbeequaltoorlessthan2016.
105
CVVlengthissue
PleaseprovideavalidCardVerificationValue(CVV).Thisislast
3digitsonthebackofVisaandMasterCardcards,orlast4
digitsforanAmexcard.
106
TransactionIDlength
issue
PleaseprovideavalidtransactionID.Thismustbean
alphanumericvaluewith32characters.
107
CustomerIDlength
issue
PleaseprovideavalidcustomerID.Thismustbean
alphanumericvaluewith32characters.
108
Amountlengthissue
Pleaseprovideavalidamount.Thismustbeanumberbetween
212characters,withaminimumvalueof01.
109
Currencylengthissue
Pleaseprovideavalid3digitISOcurrencycode.
110
Descriptorlengthissue
Pleaseprovideavaliddescriptor.Thismustbeanalphanumeric
valuebetween1255characters.
Skrill2014
Page84
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
111
ResponseURLlength
issue
PleaseprovideavalidresponseURL.Thismustbean
alphanumericvaluebetween1255characters.
112
SuccessURLlengthissue PleaseprovideavalidsuccessURL.Thismustbean
alphanumericvaluebetween1255characters.
113
ErrorURLlengthissue
PleaseprovideavalidErrorURL.Thismustbeanalphanumeric
valuebetween1255characters.
114
Emaillengthissue
Pleaseprovideavalidemailaddress.Thismustbean
alphanumericvaluebetween6128characters.
115
IPlengthissue
PleaseprovideavalidIPaddress.
116
Firstnamelengthissue
Pleaseprovideavalidfirstname.Thismustbeanalphabetic
valuebetween240characters.
117
Surnamelengthissue
Pleaseprovideavalidsurname.Thismustbeanalphabetic
valuebetween240characters.
118
Companynamelength
issue
Pleaseprovideavalidcompanyname.Thismustbean
alphanumericvaluebetween240characters.
119
Streetlengthissue
Pleaseprovideavalidstreet.Thismustbeanalphanumeric
valuebetween250characters.
120
Zip/postalcodelength
issue
PleaseprovideavalidZip/Postcode.Thismustbean
alphanumericvaluebetween110characters.
121
Citylengthissue
Pleaseprovideavalidcity.Thismustbeanalphabeticvalue
between230characters.
122
Statelengthissue
Pleaseprovideavalidstate.Thismustbeanalphabeticvalue
between28characters.
123
Countrylengthissue
PleaseprovideavalidISO3digitcountrycode.
124
Phonelengthissue
Pleaseprovideavalidphonenumber.Thismustbean
alphanumericvaluebetween864characters.
125
Mobilenumberlength
issue
Pleaseprovideavalidmobilenumber.Thismustbean
alphanumericvaluebetween1064characters.
126
Skrillcountrylength
issue
PleaseprovideavalidISO3digitcountrycode.
127
MCClengthissue
Pleaseprovideavalid4digitMerchantCategoryCode(MCC)
number.
128
Acquirerlengthissue
Pleaseprovideavalidacquirer.
129
Tokenlengthissue
Pleaseprovideavalidpaymenttoken.Thismustbean
alphanumericvalueof32characters.
130
MIDlengthissue
PleaseprovideavalidMerchantID.
131
PAReslengthissue
PleaseprovideavalidPayerAuthenticationResponse(PARes)
value.
Skrill2014
Page85
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
132
ECIlengthissue
PleaseprovideavalidElectronicCommerceIndicator(ECI).
133
MDlengthissue
PleaseprovideavalidMerchantData(MD)value.
134
ReferenceIDlength
issue
PleaseprovideavalidreferenceID.Thismustbean
alphanumericvalueof32characters.
135
CAVVlengthissue
PleaseprovideavalidCardholderAuthenticationVerification
Value(CAVV).
136
XIDlengthissue
Pleaseprovideavalidtransactionidentifier(XID).
137
Cardholderlengthissue
Pleaseprovideavalidcardholdername.Thisisan
alphanumericvaluebetween4128characters.
138
Routinglengthissue
Pleaseprovideavalidbankroutingnumber/SORTcode.
139
Recipientlengthissue
Pleaseprovideavalidrecipientlength.
140
PaysafecardShopID
lengthissue
PleaseprovideavalidshopID.Thismustbeanalphanumeric
valuebetween160characters.
141
PaysafecardShoplabel
lengthissue
Pleaseprovideavalidshoplabellength.Thismustbean
alphanumericvaluebetween160characters.
142
PaysafecardMinage
lengthissue
PleaseprovideavalidPaysafecardminimumagevalue,suchas
18.
143
QIWILifetimelength
issue
PleaseprovideavalidQIWIlifetimevalueinminutes,for
example,15.
144
164
Notinuse
165
Cardnumberistoo
short
Pleaseprovideavalidcardnumber.Thismustbean
alphanumericvaluebetween364characters.
166
Cardnumberistoolong
Pleaseprovideavalidcardnumber.Thismustbean
alphanumericvaluebetween364characters.
167
Amountistooshort
Pleaseprovideavalidamount.Thismustbeanumberbetween
212characters,withaminimumvalueof01.
170
Amountistoolong
Pleaseprovideavalidmonth.Thismustbeanumberbetween
212characters,withaminimumvalueof01.
171
Expiryyeartooshort
Pleaseprovideavalidexpiryyear.Thisisanumberwith4
charactersandmustbeequaltoorlessthan2016.
172
Expiryyeartoolong
Pleaseprovideavalidexpiryyear.Thisisanumberwith4
charactersandmustbeequaltoorlessthan2016.
173
CVVistooshort
PleaseprovideavalidCVV.Thisislast3digitsonthebackof
VisaandMasterCardcards,orlast4digitsforanAmexcard.
174
CVVistoolong
PleaseprovideavalidCVV.Thisislast3digitsonthebackof
VisaandMasterCardcards,orlast4digitsforanAmexcard.
Skrill2014
Page86
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
175
TransactionIDistoo
short
PleaseprovideavalidtransactionID.Thismustbean
alphanumericvaluebetween0256characters.
176
TransactionIDistoo
long
PleaseprovideavalidtransactionID.Thismustbean
alphanumericvaluebetween0256characters.
177
ReferenceIDistooshort PleaseprovideavalidreferenceID.Thismustbean
alphanumericvaluewith32characters.
178
ReferenceIDistoolong
PleaseprovideavalidreferenceID.Thismustbean
alphanumericvaluewith32characters.
179
CustomerIDistooshort
PleaseprovideavalidCustomerID.Thismustbean
alphanumericvaluewith32characters.
180
CustomerIDistoolong
PleaseprovideavalidCustomerID.Thismustbean
alphanumericvaluewith32characters.
181
Currencyistooshort
Pleaseprovideavalid3digitISOcurrencycode.
182
Currencyistoolong
Pleaseprovideavalid3digitISOcurrencycode.
183
Descriptoristooshort
PleaseprovideavalidDescriptor.Thismustbean
alphanumericvaluebetween1255characters.
184
Descriptoristoolong
PleaseprovideavalidDescriptor.Thismustbean
alphanumericvaluebetween1255characters.
185
Cardholdernametoo
short
Pleaseprovideavalidcardholdername.Thismustbean
alphabeticvaluebetween4128characters.
186
Cardholdernametoo
long
Pleaseprovideavalidcardholdername.Thismustbean
alphabeticvaluebetween4128characters.
187
Expirydateistooshort
Pleaseprovideavalidcardexpirydate.Thisisanumberinthe
formatDD/YYYY.
188
Expirydateistoolong
Pleaseprovideavalidcardexpirydate.Thisisanumberinthe
formatDD/YYYY.
189
Descriptoristooshort
PleaseprovideavalidDescriptor.Thismustbean
alphanumericvaluebetween1255characters.
190
Descriptoristoolong
PleaseprovideavalidDescriptor.Thismustbean
alphanumericvaluebetween1255characters.
191
Salutationistooshort
PleaseprovideavalidSalutation.Thismustbeanalphabetic
valuebetween26characters.
192
Salutationistoolong
PleaseprovideavalidSalutation.Thismustbeanalphabetic
valuebetween26characters.
193
Titleistooshort
PleaseprovideavalidTitle.Thismustbeanalphanumericvalue
between120characters.
194
Titleistoolong
PleaseprovideavalidTitle.Thismustbeanalphanumericvalue
between120characters.
Skrill2014
Page87
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
195
Firstnameistooshort
Pleaseprovideavalidfirstname.Thismustbeanalphabetic
valuebetween240characters.
196
Firstnameistoolong
Pleaseprovideavalidfirstname.Thismustbeanalphabetic
valuebetween240characters.
197
Surnameistooshort
Pleaseprovideavalidsurname.Thismustbeanalphabetic
valuebetween240characters.
198
Surnameistoolong
Pleaseprovideavalidsurname.Thismustbeanalphabetic
valuebetween240characters.
199
Companynameistoo
short
Pleaseprovideavalidcompanyname.Thismustbean
alphanumericvaluebetween240characters.
200
Companynameistoo
long
Pleaseprovideavalidcompanyname.Thismustbean
alphanumericvaluebetween240characters.
201
Streetistooshort
Pleaseprovideavalidstreet.Thismustbeanalphanumeric
valuebetween250characters.
202
Streetistoolong
Pleaseprovideavalidstreet.Thismustbeanalphanumeric
valuebetween250characters.
203
Cityistooshort
Pleaseprovideavalidcity.Thismustbeanalphabeticvalue
between230characters.
204
Cityistoolong
Pleaseprovideavalidcity.Thismustbeanalphabeticvalue
between230characters.
205
Stateistooshort
Pleaseprovideavalidstate.Thismustbeanalphabeticvalue
between28characters.
206
Stateistoolong
Pleaseprovideavalidstate.Thismustbeanalphabeticvalue
between28characters.
209
Phonenumberistoo
short
Pleaseprovideavalidphonenumber.Thismustbean
alphanumericvaluebetween864characters.
210
Phonenumberistoo
long
Pleaseprovideavalidphonenumber.Thismustbean
alphanumericvaluebetween864characters.
211
Mobilenumberistoo
short
Pleaseprovideavalidmobilenumber.Thismustbean
alphanumericvaluebetween1064characters.
212
Mobilenumberistoo
long
Pleaseprovideavalidmobilenumber.Thismustbean
alphanumericvaluebetween1064characters.
213
Emailistooshort
Pleaseprovideavalidemailaddress.Thismustbean
alphanumericvaluebetween6128characters.
214
Emailistoolong
Pleaseprovideavalidemailaddress.Thismustbean
alphanumericvaluebetween6128characters.
215
IPaddressistooshort
PleaseprovideavalidIPaddress.
216
IPaddressistoolong
PleaseprovideavalidIPaddress.
217
XIDistooshort
PleaseprovideavalidXID.
Skrill2014
Page88
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
Advice
218
XIDistoolong
PleaseprovideavalidXID.
219
CAVVistooshort
PleaseprovideavalidCAVV.
220
CAVVistoolong
PleaseprovideavalidCAVV.
221
ECIistooshort
PleaseprovideavalidECI.
222
ECIistoolong
PleaseprovideavalidECI.
223
Verificationtypeistoo
short
PleaseprovideavalidVerificationtype.
224
Verificationtypeistoo
long
PleaseprovideavalidVerificationtype.
225
ResponseURListoo
short
PleaseprovideavalidResponseURL.Thismustbean
alphanumericvaluebetween1255characters.
226
ResponseURListoo
long
PleaseprovideavalidResponseURL.Thismustbean
alphanumericvaluebetween1255characters.
227
SessionIDistooshort
PleaseprovideavalidSessionID.
228
SessionIDistoolong
PleaseprovideavalidSessionID.
229
SuccessURListooshort
PleaseprovideavalidSuccessURL.Thismustbean
alphanumericvaluebetween1255characters.
230
SuccessURListoolong
PleaseprovideavalidSuccessURL.Thismustbean
alphanumericvaluebetween1255characters.
231
ResponseURListoo
short
PleaseprovideavalidResponseURL.Thismustbean
alphanumericvaluebetween1255characters.
232
ResponseURListoo
long
PleaseprovideavalidResponseURL.Thismustbean
alphanumericvaluebetween1255characters.
233
Countrycodeistoo
short
Pleaseprovideavalid2letterCountrycode.
234
Countrycodeistoolong
Pleaseprovideavalid2letterCountrycode.
235
Countrycodeistoo
short
Pleaseprovideavalid3letterCountrycode.
236
Countrycodeistoolong
Pleaseprovideavalid3letterCountrycode.
237
Mobilenumberisinvalid Pleaseprovideavalidmobilenumber.Thismustbean
alphanumericvaluebetween1064characters.
238
Emailaddressisinvalid
PleaseprovideavalidEmailaddress.Thismustbean
alphanumericvaluebetween6128characters.
239
TransactionIDismissing
PleaseprovideatransactionID.
240
Cityisinvalid
Pleaseprovideavalidcity.Thismustbeanalphabeticvalue
between230characters.
241
Invalidstoreinvault
Skrill2014
Page89
SkrillPHPLibraryGuide1.6
Table91:FormatvalidationerrorsreturnedbytheSkrillPaymentPlatform
Code
Message
242
290
Notinuse
291
ReferenceIDnotfound
Thetransactionthatisbeingreferencedcouldnotbefound.
PleaseenteravalidreferenceID.
292
AuthenticationMDnot
found
TheMerchantData(MD)valueprovidedfor3Dsecurecould
notbefound.PleaseprovideavalidMDvalue.
293
VANTIVMCCnotfound
Pleaseprovideavalid4digitMerchantCategoryCode(MCC)
number.
294
ElavonMIDnotfound
Thedatayouhaveprovidedcouldnotberesolvedtoavalid
ElavonmerchantID.
295
Noliabilityshift
Thistransactionwasprocessed,butthereisnoliabilityshift
andachargebackispossible.
296
Cardinalfailed
authentication
297
299
Notinuse
300
Invalidmerchant
301
Invalidmerchant.Too
manyMIDs
302
Invalidprocessing
channel
Pleaseprovideavalidchannel.
303
Invalidprocessing
merchantID
PleaseprovideavalidmerchantID.
305
Invalidprocessingbrand
Pleaseprovideavalidbrand.
306
Invalidprocessing
currency
Pleaseprovideavalidcurrency.
307
InvalidprocessingMCC
Pleaseprovideavalid4digitMerchantCategoryCode(MCC)
number.
308
Invalidprocessing
country
PleaseprovideavalidISO3digitcountrycode.
309
Paymentmethodnot
supported
Pleaseprovideavalidpaymentmethod.
310
Typenotsupported
311
JSONpaymentmethod
notsupported
PleaseprovideavalidJSONpaymentmethod.
312
Currencynotfound
Pleaseprovideacurrency.
Skrill2014
Advice
Page90
SkrillPHPLibraryGuide1.6
9.3.1.Level2:Systemerror(configuration/connectivityerrors)
Table92:SystemerrorcodesreturnedbytheSkrillPaymentPlatform
Code
Description
Undefinedsystemerror
Tokensocketconnectionerror
Requestmethodnotfound
WrongrequestURL
Methodnotsupported
Applicationsocketconnectionerror
Applicationerror
Wrongchannel
Currencynotsupported
Methodnotsupported
10
Typenotsupported
11
Brandnotsupported
12
Prosocketconnectionerror
13
Undefinedtokenconnectionerror
14
Mnesianotrunning
15
Tokennotintableetc.
16
MPIconnectiontimeout
20
Refundsnotallowed
21
Nodebitwascaptured
22
UserNotenrolled
23
Cardnotparticipating/authenticationunavailable
24
Technicalerrorin3Dsystem
25
Socketconnectionerror
Skrill2014
Page91
SkrillPHPLibraryGuide1.6
9.4.1.Level4:Acquirerreasoncodes
Table93:Successandfailurereasoncodesreturnedbytheacquirer
Code
Description
00
Approvedorcompletedsuccessfully
03
Invalidmerchantnumber
05
Authorizationdeclined
12
Invalidtransaction
13
Invalidamount
14
invalidcard
21
Noactiontaken
30
FormatError
33
Cardexpired
34
SuspicionofManipulation
40
Requestedfunctionnotsupported
43
StolenCard,pickup
55
Incorrectpersonalidentificationnumber
56
Cardnotinauthorizer'sdatabase
57
Referencingtransaction(e.g.,Bookingpreauthorization...)wasnotcarriedoutwiththe
cardwhichwasusedfortheoriginaltransaction.
58
TerminalIDunknown
62
RestrictedCard
64
Thetransactionamountofthereferencingtransactionishigherthanthetransaction
amountoftheoriginaltransaction
78
Stoppaymentorder(forforwardingtheVisaresponsecode"R0"oftheVisaBASEI
interface):thetransactionwasdeclinedorreturnedbecausethecardholderrequested
thatpaymentofaspecificrecurringorinstalmentpaymenttransactionbestopped.
79
Revocationofauthorizationorder(forforwardingtheVisaresponsecode"R1"oftheVisa
BASEIinterface):thetransactionwasdeclinedorreturnedbecausethecardholder
requestedthatpaymentofallrecurringorinstalmentpaymenttransactionsforaspecific
merchantaccountbestopped.
80
Amountnolongeravailable
81
Messageflowerror
91
Cardissuertemporarilynotreachable
92
Thecardtypeisnotprocessedbytheauthorizationcentre
96
Processingtemporarilynotpossible
97
SecuritybreachMACcheckindicateserrorcondition
Skrill2014
Page92
SkrillPHPLibraryGuide1.6
10.GLOSSARY
Thissectionprovidesadescriptionofkeytermsusedinthisguide.
Term
Explanation
Acquirer
Anacquiringbank(oracquirer)isthebankorfinancialinstitutionthat
processescreditandordebitcardpaymentsforamerchant.
Example:BarclaysMerchantServiceandEuropeanMerchantServices.
AddressVerification
Service(AVS)
Thisservicevalidatesthebillingaddressprovidedbythecustomeron
thepaymentagainstthebillingaddressregisteredwiththecustomer's
bankorcreditcard.Typically,onlythenumbersinthefirstlineofthe
addressandpostcodeareverifiedandtheresultisreturnedtothe
merchant.(onlyavailableintheUS,CanadaandUK)
Alternativepayment
Localpaymentmethodspecifictoacountryorregion,ormethodthatis
notatraditionalinternationalcreditordebitcardtypeofpayment.
API
GenerictermforApplicationProgrammeInterface.APIsprovidea
meansfordeveloperstocommunicatewiththeSkrillPaymentPlatform.
Authentication
Securitychecksperformedtoverifytheidentityofacustomer,
merchant,websiteorentity.Forexample:Cardholderauthentication
checkssuchas3DSecureandwebsiteauthenticationviaSSLcertificates.
Authorisation
AlsoknownasPreauthorisation.Processwherethemerchantcansend
arequesttothebankingnetworkviaSkrilltoverifythatthecardisvalid
andthatthefundsrequestedcanbetakenfromthecard.
Backendsystem
Asopposedtoafrontendsystem,abackendsystemusedinternallyby
Skrillorwithinthemerchantsbusiness.Skrillmerchantscanalsouse
paymentinformationreturnedfromtheSkrillPaymentPlatformontheir
ownbackendsystems,suchtheircustomerordermanagementsystem.
Batch
Agroupofapprovedcreditcardtransactions,accumulatedduringone
businessday(weekendsandofficial/bankholidaysexcluded).
BatchProcessing
Theauthorisationoftransactionsofflinewhenimmediateapprovalis
notrequired.Transactionsarecollectedinabatchandsentasone
transmissionforAuthorisationand/orSettlement.
BIN
BankIdentificationNumber.Auniqueseriesofnumberswhichidentifies
aninstitutionintransactionprocessing.TheBINcomprisesthefirstsix
digitsofastandarddebitorcreditcardnumber.
Browser
Applicationthatenablesacustomerormerchanttoaccesswebpages.
Examplesinclude:InternetExplorer,GoogleChromeandMozillaFirefox.
Cancel
Requesttocancelsatransaction.Thisisonlypossiblebeforeyouhave
capturedthepaymentoruntilthepreauthorisationexpires.Itcanbefor
apartialamount.
Skrill2014
Page93
SkrillPHPLibraryGuide1.6
Term
Explanation
Capture
Processofrequestingpaymentfromthecustomersaccount.Only
preauthorisedtransactionscanbecaptured.Forsomemerchants,there
maybeadelaybetweentheinitialauthorisationofthetransactionand
whencaptureismade.SeeDelayedcapture.
Cardholder
Thecustomeroronlineshopperwhosecardisusedduringanonline
purchase.
Cardholder
authentication
Inonlinetransactions,wherethecustomerisnotphysicallypresent,
certainpaymentmethods,suchasVisa,MasterCardandAmex,provide
analternativemeansforverifyingthecustomersidentity.Typically,the
customerisaskedtoprovideauniquepasswordorotheridentifying
informationduringtheonlinetransaction.
Seealso3DSecureandAuthentication.
CardIssuer
Bankorcardschemethatissuesthecustomerspaymentcard.
CardholderFunds
Transfer(CFT)
AlsocalledCreditFundsTransfer,isamethodoftransferringfunds
whichcanbeuptoormorethantheoriginaltransactionamount.
CurrentlyonlyaVISAcardusedforasuccessfulgamingdepositis
availableforCFTpayment.SeealsoCredit.
Cardscheme
CardassociationsuchasVisa,MasterCard,Discover,AmericanExpress,
DinersClubandJCB.
CardVerificationValue
(CVV)
CVVisathreedigitcodeprintedonthebackofVisa,MasterCardand
DiscovercardsandafourdigitcodeprintedonthefrontforAmerican
Express.AlsoknownasCVV2,CV2andCSC(CardSecurityCode).
CardholderFunds
Transfer(CFT)
AlsocalledCreditFundsTransfer,isamethodoftransferringfunds
whichcanbeuptoormorethantheoriginaltransactionamount.Skrill
merchantsorcustomerscanarrangeaCFTbytransferringfundsfrom
theirdigitalwalletaccounttoacreditcard.Therearesomerestrictions.
CurrentlyonlyaVISAcardusedforasuccessfulgamingdepositis
availableforCFTpayment.SeealsoCredit.
Channel
Channelsenablemerchantstoprocesspaymentsindifferentways.For
example,amerchantmaybesetupwithtwochannels,onewhichhas
3DSecureenabledandtheotherwhichhas3DSecuredisabled.Some
channeloptionsmayrequireaseparatemerchantaccount.
Thereturnoffunds,previouslyauthorisedinatransaction,toa
customer,whichisinitiatedbytheissuingbank.Alsoreferstotheofa
prioroutboundtransfer.
Chargeback
AchargebackapplieswhencustomercontactstheirCardIssuerto
disputeatransaction.Inthiscase,thecardissuerorbankmayrequest
thatthemoneybepaidbackdirectlybySkrill.
ThemerchantmayincuranadministrationcostforSkrillprocessingthe
dispute,inadditiontoanyamounteventuallycreditedbacktothe
customer.
Skrill2014
Page94
SkrillPHPLibraryGuide1.6
Term
Explanation
Credit
Creditcanbeusedbymerchantstotransfermoneytothecustomer.
AlsoknownasPayouts/PayoutofWinnings(PoW)andCardholder
FundsTransfer(CFT).ThedifferencetoaRefundisthatmorethanthe
originaltransactionamountcanbetransferredbacktothecustomer.
Mostlycommoninthegamblingindustry.Acreditisonlyallowedona
creditcardwhichhasbeensubjecttoachargebefore.
Creditcard
Atypeofpaymentcardthatallowscustomerstopayforgoodsand
servicesusingfundsthatareloaned.Theloanmustbepaidbackwithin
aspecifiedperiod.Interestistypicallychargedonthebalanceaftera
graceperiod(typically2055days).
Examples:Visa,MasterCard,DinersandAmex.
SeealsoDebitcard.
CustomerID
OntheSkrillPaymentPlatform,amerchantmaybeconfiguredwith
multiplecustomerIDssetupfordifferentchannels.
(Nottobeconfusedwiththecustomeridfield.)
Customerservicesteam
Skrillteamresponsibleforendcustomersupportqueries.Alsoreferred
toastheMerchantServicesteam.
cURL
cURLisacommandlinetoolfortransferringdatawithURLsyntax.
MerchantscanusecURLtosendtransactionalrequestdatatotheSkrill
PaymentPlatform.SeealsoAPI.
Debit
Processinwhichthemerchantcansendarequesttothebanking
networkviaSkrillforauthoritytotakepaymentforanonline
transaction.DebitcombinesAuthorisationandCaptureinasingle
request.
Debitcard
Atypeofpaymentcardthatprovidescustomerswithinstantaccessto
fundsintheirbankaccount.IncontrasttoaCreditcardpayment,
paymentsusingadebitcardareimmediatelytakenfromthecustomers
account,insteadofbeingpaidbackatalaterdate.So,thecustomer
musthavesufficientfundsintheiraccountoranagreedoverdraftlimit
tocoverthepayment.Delayedcaptureistypicallynotavailablefordebit
cards.
Decline
AresponsefromtheCardIssuerdenyingtheuseofthecardforthe
attemptedtransaction.Ifarequestforapprovalisdeclined,the
merchantmustaskthecardholderforanotherformofpayment.
Skrill2014
Page95
SkrillPHPLibraryGuide1.6
Term
Explanation
Optionthatenablesthemerchanttodelaythecaptureofapayment
thathasbeenauthorised.OftenreferredtoasAuthorisationand
Capture.
Delayedcapture
Typically,merchantsrequestauthorisationforapaymenttoensurethat
thecustomerhassufficientfundsintheiraccount.Thefundsarethen
reservedandcannotbeusedbythecustomerforacertainperiod.Once
thegoodsorserviceshavebeendelivered,thefullamountistakenfrom
thecustomerscard.
Carhirepurchasesareagoodexampleofdelayedcapture.The
merchanttypicallyrequestsaPreauthorisationonthecard,butfull
authorisationandcaptureonlyoccursoncethevehiclehasbeen
returned.
Descriptor
Afielddescriptor,usedindifferentcontextsontheSkrillPayment
Platformtoenablemerchantstopassdescriptiveinformationtothe
system.
DigitalWallet
Providestheelectronicequivalentofaphysicalwalletthatcanholda
numberofcardsandpaymentmethods,whicharelinkedtothewallet.
Typically,customerslogintotheirwalletaccountduringanonline
transactionandauthorisethepaymentusingoneofthepayment
methodslinkedtotheirwalletaccount.
FinancialConduct
Authority(FCA)
OrganisationthattookovertheroleoftheFinancialServicesAuthority
(FSA)inregulatingtheactivitiesoffinancialorganisationsoperatingin
theUK.
Hostedpaymentpage
AlsoknownasWebPaymentFrontend(WPF)orHostedGateway.This
optionprovidesasecurepaymentpagehostedbySkrill,where
customerscanentercardandotherpaymentdetails.Itissuitablefor
merchantswhowantasimpleintegrationand/orwhoarenotPCI
compliant.
HTMLPOST
IntegrationmethodwherethemerchantsendsdetailstotheSkrill
PaymentPlatformusingastandardHTMLformthatpoststhis
informationintheHTMLheader.
Instore
Referstopaymentmadebyacustomerwhoisphysicallypresentatthe
merchantsstore.Oftenreferredtoasbrickandmortarorcustomer
presentpayments.
InternationalBank
AccountNumber(IBAN)
OriginallyadoptedbytheEuropeanCommitteeforBankingStandards
(ECBS),andlateradoptedasaninternationalstandardunderISO
13616:1997.ThecurrentstandardisISO13616:2007,whichindicates
SWIFTastheformalregistrar.Initiallydevelopedtofacilitatepayments
withintheEuropeanUnion,ithasnowalsobeenimplementedbymost
Europeancountriesandmanyothercountries,especiallyintheMiddle
EastandintheCaribbean.
Skrill2014
Page96
SkrillPHPLibraryGuide1.6
Term
Explanation
Integration
Processundertakenbymerchantstoensurethattheirwebsiteor
shoppingcartcanconnecttoandcommunicatewithSkrillspayment
processingsystems.
Integrationmethods
Theconnectionoptionsprovidedtoenableamerchanttointegratewith
theSkrillPaymentPlatform.Forexample,JSONandWebPayment
Frontend(WPF).
ISOcountrycodes
3digitcountrycodeoftheInternationalStandardsorganisation(ISO)
thatidentifiesthecountry.Forexample,GBRforUnitedKingdom.ISO
countrycodesalsoexistina2digitformat.
ISOcurrencycodes
3digitcurrencycodeoftheInternationalStandardsOrganisation(ISO)
thatidentifiesthecurrency.Forexample,GBPforBritishPound.
JavaScript
JavaScriptisadynamicscriptinglanguageusedprimarilyinclientside
webbrowserapplications.
KYC
AcronymforKnowyourCustomer.Referstoduediligenceprocedurein
thefinancialservicesindustrytoverifytheidentityofthecustomer,and
isconductedbySkrillformerchantsandSkrilldigitalwalletcustomers
whoreachover2,500Euroinprocessedtransactions.
JQuery
jQueryisamultibrowserJavaScriptlibrarydesignedtosimplifythe
clientsidescriptingofHTML.
JSON
JavaScriptObjectNotationisanopensourcedatacommunication
standardsupportbytheSkrillPaymentPlatform.Merchantscan
communicatewiththeplatformusingJSON.
LiabilityShift
Fortransactionswherethecustomerisauthenticatedvia3DSecure,the
merchantmaybeprotectedfromChargebackinvolvingidentityfraud.
MailOrderTelephone
Order(MOTO)
Solutionforenablingthemerchantscustomerservicesteamtotake
paymentsoverthetelephoneorfrommailorder.
MasterCard
SecureCode
CardholderauthenticationmethodusedbyMasterCardtoverifythe
identityofacustomerduringanonlinetransaction.Seealso3DSecure.
MD5
Awidelyusedhashalgorithm,whichcanbeusedforsecurelyencrypting
informationsentovertheinternet.MD5producesa128bit(16byte)
hashvalue.Thepurposeofthefieldistoensuretheintegrityofthedata
postedbacktothemerchantsserver.
Merchant
Skrillcustomer(legalornaturalperson)usingtheirSkrillsolutionto
receivepaymentsforproductsorservicestheyprovide.
MerchantAgreement
TheSkrillMerchantAgreementistheagreementgoverningthelegal
relationshipbetweenSkrillandamerchantusingtheSkrillpayment
processingservicesforcommercialpurposes.ItconsistsoftheSkrill
MerchantTermsandConditions,pluscoverpages,schedulesandthe
SkrillAccountTermsofUse.
MerchantID(MID)
Amerchantidentifier,providedbytheAcquirer,usedtouniquely
identifyamerchantwithinthebankingnetworkwhenatransactionis
processed.
Skrill2014
Page97
SkrillPHPLibraryGuide1.6
Term
Explanation
MerchantPortal
Onlineportalusedforaccountadministrationandviewingtransactions
bymerchants.
MerchantServices
team
Skrillteamresponsibleforprovidingtechnicalandservicesupportto
merchants.
MyAccount
Customeraccountadministrationportalthatenablesviewingof
transactionsandtransferringfunds.
Onboardingprocess
Processofsigningupandverifyingamerchant.Thisinvolvesanumber
ofteamsinSkrill,includingsalesandriskandcompliance.Onthe
paymentprocessingside,thisprocessiscoordinatedbyadedicatedon
boardingteam.
OnlineBankTransfer
Apaymentmethodenablingcustomerstotransferfundsfromtheir
bankaccountstotheirSkrillaccountinrealtime.SeealsoSkrillDirect.
Paymentoptionor
method
Thepaymentmethodusedbythecustomer,suchasdebitcard,credit
cardandbanktransfer.Notethatinthepaymentsindustry,theterms
paymentmethod,paymentoptionandpaymenttypeareoftenused
interchangeably.SeealsoAlternativepayments.
Paymentbrand
TermusedontheMerchantPortaltodescribethepaymentbrand
connectedtoapaymentmethod.Forexample,VisaandMasterCardare
paymentbrandsavailableforcreditanddebitcardspaymentmethods.
Paymenttoken
TokenreturnedfromtheSkrillPaymentPlatform.Thetokenenables
repeattransactionsonacard,withoutrequiringthecustomertore
entertheircarddetailsagain.
Paymenttype
Thetypeofpaymentservicethatwascarriedoutagainstthepayment
methodused.Forexample,PreauthorisationandCapture.
Payoutsrefertopaymentsmadebymerchantstocustomers,typically
usedintheonlinegamblingindustry.
Payouts/Payoutof
Winnings(PoW)
Skrilloffersapayoutproductthatenablesmerchantstomake
automatedpaymentsfromtheirdigitalwalletaccounttotheir
customersdigitalwalletaccount.Thiscanbeusedforpayingemployees
orpaymentofwinningstocustomers.
SeealsoCardholderFundsTransfer(CFT)whichprovidesanalternative
meansofmakingpayouts.
Payment
Uniquefinancialrecordonthesystem.Apaymentmayconsistof
multipleTransactions.
Paymentpage
Pageusedtocollectedpaymentmethoddetailsfromthecustomer
duringanonlinetransaction.Thispagecanbeprovidedbythemerchant
orhostedbySkrill.SeealsoHostedpaymentpage.
Paymentprocessing
platform
SystemusedfortheprocessingofeCommercetransactions.
PaymentService
Provider(PSP)
ServiceproviderenablingmerchantstoaccepteCommercepayments.
Skrill2014
Page98
SkrillPHPLibraryGuide1.6
Term
Explanation
PCICompliance
ThePaymentCardIndustryDataSecurityStandard(PCIDSS)isasecurity
standardfororganisationsthathandlecardholderinformation.
MerchantswhocollectandstorecardholderinformationmustbePCI
compliant.
PCIcompliant
Merchantswhocollectandstorecardholderinformationmustcomply
withminimumstandardstoensurethatsensitivecustomerfinancial
informationisstoredsecurely.Thestandardcoversbothsystemsand
businessprocessesinplacewithinanorganisation.
PCILevel1certified
MerchantsfallunderfourcategoriesofPCIcompliant,dependingonthe
numberoftransactionstheyprocesseachyear,andwhetherthose
transactionsareperformedfromanInstorelocationoroverthe
Internet.
Level1isthehighestlevelofcompliance,typicallydemonstratedby
largefinancialorganisationsandpaymentserviceproviderssuchas
Skrill.
Pendingtransaction
Atransactioninwhichthepaymentsystemiswaitingforaconfirmation,
aninputorcustomeraction.Forexample,3DSecure,redirectpayment
methodormanualbanktransfer.
ArequestmethodsupportedbytheHTTPprotocol,whichenablesdata
tobesenttoawebserver.Itisoftenusedwhenuploadingafileor
submittingacompletedwebform.
POSTmethod
AspartofaPOSTrequest,dataofanytypecanbesenttotheserverina
messagebody.AheaderfieldinthePOSTrequestusuallyindicatesthe
messagebody'sInternetmediatype.
Preauthorisation
ArequestmadebySkrilltotheCardIssuertoconfirmthatthecustomer
hassufficientfundsintheiraccountforacreditcardtransaction.The
fundsaretypicallyreserved,sothattheywillbeavailablewhenthe
DebitorCapturerequestismade.
Primaryaccount
number(PAN)
Paymentcardnumberof14or16digitsembossedonabankorcredit
cardandencodedinthecard'smagneticstrip.ThePANidentifiesthe
issuerofthecardandtheaccount,andincludesacheckdigitasan
authenticationdevice.
Optiontopaymoneybacktoacustomer,whichcanbedoneusingthe
APIorMerchantPortal.
Refund
Register
Skrill2014
Therefundhastobereferencedtotheoriginalpaymentandcanonlybe
uptothatamount.SeealsoCredit.Skrillenablespartialorfullamount
refunds.
TypeofAPIcall,wherearequestismadeforapaymenttokenfromthe
Skrillpaymentplatform.Skrillregistersthecarddetailsandreturnsa
paymenttoken,whichcanbeusedforsubsequenttransactionswiththis
card.
Page99
SkrillPHPLibraryGuide1.6
Term
Explanation
Realtime
Aneventthatoccursinstantlyorwithinashortperiod,suchasseconds
orminutes.Forarealtimetransaction,thecustomer,merchantorSkrill
receivearesponsetothetransactionrequestwhilethecustomerisstill
online.
Reasoncode
Everytransactionhasareasoncode,whichindicatesthestatusofthe
transaction.SkrillreceivesavarietyofreasoncodesfromtheCard
Issuer,bankorschemeauthorisingthetransactionandconsolidates
thesebeforeprovidingthemtomerchants.
Reserve
Aportionofthemerchantstransactionfundsorbalancetemporarily
heldintheiraccountandwhichcannotbewithdrawn.Thereserve
functionstoprotectSkrillfromcostsandchargessuchasunpaid
transactions,Chargebacksorinaccuratelyexecutedtransactions.
Settlement
WhenfundsauthorisedbytheCardIssuerorcustomersbankare
transferredtotheSkrillaccount.Dependingonthetypeofpayment
methodused,settlementmaybebetweenonetofourteendaysormore
afterthetransaction.Oncefundsaresettledintothemerchantswallet,
merchantscantransferthebalance(minusanyReserve)fromtheirSkrill
accounttotheirlocalbankaccount.
Transaction
EachfinancialinteractionwiththeSkrillPaymentPlatformisreferredto
asatransaction.AtransactionislinkedtoaPayment.
XMLintegration
Integrationmethodenablingmerchantstoconnecttothepayment
gatewayusingXML.
3DSecure
Termforcardholderauthentication,offeredbyschemessuchasVisa,
MasterCardandAmextoverifytheidentityofacustomerduringan
onlinetransaction.
SkrillDigitalWallet
SkrillsDigitalWallet,enablingcustomerstolinkcardsandpaydirectly
fromtheirwalletaccountusingcardsorbanktransfer.Upto4payment
cardsand10bankaccountscanbelinkedtoawalletaccount.
SkrillDirect
SkrillsOnlineBankTransferproduct,whichcanbeusedwithlocalbank
intheUK,France,Germany,Italy,SpainandAustria.
SkrillQuickCheckout
Skrillproduct,relatedtotheSkrillDigitalWallet,whichenables
customerstobypasstheSkrillregistrationdetailspageandsimply
confirmandpay.QuickCheckoutusestheeCommerceplatformfor
processingpayments.
SkrillPaymentPlatform
SkrillssystemfortheprocessingofeCommercepayments.
SSL
Securesocketlayer.Anindustrystandardencryptionmethodthat
allowsforsecuretransmissionofdatabetweencustomersand
merchantsites.
Skrill2014
Page100
SkrillPHPLibraryGuide1.6
Term
Explanation
Featurethatenablesrepeatpaymentswithoutrequiringthecustomer
toprovidetheircarddetailsagainforsubsequentpayments.
Tokenization
Whenthemerchantsubmitstheregisterrequest,theSkrillPayment
Platformstoresthecustomerscarddetailssecurelyandgeneratesa
Paymenttoken,whichisthensenttothemerchant.Themerchantcan
usethetokentotakerepeatpaymentsinthefuture,withoutneedingto
submitthecreditcardorbankaccountdetailsagain.
Transaction
EachfinancialinteractionwiththeSkrillPaymentPlatformisreferredto
asatransaction.Transactionsarelinkedtopayments.
TransactionID
UniqueIDassignedtoatransactionbytheSkrillPaymentPlatform.
Transactionstatus
EachtransactionontheSkrillPaymentPlatformisgivenastatus.This
includes:processed,pending,temporary,scheduled,cancelled,failed,
chargebackandsuccessful.
Uptime
Measureofthetimeacomputerorservicehasbeenworkingand
available.Uptimeistheoppositeofdowntime.Itisoftenusedasa
measureofreliabilityorstability.
VerifiedbyVisa(VbV)
CardholderauthenticationmethodusedbyVisatoverifytheidentityof
acustomerduringanonlinetransaction.Seealso3DSecure.
Viewpoint
InternalSkrillsystemusedforsettingupmerchantsontheSkrill
PaymentPlatform.Viewpointalsoprovidesaconduitfortransaction
andsettlementdata.
WebPaymentFront
end(WPF)
TheWebPaymentFrontendenablesmerchantstoconnecttoSkrill
usingaHostedpaymentpagewherecustomerscanentertheirpayment
details.
Skrill2014
Page101
SkrillPHPLibraryGuide1.6
Index
D
Delayedpaymentcapture 8
H
Handlingtheresponse
Errorresponse 16
Retrievingcardregistrationdetails 16
Successfullevel1response 15
webpaymentfronted 18
I
Immediatepaymentcapture 7
J
JSONplusSkrill.jsflow 4
L
Level1
Formaterror 80
Level2
Systemerror 91
Level4
Acquirerreasoncodes 92
Level4errormessages 76
M
MasterCardtestcarddetails 75
P
Paymentparameters 19
PHPrequirements 9
preauthorization 23
R
Requestusingapaymenttoken 10
RequestusingareferenceID 11
Responsecodes 80
RubyExamples 23, 33
S
setParameters()method 13
T
Testingerrorhandling 76
Testingyourconnection 75
V
Visatestcarddetails 75
Skrill2014
Page102