PayPal is een internationaal e-commerce bedrijf dat online betalingen en overschrijvingen mogelijk maakt.
Express Checkout Shortcut (ECS): Klanten klikken op de knop "PayPal Betalen" op uw website en worden omgeleid naar de servers van PayPal.
Ondersteunde landen | Geen beperkingen voor landen van de klant. |
Ondersteunde munteenheden | AUD, CAD, EUR, GBP, JPY, USD |
Terugbetalingen |
Volledige en gedeeltelijke terugbetaling toegestaan. |
Terugboekingen |
Geschillen worden beheerd door PayPal. |
Zero-authorisation |
Niet ondersteund. |
Terugkerende betalingen |
Niet ondersteund. |
Voordelen van de uitvoering ECS
- De klant hoeft zijn afleveradres niet in te typen. Hij kan de gegevens gebruiken die zijn opgeslagen op zijn PayPal account.
- Het vereenvoudigen van de checkout-ervaring kan zowel uw online als mobiele conversie verhogen.
- Hiermee kunt u leveringskosten toevoegen aan de transactie, die kunnen verschillen op basis van het leveringsadres dat de klant heeft geselecteerd op PayPal.
Procesoverzicht
Wat zal de klant zien?
- Op uw winkelwagenpagina biedt uw website de klant de mogelijkheid om af te rekenen via PayPal.
- De klant klikt op de knop en wordt doorgestuurd naar PayPal, waar hij zich aanmeldt met zijn PayPal-gegevens (hij kan zich bij PayPal registreren als hij nog geen rekening heeft).
- De klant kiest op de website van PayPal het leveringsadres en de betalingswijze van zijn voorkeur.
- De klant wordt teruggeleid naar uw website, waar u extra leveringskosten kunt toevoegen en een eindoverzicht met het totaalbedrag kunt weergeven.
- De klant gaat akkoord met de betaling op uw website en krijgt een aankoopbevestiging te zien.
Hoe werkt het achter de schermen?
-
Initieer de klant
- De klant gaat akkoord met een betaling via PayPal op de website van de verkoper.
- Merchant dient ORDER verzoek in om de sessie te starten, inclusief cancelurl en returnurl.
- Merchant ontvangt ORDER antwoord, inclusief paypaltoken en redirecturl.
-
Doorverwijzen naar PayPal
- De Merchant leidt de browser van de klant door naar de redirecturl, met inbegrip van de paypaltoken.
- De klant meldt zich aan en gaat akkoord met de betaling via zijn PayPal-account.
- Als dit lukt, wordt de browser van de klant omgeleid naar de returnurl.
- Als de PayPal-bestelling wordt geannuleerd, wordt de browser doorgestuurd naar de cancelurl waar een foutmelding kan worden weergegeven. We raden aan om alternatieve betaalmethoden weer te geven, zodat de klant het opnieuw kan proberen.
-
Bestelgegevens ophalen
- Alleen als het bovenstaande is gelukt, dient de verkoper een ORDERDETAILS verzoek in om de transactiegegevens van PayPal op te halen.
- Merchant ontvangt het antwoord ORDERDETAILS en gebruikt dit om een besteloverzicht weer te geven aan de klant.
-
Verwerk de autorisatie
- Als de klant akkoord gaat met de aankoop op je website, dient de verkoper een AUTH verzoek in om de betaling te verwerken.
- De verkoper ontvangt het antwoord AUTH en toont de ontvangstpagina aan de klant.
-
Voltooiing van de betaling
-
Bij standaardgedrag is de transactie in behandeling en worden fondsen doorgaans binnen 24 uur vereffend.
-
Maar indien gewenst kunnen winkeliers hun instellingen zo configureren dat ze in plaats daarvan verzoeken om onmiddellijke betaling. Als alternatief kan afwikkeling tot 7 dagen worden uitgesteld.
-
Een URL-kennisgeving kan worden geconfigureerd om het systeem van de winkelier bij te werken zodra afwikkeling is voltooid. Klik hier voor meer informatie.
-
1. Initieer de klant
U moet de klant de mogelijkheid bieden om met PayPal af te rekenen.
PayPal weergeven op uw kassa
PayPal biedt een knop die u aan uw website kunt toevoegen, samen met richtlijnen en hoe deze moet worden gebruikt.
Klik hier om de nieuwste officiële "PayPal Betalen"-knoppen te downloaden (link naar externe site).
De knop "PayPal Betalen" moet de klant rechtstreeks naar PayPal leiden, zonder afwijkingen of tussenstappen, en daarna terugkeren naar je website. De klant mag niet verplicht worden om zich voor de aankoop aan te melden bij een winkelaccount. Bovendien moet de knop
- Wordt direct onder of naast elk van uw eigen kassa-knoppen geplaatst.
- Boven de vouw worden geplaatst (zichtbaar zonder te hoeven scrollen).
- Heb alternatieve tekst "Afrekenen met PayPal" voor gevallen waarin de afbeelding niet wordt geladen in de browser van de klant.
Deze richtlijnen zijn opgesteld door PayPal en kunnen worden gewijzigd.
Als de klant op de knop "PayPal Betalen" klikt, moet je systeem een ORDER -verzoek uitvoeren en het antwoord interpreteren.
ORDER verzoekvoorbeeld
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
order = {
"currencyiso3a": "GBP",
"requesttypedescription": "ORDER",
"accounttypedescription": "ECOM",
"sitereference": "test_site12345",
"baseamount": "2001",
"paymenttypedescription": "PAYPAL",
"returnurl": "https://yourwebsite.com",
"cancelurl": "https://yourwebsite.com",
"paypallocale": "GB",
"paypaladdressoverride": "1",
"paypalemail": "billing@email.com"
}
strequest = securetrading.Request()
strequest.update(order)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^'
);
$requestData = array(
'currencyiso3a' => 'GBP',
'requesttypedescription' => 'ORDER',
'accounttypedescription' => 'ECOM',
'sitereference' => 'test_site12345',
'baseamount' => '2001',
'paymenttypedescription' => 'PAYPAL',
'returnurl' => 'https://yourwebsite.com',
'cancelurl' => 'https://yourwebsite.com',
'paypallocale' => 'GB',
'paypaladdressoverride' => '1',
'paypalemail' => 'billing@email.com'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"currencyiso3a": "GBP",
"requesttypedescription": "ORDER",
"accounttypedescription": "ECOM",
"sitereference": "test_site12345",
"baseamount": "2001",
"paymenttypedescription": "PAYPAL",
"returnurl": "https://yourwebsite.com",
"cancelurl": "https://yourwebsite.com",
"paypallocale": "GB",
"paypaladdressoverride": "1",
"paypalemail": "billing@email.com"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescription":"ORDER",
"accounttypedescription":"ECOM",
"sitereference":"test_site12345",
"baseamount":"2001",
"paymenttypedescription":"PAYPAL",
"returnurl":"https://yourwebsite.com",
"cancelurl":"https://yourwebsite.com",
"paypallocale":"GB",
"paypaladdressoverride":"1",
"paypalemail":"billing@email.com"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="ORDER">
<merchant>
<returnurl>https://www.example.com/return</returnurl>
<cancelurl>https://www.example.com/cancel</cancelurl>
</merchant>
<billing>
<amount currencycode="GBP">2001</amount>
<payment type="PAYPAL">
<locale>GB</locale>
<paypaladdressoverride>0</paypaladdressoverride>
<paypalemail>billing@email.com</paypalemail>
</payment>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
</request>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Alleen "ECOM" (e-commerce) wordt ondersteund. | |
baseamount XPath: /billing/amount |
Numeriek (11) | Het bedrag van de transactie in basiseenheden, zonder komma's of decimalen, dus €10 wordt ingediend als 1000. Deze waarde moet groter zijn dan nul. (De maximumlengte kan variëren, afhankelijk van uw wervende bank - Neem contact op met uw bank voor meer informatie) | |
cancelurl XPath: /merchant/cancelurl |
URL (2048) | De URL waar de klant naar terugkeert als hij de autorisatie op zijn PayPal-rekening annuleert. | |
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
De Munt waarin de transactie zal worden verwerkt (in ISO3A-formaat).
Voor een lijst van Munt codes die door PayPal worden ondersteund, zie de lijst bovenaan deze pagina. |
|
customerprefixname XPath: /customer/name/prefix |
Alfanumeriek, inclusief symbolen (25) |
Het voorvoegsel van de factuurnaam van de klant (bv. De heer, Juffrouw, Dr.). Ten minste één van de velden met de naam van de klant moet worden ingediend als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customerfirstname XPath: /customer/name/first |
Alfanumeriek, inclusief symbolen (127) |
De klant Voornaam facturatie. Ten minste één van de velden met de naam van de klant moet worden ingediend als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customermiddlename XPath: /customer/name/middle |
Alfanumeriek, inclusief symbolen (127) |
De middelste factureringsnaam of -namen van de klant. Ten minste één van de velden met de naam van de klant moet worden ingediend als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customerlastname XPath: /customer/name/last |
Alfanumeriek, inclusief symbolen (127) |
De klant Achternaam facturatie. Ten minste één van de velden met de naam van de klant moet worden ingediend als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customersuffixname XPath: /customer/name/suffix |
Alfanumeriek, inclusief symbolen (25) |
De achtervoegselnaam van de klant (bv. Bsc). Ten minste één van de velden met de naam van de klant moet worden ingediend als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customerpremise XPath: /customer/premise |
Alfanumeriek, inclusief symbolen (25) |
De naam of het nummer van het huis van de klant. Deze klantadresvelden zijn verplicht als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customertown XPath: /customer/town |
Alfanumeriek, inclusief symbolen (127) |
De stad van de klant. Deze klantadresvelden zijn verplicht als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customercountryiso2a XPath: /customer/country |
Alpha (2) |
Het land van de klant. Dit moet in ISO2A-formaat zijn. Klik hier voor een volledige lijst van landcodes. Deze klantadresvelden zijn verplicht als paypaladdressoverride is ingesteld op "0" of "1". Anders zijn deze velden facultatief. |
|
customerstreet XPath: /customer/street |
Alfanumeriek, inclusief symbolen (127) | De straatnaam van de klant. | |
customercounty XPath: /customer/county |
Alfanumeriek, inclusief symbolen (127) |
De provincie van de klant. Voor adressen in de VS kan de staat in dit veld worden ingevuld. Geldige formaten:
Vereist indien customercountryiso2a is een van de volgende: AR, BR, CA, CN, ID, IN, IT, JP, MX, TH, US |
|
customerpostcode XPath: /customer/postcode |
Alfanumeriek (25) |
De postcode of het postnummer van de klant.
Dit moet een geldige postcode zijn voor de customercountryiso2a ingediend. |
|
orderreference XPath: /merchant/orderreference |
Alfanumeriek, inclusief symbolen (25)
Aanbevolen lengte 25 tekens of minder (exacte lengte afhankelijk van de wervende bank). Niet-naleving van deze eis kan ertoe leiden dat de tekst in de transactie wordt ingekort. |
Uw unieke bestelreferentie die kan worden opgeslagen op Trust Payments en het systeem van PayPal (dit is uw PayPal-factuur-ID).
Zorg ervoor dat de bestelreferentie uniek is voor elke bestelling. |
|
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | Deze waarde moet worden opgegeven als "PAYPAL". | |
paypaladdressoverride XPath: /billing/payment/paypaladdressoverride |
Numeriek (1) |
Hiermee kunt u het door de klant bij PayPal gekozen afleveradres overschrijven:
|
|
paypalemail XPath: /billing/payment/paypalemail |
E-mail (255) | Het e-mailadres waarmee de klant zich aanmeldt bij PayPal. Maximaal 64 tekens toegestaan vóór het @-symbool. | |
paypallocale XPath: /billing/payment/locale |
Alpha (2) |
De taal van de PayPal-inlogpagina.
Klik hier voor een lijst van PayPal-locaties (link naar externe site). |
|
paypalmaxbaseamount XPath: /billing/payment/paypalmaxbaseamount |
Numeriek (11) | Het verwachte maximale totaalbedrag van de complete bestelling, inclusief verzendkosten en belasting. PayPal gebruikt deze waarde om de financieringsbron van de koper te valideren. Moet in basiseenheden zijn. Meer informatie over dit veld vindt u in de specificatie van PayPal zelf. | |
requesttypedescription XPath: /@type |
Alpha (20) | De waarde in het verzoek moet "ORDER" zijn. | |
returnurl XPath: /merchant/returnurl |
URL (2048) | De URL waarnaar de klant wordt teruggestuurd na een succesvolle autorisatie op zijn PayPal-rekening. | |
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) | De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
ORDER antwoordvoorbeeld
{
u 'requestreference': u 'A0bxh87wt',
u 'version': u '1.00',
u 'responses': [{
u 'transactionreference': u '72-32-20002',
u 'paymenttypedescription': u 'PAYPAL',
u 'settleduedate': u '2020-06-01',
u 'transactionstartedtimestamp': u '2020-06-01 15:35:40',
u 'errormessage': u 'Ok',
u 'accounttypedescription': u 'ECOM',
u 'errorcode': u '0',
u 'redirecturl': u 'https://webapp.securetrading.net/cgi-bin/webscr?token=72x32x20002&useraction=commit&cmd=_express-checkout&paypalemail=billing%40email.com',
u 'requesttypedescription': u 'ORDER',
u 'settlestatus': u '0',
u 'operatorname': u 'webservices@example.com',
u 'livestatus': u '0',
u 'paypaltoken': u '72x32x20002'
}]
}
array(3) {
["requestreference"] => string(9) "A349bdehj"
["version"] => string(4) "1.00"
["responses"] =>array(1) {
[0] => array(13) {
["transactionreference"] => string(11) "72-32-20002"
["paymenttypedescription"] => string(6) "PAYPAL"
["settleduedate" ]=> string(10) "2020-06-01"
["transactionstartedtimestamp"] => string(19) "2020-06-01 15:35:40"
["errormessage"] => string(2) "Ok"
["accounttypedescription"] => string(4) "ECOM"
["errorcode"] => string(1) "0"
["redirecturl"] => string(137) "https://webapp.securetrading.net/cgi-bin/webscr?token=72x32x20002&useraction=commit&cmd=_express-checkout&paypalemail=billing%40email.com"
["requesttypedescription"] => string(5) "ORDER"
["settlestatus"] => string(1) "0"
["operatorname"] => string(23) "webservices@example.com"
["livestatus"] => string(1) "0"
["paypaltoken"] => string(11) "72x32x20002"
}
}
}
{
"requestreference":"W23-fjgvn3d8",
"version":"1.00",
"response":[{
"transactionreference":"72-32-20002",
"paymenttypedescription":"PAYPAL",
"settleduedate":"2020-06-01",
"transactionstartedtimestamp":"2020-06-01 15:35:40",
"errormessage":"Ok",
"accounttypedescription":"ECOM",
"errorcode":"0",
"redirecturl":"https://webapp.securetrading.net/cgi-bin/webscr?token=72x32x20002&useraction=commit&cmd=_express-checkout&paypalemail=billing%40email.com",
"requesttypedescription":"ORDER",
"settlestatus":"0",
"operatorname":"webservices@example.com",
"livestatus":"0",
"paypaltoken":"72x32x20002"
}],
"secrand":"zO9"
}
<responseblock version="3.67">
<requestreference>X62d3qhev</requestreference>
<response type="ORDER">
<merchant>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>72-32-20002</transactionreference>
<billing>
<payment type="PAYPAL"/>
</billing>
<timestamp>2020-06-01 15:35:40</timestamp>
<paypal>
<redirecturl>https://www.paypal.com/cgi-bin/webscr?token=56604A14170900854600&useraction=commit&cmd=_express-checkout&paypalemail=billing%40email.com</redirecturl>
<token>56604A14170900854600</token>
</paypal>
<settlement>
<settleduedate>2020-06-01</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<live>1</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
</response>
<secrand>SO</secrand>
</responseblock>
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | De geretourneerde waarde is "ECOM". | |
errorcode XPath: /error/code |
Numeriek (1-5) |
De foutcode (errorcode) moet worden gebruikt om te bepalen of het verzoek succesvol was of niet.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
errordata XPath: /error/data |
Alfanumeriek (255) |
Aanvullende informatie om te helpen bij het oplossen van de fout. Wordt alleen geretourneerd als er een fout is opgetreden. |
|
errormessage XPath: /error/message |
Alfanumeriek (255) |
Dit is het bericht dat overeenkomt met de bovenstaande code.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
livestatus XPath: /live |
Numeriek (1) |
|
|
operatorname XPath: /merchant/operatorname |
Alfanumeriek (255) | De waarde van dit veld bevat de naam van de gebruiker die het verzoek heeft verwerkt. | |
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | De teruggezonden waarde is "PAYPAL". | |
paypaltoken XPath: /paypal/token |
Alfanumeriek (255) | Het token heeft betrekking op de sessie van de klant in het systeem van PayPal. U moet dit registreren, omdat u het dan kunt gebruiken in verband met eventuele relevante vragen aan PayPal. | |
redirecturl XPath: /paypal/redirecturl |
URL (255) | Stuur de browser van de klant door naar deze URL, zodat hij zich kan aanmelden bij zijn PayPal-rekening. | |
requesttypedescription XPath: /@type |
Alpha (20) | De teruggezonden waarde is "ORDER". | |
settleduedate XPath: /settlement/settleduedate |
Datum JJJJ-MM-DD | De datum waarop de transactie zal worden afgewikkeld. | |
settlestatus XPath: /settlement/settlestatus |
Numeriek (3) |
|
|
transactionreference XPath: /transactionreference |
Alfanumeriek, inclusief koppeltekens (25) |
Een unieke referentie voor het verzoek, toegewezen door Trust Payments. | |
transactionstartedtimestamp XPath: /timestamp |
Datum tijd JJJJ-MM-DD hh:mm:ss | Het tijdstip waarop het verzoek is verwerkt. |
Aanvullende opmerkingen over ORDER verzoeken
- De naam van de klant, het adres van de klant, de stad en het land van de klant zijn vereist bij gebruik van paypaladdressoverride opties "0" of "1".
- Wanneer PayPal een transactie weigert terwijl de klant zich op hun servers bevindt, verschijnt er een bericht op het scherm. De klant kan worden gevraagd het opnieuw te proberen of de betalingspoging te annuleren.
- U kunt uw PayPal-rekening zo configureren dat de controle op dubbele factuur-ID's (waarden die zijn ingediend in de orderreference). Neem contact op met PayPal Support voor meer informatie.
2. Doorverwijzen naar PayPal
Na het succesvol indienen van een ORDER verzoek, zal uw systeem een redirecturl in het antwoord. Uw systeem moet de browser van de klant omleiden naar deze URL, een door PayPal gehoste pagina, om de betaling te verwerken.
Bij het testen wordt onze gesimuleerde PayPal-inlogpagina (zoals hieronder getoond) getoond in plaats van een echte PayPal-inlogpagina.
Na het inloggen op hun PayPal-rekening heeft de klant de optie om door te gaan met de transactie of deze te annuleren. Bij het testen kunt u dit nabootsen door een van de onderstaande e-mails te gebruiken op ons test PayPal inlogscherm.
E-mailadres | Scenario | Resultaat |
---|---|---|
auth@auth.com | De klant voert een succesvolle transactie uit. | De browser van de klant wordt omgeleid naar de URL die is opgegeven in de returnurl die werd ingediend in het ORDER verzoek. |
cancel@cancel.com | De klant kiest ervoor om de transactie te annuleren. | De browser van de klant wordt omgeleid naar de URL die is opgegeven in de cancelurl die werd ingediend in het ORDER verzoek. |
U moet wachten tot de klant terugkeert van de PayPal-loginpagina naar de returnurl gehost op uw servers alvorens een autorisatie te verwerken.
3. Bestelgegevens ophalen
Als de klant wordt doorverwezen naar de cancelurl:
Stel uw klant alternatieve betaalmethoden voor zodat hij het opnieuw kan proberen.
Als de klant wordt doorverwezen naar de returnurl:
Volg de onderstaande instructies.
ORDERDETAILS verzoekvoorbeeld
Hier is een voorbeeld van een ORDERDETAILS verzoek. Dit verzoek haalt de adresgegevens op die de klant heeft ingevoerd op de servers van PayPal, en stuurt deze terug in een antwoord op ORDERDETAILS .
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
orderdetails = {
"requesttypedescription": "ORDERDETAILS",
"sitereference": "test_site12345",
"parenttransactionreference": "72-32-20002"
}
strequest = securetrading.Request()
strequest.update(orderdetails)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^'
);
$requestData = array(
'requesttypedescription' => array'ORDERDETAILS',
'sitereference' => 'test_site12345',
'parenttransactionreference' => '72-32-20002'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescription": "ORDERDETAILS",
"sitereference": "test_site12345",
"parenttransactionreference": "72-32-20002"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescription":"ORDERDETAILS",
"sitereference":"test_site12345",
"parenttransactionreference":"72-32-20002"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="ORDERDETAILS">
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>72-32-20002</parenttransactionreference>
</operation>
</request>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Specificatie veld
Veld | Formaat | Beschrijving | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
Dien de transactionreference van het voorgaande ORDER antwoord. Dit komt van de redirect van PayPal. | |
requesttypedescription XPath: /@type |
Alpha (20) | De waarde in het verzoek moet "ORDERDETAILS" zijn. | |
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
ORDERDETAILS antwoord
U moet de informatie in het antwoord op ORDERDETAILS gebruiken om de klant op uw website een pagina te tonen met een samenvatting van de bestelling. De klant kan deze pagina gebruiken om zijn bestelling te bekijken en te bevestigen dat hij wil doorgaan, in welk geval uw systeem een AUTH verzoek indient, zoals hieronder beschreven.
Richtsnoeren voor beste praktijken
- De klant moet de aankoop in twee of minder stappen kunnen voltooien nadat hij vanaf de PayPal-afrekenpagina's naar uw website is doorverwezen.
- De klant mag niet worden verplicht om handmatig aanvullende informatie in te voeren op de beoordelingspagina die beschikbaar is via de PayPal API's.
Op de voornoemde bestelpagina moet de volgende informatie aan de klant worden gepresenteerd alvorens de aankoop te voltooien:
- PayPal als geselecteerde betalingsmethode.
- Afleveradres en e-mailadres van PayPal (te vinden in het antwoord op ORDERDETAILS).
- Het totale door de klant te betalen bedrag, inclusief eventuele extra leveringskosten die aan het oorspronkelijke transactiebedrag worden toegevoegd (indien van toepassing). Zie hieronder voor meer informatie over leveringskosten.
Over de verzendkosten
Zodra uw systeem het antwoord op ORDERDETAILS heeft ontvangen, zou u nu in het bezit moeten zijn van het leveringsadres van de klant (als u een fysiek product wilt verzenden). Op dit punt mag u een leveringskost toevoegen aan de transactiekost.
Ongeacht eventuele leveringskosten moet u de totale kosten aan de klant presenteren en hij moet akkoord gaan met dit eindbedrag voordat de betaling wordt verwerkt. Wij raden u aan de kosten van het product of de producten te scheiden van de leveringskosten, zodat de klant beter begrijpt hoe het bedrag is berekend.
Zodra de klant akkoord gaat met de betaling, kan uw systeem een AUTH verzoek verwerken met dit definitieve bedrag dat in het baseamount veld (zoals hieronder beschreven). Dit totale bedrag, inclusief eventuele extra leveringskosten, mag niet hoger zijn dan het paypalmaxbaseamount waarde (indien ingediend in het ORDER verzoek).
De extra kosten voor de levering worden door u bepaald. In het algemeen zijn er drie manieren om de leveringskosten te berekenen:
- Gratis levering - U kiest ervoor geen extra kosten toe te voegen aan de kosten van het product en uw bedrijf dekt de kosten van de levering.
- Vaste leveringsprijs - U kiest ervoor om aan elke bestelling dezelfde leveringskosten toe te voegen. Dit werkt het best als u ervoor zorgt dat de genoemde kosten dezelfde waarde hebben als de gemiddelde leveringskosten over al uw bestellingen.
- De exacte kosten in rekening brengen (met realtime tarieven) - Nu u het leveringsadres van de klant en de omvang en het gewicht van de levering hebt, kunt u contact opnemen met uw verzendpartner en de exacte leveringskosten berekenen en deze aan de klant presenteren voordat u de betaling afrondt.
Hier is een voorbeeld van een reactie op ORDERDETAILS :
{
u 'requestreference': u 'A0dcb11e6',
u 'version': u '1.00',
u 'responses': [{
u 'transactionreference': u '72-32-20003',
u 'merchantname': u 'Test Merchant',
u 'billinglastname': u 'PAYPALLastName',
u 'transactionstartedtimestamp': u '2020-06-01 15:36:00',
u 'paypalpayerstatus': u 'verified',
u 'parenttransactionreference': u '72-32-20002',
u 'accounttypedescription': u 'ECOM',
u 'errorcode': u '0',
u 'settleduedate': u '2020-06-01',
u 'billingcountryiso2a': u 'GB',
u 'paypalpayerid': u 'e018408a43pid',
u 'paypaladdressstatus': u 'Confirmed',
u 'billingemail': u 'paypal.email@example.com',
u 'requesttypedescription': u 'ORDERDETAILS',
u 'errormessage': u 'Ok',
u 'billingfirstname': u 'Andru00e9',
u 'operatorname': u 'webservices@example.com',
u 'livestatus': u '0',
u 'settlestatus': u '0'
}]
}
array(3) {
["requestreference"] => string(9) "A58cdfkpy"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(19) {
["transactionreference"] => string(11) "72-32-20003"
["merchantname"] => string(13) "Test Merchant"
["billinglastname"] => string(14) "PAYPALLastName"
["transactionstartedtimestamp"] => string(19) "2020-06-01 15:36:00"
["paypalpayerstatus"] => string(8) "verified"
["parenttransactionreference"] => string(11) "72-32-20002"
["accounttypedescription"] => string(4) "ECOM"
["errorcode"] => string(1) "0"
["settleduedate"] => string(10) "2020-06-01"
["billingcountryiso2a"] => string(2) "GB"
["paypalpayerid"] => string(13) "e018408a43pid"
["paypaladdressstatus"] => string(9) "Confirmed"
["billingemail"] => string(24) "paypal.email@example.com"
["requesttypedescription"] => string(12) "ORDERDETAILS"
["errormessage"] => string(2) "Ok"
["billingfirstname"] => string(10) "Andru00e9"
["operatorname"] => string(23) "webservices@example.com"
["livestatus"] => string(1) "0"
["settlestatus"] => string(1) "0"
}
}
}
{
"requestreference":"W23-fjgvn3d8",
"version":"1.00",
"response":[{
"transactionreference":"72-32-20003",
"merchantname":"Test Merchant",
"billinglastname":"PAYPALLastName",
"transactionstartedtimestamp":"2020-06-01 15:36:00",
"paypalpayerstatus":"verified",
"parenttransactionreference":"72-32-20002",
"accounttypedescription":"ECOM",
"errorcode":"0",
"settleduedate":"2020-06-01",
"billingcountryiso2a":"GB",
"paypalpayerid":"e018408a43pid",
"paypaladdressstatus":"Confirmed",
"billingemail":"paypal.email@example.com",
"requesttypedescription":"ORDERDETAILS",
"errormessage":"Ok",
"billingfirstname":"Andru00e9",
"operatorname":"webservices@example.com",
"livestatus":"0",
"settlestatus":"0"
}],
"secrand":"zO9"
}
<responseblock version="3.67">
<requestreference>X538160153</requestreference>
<response type="ORDERDETAILS">
<merchant>
<merchantname>My Test Site</merchantname>
<operatorname>webservices@example.com</operatorname>
</merchant>
<customer>
<town>PAYPAL City</town>
<county>MI</county>
<street>MORE STREET</street>
<name>
<last>PayPalShipToName</last>
</name>
<premise>1 PayPalStreet</premise>
<country>US</country>
</customer>
<transactionreference>72-32-20003</transactionreference>
<billing>
<name>
<last>PAYPALLastName</last>
</name>
<country>GB</country>
<email>paypal.email@example.com</email>
<telephone type="M">0777777777</telephone>
</billing>
<timestamp>2020-06-01 15:36:00</timestamp>
<paypal>
<addressstatus>Confirmed</addressstatus>
<payerstatus>verified</payerstatus>
<payerid>4d22e2606apid</payerid>
</paypal>
<settlement>
<settleduedate>2020-06-01</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<live>1</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<operation>
<parenttransactionreference>72-32-20002</parenttransactionreference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
</response>
<secrand>bt</secrand>
</responseblock>
Specificatie veld
De volgende tabel beschrijft de belangrijkste velden die in het geretourneerde antwoord moeten worden gecontroleerd:
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | De geretourneerde waarde is "ECOM". | |
errorcode XPath: /error/code |
Numeriek (1-5) |
De foutcode (errorcode) moet worden gebruikt om te bepalen of het verzoek succesvol was of niet.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
errordata XPath: /error/data |
Alfanumeriek (255) |
Aanvullende informatie om te helpen bij het oplossen van de fout. Wordt alleen geretourneerd als er een fout is opgetreden. |
|
errormessage XPath: /error/message |
Alfanumeriek (255) |
Dit is het bericht dat overeenkomt met de bovenstaande code.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
livestatus XPath: /live |
Numeriek (1) |
|
|
merchantname XPath: /merchant/merchantname |
Alfanumeriek (255) |
Dit zijn gegevens die verband houden met de rekening die is gebruikt om de transactie te verwerken.
Als u deze velden wilt wijzigen, neem dan contact op met ons Support Team. Hangt af van uw account configuratie. |
|
operatorname XPath: /merchant/operatorname |
Alfanumeriek (255) | De waarde van dit veld bevat de naam van de gebruiker die het verzoek heeft verwerkt. | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De transactionreference van het voorgaande ORDER antwoord. | |
paypaladdressstatus XPath: /paypal/addressstatus |
Alfa (25) | De status van het adres bij PayPal. Ofwel "Confirmed" of "Unconfirmed". | |
paypalpayerid XPath: /billing/payment/payerid |
Alfanumeriek (255) | Unqiue PayPal klantennummer. | |
paypalpayerstatus XPath: /paypal/payerstatus |
Alfa (25) | De status van de betaler bij PayPal. Of "verified" of "unverified". | |
requesttypedescription XPath: /@type |
Alpha (20) | De teruggezonden waarde is "ORDERDETAILS". | |
settleduedate XPath: /settlement/settleduedate |
Datum JJJJ-MM-DD | De datum waarop de transactie zal worden afgewikkeld. | |
settlestatus XPath: /settlement/settlestatus |
Numeriek (3) |
|
|
transactionreference XPath: /transactionreference |
Alfanumeriek, inclusief koppeltekens (25) |
Een unieke referentie voor het verzoek, toegewezen door Trust Payments. | |
transactionstartedtimestamp XPath: /timestamp |
Datum tijd JJJJ-MM-DD hh:mm:ss | Het tijdstip waarop het verzoek is verwerkt. |
Aanvullende opmerkingen over ORDERDETAILS reacties
- De teruggestuurde factuur- en klantgegevens kunnen afwijken van de gegevens die bij het oorspronkelijke verzoek op ORDER zijn verstrekt. Dit kan gebeuren wanneer de klant andere gegevens gebruikt wanneer hij inlogt op de servers van PayPal (en paypaladdressoverride is ingesteld op "0").
- De teruggezonden PayPal-velden zijn gedefinieerd door PayPal. Deze zijn correct op het moment van schrijven, maar kunnen worden gewijzigd.
4. Het verwerken van de autorisatie
Nadat de klant heeft bevestigd dat hij wil doorgaan met de betaling, moet uw systeem een AUTH verzoek uitvoeren en het teruggestuurde antwoord interpreteren.
AUTH verzoekvoorbeeld
Hier is een voorbeeld van een PayPal AUTH verzoek. Merk op hoe de structuur lijkt op een standaard AUTH aanvraag, met uitzondering van de uitsluiting van de meeste betalings-, facturerings- en leveringsgegevens, omdat deze zijn overgenomen van de vorige verzoeken. Zorg ervoor dat de parenttransactionreference veld wordt ingediend, met daarin de unieke Transactiereferentie van het voorgaande ORDERDETAILS verzoek.
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
auth = {
"requesttypedescription": "AUTH",
"sitereference": "test_site12345",
"parenttransactionreference": "72-32-20003",
"paymenttypedescription": "PAYPAL",
"paypaladdressoverride": "1"
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^'
);
$requestData = array(
'requesttypedescription' => 'AUTH',
'sitereference' => 'test_site12345',
'parenttransactionreference' => '72-32-20003',
'paymenttypedescription' => 'PAYPAL',
'paypaladdressoverride' => '1'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescription": "AUTH",
"sitereference": "test_site12345",
"parenttransactionreference": "72-32-20003",
"paymenttypedescription": "PAYPAL",
"paypaladdressoverride": "1"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescription":"AUTH",
"sitereference":"test_site12345",
"parenttransactionreference":"72-32-20003",
"paymenttypedescription":"PAYPAL",
"paypaladdressoverride":"1"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>72-32-20003</parenttransactionreference>
</operation>
<billing>
<payment type="PAYPAL">
<paypaladdressoverride>0</paypaladdressoverride>
</payment>
</billing>
</request>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Specificatie veld
Veld | Formaat | Beschrijving | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
Dien de transactionreference teruggestuurd in het voorgaande ORDERDETAILS antwoord. | |
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | Deze waarde moet worden opgegeven als "PAYPAL". | |
paypaladdressoverride XPath: /billing/payment/paypaladdressoverride |
Numeriek (1) | Moet dezelfde waarde zijn als in het verzoek op ORDER . | |
requesttypedescription XPath: /@type |
Alpha (20) | De waarde in het verzoek moet "AUTH" zijn. | |
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
AUTH antwoordvoorbeeld
Hier volgt een voorbeeld van een PayPal AUTH antwoord. De structuur is vergelijkbaar met een standaard AUTH antwoord, behalve dat er extra PayPal-specifieke velden zijn opgenomen.
{
u 'requestreference': u 'A0dcb11e6',
u 'version': u '1.00',
u 'responses': [{
u 'transactionreference': u '72-32-20004',
u 'merchantname': u 'Test Merchant',
u 'paymenttypedescription': u 'PAYPAL',
u 'authcode': u '44782-D149613359266',
u 'transactionstartedtimestamp': u '2020-06-01 15:36:20',
u 'errormessage': u 'Ok',
u 'parenttransactionreference': u '72-32-20003',
u 'accounttypedescription': u 'ECOM',
u 'errorcode': u '0',
u 'settleduedate': u '2020-06-01',
u 'currencyiso3a': u 'GBP',
u 'baseamount': u '2001',
u 'acquirerresponsecode': u 'None',
u 'requesttypedescription': u 'AUTH',
u 'operatorname': u 'webservices@example.com',
u 'livestatus': u '0',
u 'settlestatus': u '0'
}]
}
array(3) {
["requestreference"] => string(9) "A58cdfkpy"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] =>array(17) {
["transactionreference"] => string(11) "72-32-20004"
["merchantname"] => string(13) "Test Merchant"
["paymenttypedescription"] => string(6) "PAYPAL"
["authcode"] => string(19) "44782-D149613359266"
["transactionstartedtimestamp"] => string(19) "2020-06-01 15:36:20"
["errormessage"] => string(2) "Ok"
["parenttransactionreference"] => string(11) "72-32-20003"
["accounttypedescription"] => string(4) "ECOM"
["errorcode"] => string(1) "0"
["settleduedate"] => string(10) "2020-06-01"
["currencyiso3a"] => string(3) "GBP"
["baseamount"] => string(4) "2001"
["acquirerresponsecode"] => string(4) "None"
["requesttypedescription"] => string(4) "AUTH"
["operatorname"] => string(23) "webservices@example.com"
["livestatus"] => string(1) "0"
["settlestatus"] => string(1) "0"
}
}
}
{
"requestreference":"W23-fjgvn3d8",
"version":"1.00",
"response":[{
"transactionreference":"72-32-20004",
"merchantname":"Test Merchant",
"paymenttypedescription":"PAYPAL",
"authcode":"44782-D149613359266",
"transactionstartedtimestamp":"2020-06-01 15:36:20",
"errormessage":"Ok",
"parenttransactionreference":"72-32-20003",
"accounttypedescription":"ECOM",
"errorcode":"0",
"settleduedate":"2020-06-01",
"currencyiso3a":"GBP",
"baseamount":"2001",
"acquirerresponsecode":"None",
"requesttypedescription":"AUTH",
"operatorname":"webservices@example.com",
"livestatus":"0",
"settlestatus":"0"
}],
"secrand":"zO9"
}
<responseblock version="3.67">
<requestreference>X538160153</requestreference>
<response type="AUTH">
<merchant>
<merchantname>My Test Site</merchantname>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>72-32-20004</transactionreference>
<timestamp>2020-06-01 15:36:20</timestamp>
<acquirerresponsecode>None</acquirerresponsecode>
<operation>
<parenttransactionreference>72-32-20003</parenttransactionreference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<settlement>
<settleduedate>2020-06-01</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<billing>
<amount currencycode="GBP">2001</amount>
<payment type="PAYPAL"/>
</billing>
<authcode>83154-D140912749345</authcode>
<live>1</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
</response>
<secrand>LLq</secrand>
</responseblock>
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | De geretourneerde waarde is "ECOM". | |
acquirerresponsecode XPath: /acquirerresponsecode |
Alfanumeriek (255) | Gebruikt door uw verwerver om het resultaat van het verzoek aan te geven. | |
authcode XPath: /authcode |
Alfanumeriek (255) |
De autorisatie code verstrekt door de uitgevende bank. Wordt alleen geretourneerd als de transactie is toegestaan. |
|
baseamount XPath: /billing/amount |
Numeriek (11) | Het bedrag van de transactie in basiseenheden, zonder komma's of decimalen, dus €10 wordt geretourneerd als 1000. | |
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
De Munt waarin de transactie werd verwerkt (in ISO3A-formaat).
Voor een lijst van Munt codes die door PayPal worden ondersteund, zie de lijst bovenaan deze pagina. |
|
errorcode XPath: /error/code |
Numeriek (1-5) |
De foutcode (errorcode) moet worden gebruikt om te bepalen of het verzoek succesvol was of niet.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
errordata XPath: /error/data |
Alfanumeriek (255) |
Aanvullende informatie om te helpen bij het oplossen van de fout. Wordt alleen geretourneerd als er een fout is opgetreden. |
|
errormessage XPath: /error/message |
Alfanumeriek (255) |
Dit is het bericht dat overeenkomt met de bovenstaande code.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
livestatus XPath: /live |
Numeriek (1) |
|
|
merchantname XPath: /merchant/merchantname |
Alfanumeriek (255) |
Dit zijn gegevens die verband houden met de rekening die is gebruikt om de transactie te verwerken.
Als u deze velden wilt wijzigen, neem dan contact op met ons Support Team. Hangt af van uw account configuratie. |
|
operatorname XPath: /merchant/operatorname |
Alfanumeriek (255) | De waarde van dit veld bevat de naam van de gebruiker die het verzoek heeft verwerkt. | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De transactionreference van het voorgaande ORDERDETAILS antwoord. | |
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | De teruggezonden waarde is "PAYPAL". | |
requesttypedescription XPath: /@type |
Alpha (20) | De geretourneerde waarde is "AUTH". | |
settleduedate XPath: /settlement/settleduedate |
Datum JJJJ-MM-DD | De datum waarop de transactie zal worden afgewikkeld. | |
settlestatus XPath: /settlement/settlestatus |
Numeriek (3) | Dit veld wordt gebruikt om de status van de transactie te bepalen. Klik hier voor meer informatie over de settlestatus veld en het afwikkeling proces voor PayPal. | |
transactionreference XPath: /transactionreference |
Alfanumeriek, inclusief koppeltekens (25) |
Een unieke referentie voor het verzoek, toegewezen door Trust Payments. | |
transactionstartedtimestamp XPath: /timestamp |
Datum tijd JJJJ-MM-DD hh:mm:ss | Het tijdstip waarop het verzoek is verwerkt. |
U kunt geen tokenisatie uitvoeren met PayPal.