Sunteți pe pagina 1din 104

SkrillPHPLibraryGuide

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:

$data = $result->getErrorData(); and iterate through $data

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

email

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

// 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.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)

email

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();

// Set service endpoint


$pay->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_psc_psp/paysafecard");
// Set request parameters
$pay->setParameters(array(
'identification' => array(
'transactionid' => '',
'customerid' => ''
),
'payment' => array(
'amount' => '56',
'currency' => 'eur'
),
'account' => array(
'country_restriction' => '',
'kyclevel' => ''
),
'frontend' => array(
'responseurl' => 'http://merchant.com/response.php',
'successurl' => 'http://merchant.com/success.php',
'errorurl' => 'http://merchant.com/error.php'
),
'customer' => array(
'name' => array(
'salutation' => 'Mr',
'title' => 'Dr',
'given' => '',
'family' => '',
'company' => ''
),
'address' => array(
'street' => '12 Street,
'zip' => '1234',
'city' => Berlin',
'state' => 'Berlin',
'country' => 'DE'
),
'contact' => array(
'email' => 'in@in.de',
'ip' => '123.255.255.255'
)
)
));
// Displays the request in JSON format
echo $pay->showJson();
// Make Paysafecard request

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&currency=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();

// Set service endpoint


$skrill->setUri("https://psp.sandbox.dev.skrillws.net/v1/json/3e40a821/
channelid_skrilldirect/skrilldirect");
// Set request parameters
$skrill->setParameters(array(
'payment' => array(
'amount' => '112',
'currency' => 'EUR',
'descriptor' => 'comment',
'recipient' => ''
),
'account' => array(
'holder' => 'L. Manelli',
'accountnumber' => '797979',
'routingnumber' => '6767676'
),
'frontend' => array(
'responseurl' => 'http://merchant.com/response.php',
'successurl' => 'http://merchant.com/success.php',
'errorurl' => 'http://merchant.com/error.php'
),
'customer' => array(
'name' => array(
'firstname' => Lisa',
'lastname' => Manelli'
),
'address' => array(
'street' => 54 Road',
'zip' => '34343',
'city' => 'Berlin',
'country' => 'DE'
),
'contact' => array(
'email' => 'in@in.de',
'ip' => '124.20.2.2'
)
)
));
// Display the request in JSON format
echo $skrill->showJson();

// Make SkrillDirect request


$result = $skrill->makeCall();
// check response object for success or error
if($result->isSuccess()) {

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

// Display the request in JSON format


echo $refund->showJson();
// Make Skrill Wallet Refund call
$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();
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();
}

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

Identifierofthechannelinwhichyouare Yes(ifnot 1128


processingpayments.
globally
(alphanumeric)
defined)

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)

email

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

email

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

// 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();
}

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

S-ar putea să vă placă și