Paysafecard Deposit
Paysafecard Deposit is a popular voucher payment method allowing user to purchase paysafecard 16-digit PINs at various outlets.
In order to improve usability and to meet KYC requirements in various countries, besides the option to only enter the PIN(s), Paysafecard also offers a my paysafecard account - both options are selected only after the redirect to Paysafecard.
The following method IDs are covered in this section:
ID | Name | Credit/Debit State |
---|---|---|
19 | PaysafecardDeposit | CapturedByProvider |
Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).
The following Paysafecard payment methods are available in the PXP Financial payment service:
Payment Method | Description |
---|---|
Paysafecard Deposit* with provider Paysafecard** | The old implementation of Paysafecard is no longer in use. |
Paysafecard Deposit with *provider PaysafecardSOPG** | This implementation is utilizing the (current) Paysafecard SOPG interface. |
Paysafecard Withdrawal | The withdrawal option requires that the customer uses a my paysafecard account. |
Paysafecard Direct Deposit | The Paysafecard Direct Deposit option allows to enter the PIN at the merchant´s website and complete the payment without redirection to Paysafecard. This payment option is being phased out and is no longer available for new merchants. |
Redirect Integration
Paysafecard is supported.
Backend2BackendIntegration
The following description applies to PaysafecardDeposit with provider Paysafecard SOPG.
The following parameters can be provided in initiatePaymentRequest.specificPaymentData
:
key (value type, account type, required) | value |
---|---|
SuccessPageURL (string) | The URL to redirect user in case of a successful payment |
ErrorPageUrl (string) | The URL to redirect user in case of unsuccessful payment |
MerchantNotificationUrl (string) | Either SuccessPageURL/ErrorPageURL is selected, or MerchantNotificationURL is used if provided |
UserID (string, required) | UserID of merchant´s user. The username should not be used. |
UserIP (string, required) | IP address of the user. |
ShouldRequestKYC (string, optional) | When the merchant sends true, the payment is extending with the KYC flow. This flow can only be used when activated by Paysafe. See the section further below for details. |
Example initiatePaymentRequest:
<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>AcceptDemo</merchantID>
<shopID>AcceptDemo</shopID>
<merchantTransactionID>testPSCAD00001085_06</merchantTransactionID>
<paymentMethodID>19</paymentMethodID>
<amount currencyCode="EUR">50.00</amount>
<userID>48722522</userID>
<userData>
<username>accept308</username>
<firstname>John</firstname>
<lastname>Doe</lastname>
<languageCode>en</languageCode>
<email>[email protected]</email>
<address>
<street>Address2308</street>
<houseName>Address308</houseName>
<postalCode>447474</postalCode>
<state>State308</state>
<countryCode2>DE</countryCode2>
</address>
<dateOfBirth>1941-01-03T00:00:00</dateOfBirth>
</userData>
<userIP>127.0.0.1</userIP>
<userSessionID>07430107032016axcvED5CPaQ</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
<data xsi:type="keyStringValuePair">
<key>SuccessPageUrl</key>
<value>https://example.com/?status=success&txnid=14573330244299428</value>
</data>
<data xsi:type="keyStringValuePair">
<key>ErrorPageUrl</key>
<value>https://example.com/?status=fail&txnid=14573330244299428</value>
</data>
<data xsi:type="keyStringValuePair">
<key>MerchantNotificationUrl</key>
<value>https://example.com/paysafecardRedirectBack.action</value>
</data>
</specificPaymentData>
</initiatePaymentRequest>
Example initiatePaymentRequest (with KYC flow):
<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>B2BTestMerchant</merchantID>
<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
<merchantTransactionID>06129a57-d536-4bef-b9dc-f84efc893583</merchantTransactionID>
<paymentMethodID>19</paymentMethodID>
<amount currencyCode="EUR">21</amount>
<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
<userData>
<username>PaysafecardSOPGShouldRequestKYCBDD</username>
</userData>
<userIP>127.0.0.1</userIP>
<userSessionID>32e4937d-7d93-477f-aaf2-52a24a4a9c9c</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
<data xsi:type="keyStringValuePair">
<key>SuccessPageUrl</key>
<value>http://accept/</value>
</data>
<data xsi:type="keyStringValuePair">
<key>ErrorPageUrl</key>
<value>http://decline/</value>
</data>
<data xsi:type="keyStringValuePair">
<key>MerchantNotificationUrl</key>
<value />
</data>
<data xsi:type="keyStringValuePair">
<key>LanguageCode</key>
<value>de</value>
</data>
<data xsi:type="keyBooleanValuePair">
<key>ShouldRequestKYC</key>
<value>true</value>
</data>
</specificPaymentData>
</initiatePaymentRequest>
Example initiatePaymentResponse:
<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<merchantID>PG</merchantID>
<shopID>releaseb</shopID>
<paymentMethod>
<key>19</key>
<value>Paysafecard Deposit</value>
</paymentMethod>
<merchantTransactionID>testPSCAD00001085_06</merchantTransactionID>
<paymentID>3603bd0e-5449-4ced-ba01-5eadf858e741</paymentID>
<userID>48722522</userID>
<paymentProvider>
<key>118</key>
<value>PaysafecardSOPG</value>
</paymentProvider>
<amount currencyCode="EUR">50.00</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>e468b1ea-5771-4bda-bc9e-3434838ef29b</id>
<definition>
<key>30</key>
<value>RedirectURLCreated</value>
</definition>
<createdOn>2017-05-15T16:28:42.3064018Z</createdOn>
<description>https://api.test.kalixa.com/WebMockProviders/PaysafecardSOPG.aspx?mid=1000001234&mtid=3603bd0e-5449-4ced-ba01-5eadf858e741&amount=50.00&currency=EUR</description>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>RedirectionUrl</key>
<value>https://api.test.kalixa.com/WebMockProviders/PaysafecardSOPG.aspx?mid=1000001234&mtid=3603bd0e-5449-4ced-ba01-5eadf858e741&amount=50.00&currency=EUR</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">50</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>3603bd0e-5449-4ced-ba01-5eadf858e741</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>0</paymentAccountID>
</paymentAccount>
</payment>
</initiatePaymentResponse>
KYC flow
When the KYC flow has been initiated, PXP returns the customer´s Firstname, Lastname, customerID and DateOfBirth in a state notification for the state AuthorisedByProvider.
The merchant has to respond to this notification. if the payment is blocked or refused by merchant, then the authorization is cancelled on Paysafecard.
Example handleProviderNotificationToMerchantRequest (with KYC data):
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
<paymentMethod>
<key>19</key>
<value>Paysafecard Deposit</value>
</paymentMethod>
<merchantTransactionID>06129a57-d536-4bef-b9dc-f84efc893583</merchantTransactionID>
<paymentID>072d3d6e-883f-49f1-bc27-80d1c1be9da0</paymentID>
<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
<paymentProvider>
<key>118</key>
<value>PaysafecardSOPG</value>
</paymentProvider>
<amount currencyCode="EUR">21.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>f31cab99-ffa1-4296-a363-a38703f94171</id>
<definition>
<key>27</key>
<value>AuthorisedByProvider</value>
</definition>
<createdOn>2019-12-30T10:02:16.933</createdOn>
<paymentStateDetails xsi:nil="true" />
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">21.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>072d3d6e-883f-49f1-bc27-80d1c1be9da0</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CustomerID</key>
<value>10677219</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCFirstname</key>
<value>Tore</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCLastname</key>
<value>God</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>KYCDateOfBirth</key>
<value>06/06/1466</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>e3ae02c5-614d-4932-8cca-f6a68a6bde47</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
Example handlePaymentStateChangedNotificationResponse (successful case:
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>0</key>
<value>ProcessedSuccessfully</value>
</resultCode>
<resultMessage>Approved payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (error case):
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationResponse
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key>15</key>
<value>BlockedByMerchant</value>
</resultCode>
<resultMessage>Rejected payment</resultMessage>
</handlePaymentStateChangedNotificationResponse>
Note: When the merchant responds with resultCode 0 (Approved), the payment is captured and the state CapturedByProvider is notified to the merchant.
However, if the merchant responds with resultcode 15 (BlockedByMerchant), the payment is cancelled at provider (captured with an amount of zero) and a notification for the state Cancelled can be sent to the merchant.
Finalization of payment
Example handleProviderNotificationToMerchantRequest:
<handleProviderNotificationToMerchantResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<payment>
<merchantID>YourMerchantID</merchantID>
<shopID>YourShopID</shopID>
<paymentMethod>
<key>19</key>
<value>Paysafecard Deposit</value>
</paymentMethod>
<merchantTransactionID>0e23b2f1-1d92-4ddd-8d43-9de4e77e279b</merchantTransactionID>
<paymentID>18746be1-b2c3-42d8-8543-fc2d0a93f77d</paymentID>
<userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
<paymentProvider>
<key>118</key>
<value>PaysafecardSOPG</value>
</paymentProvider>
<amount currencyCode="EUR">100</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>9b4bf2bc-c0e7-4bee-abb4-a00ebe5ce4cf</id>
<definition>
<key>27</key>
<value>CapturedByProvider</value>
</definition>
<createdOn>2010-05-19T10:14:41.1242993Z</createdOn>
<paymentStateDetails xsi:nil="true" />
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">100</baseAmount>
<paymentDetails xsi:nil="true" />
</payment>
</handleProviderNotificationToMerchantResponse >
The possible payment states in *handleProviderNotificationToMerchantRequest are listed below:
Payment State | Description |
---|---|
CapturedByProvider (27) | Success state; Redirect user to SuccessPage and deliver goods |
CaptureErrorReportedByProvider (28) | Error state; Technical error during payment finalization |
CaptureCommunicationErrorOccurred (324) | Error state; Communication error during payment finalization |
AuthorisedByProvider (13) | Intermediate state; It’s not a final state yet. Payment still needs to captured. |
PendingOnProvider (120) | Pending state. |
Cancelled (113) | Final state: Payment cancelled by merchant. |
AbortedByCustomer (101) | Final state: Payment cancelled by merchant`s user. |
AbortedOnProvider (397) | Final state: Payment cancelled by merchant operator while in AuthorisedByProvider state. |
Paysafecard deposits with provider PaysafecardSOPG can be captured either automatically, after a pre-defined time or manually on demand.
Step 3 - optional (for manual capturing):
If merchant wants to initiate a capturing he needs to call the method executePaymentAction
with the ActionID = 205
Notifications
The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.
Example handlePaymentStateChangedNotificationRequest for the state CapturedByProvider:
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>KalixaAcceptDEMO</merchantID>
<shopID>KalixaAcceptDEMO</shopID>
<paymentMethod>
<key>19</key>
<value>Paysafecard Deposit</value>
</paymentMethod>
<merchantTransactionID>20141217_1</merchantTransactionID>
<paymentID>ccbc1e5e-baeb-4331-ab99-7c94fef0ce73</paymentID>
<userID>KalxiaTestUser_7</userID>
<paymentProvider>
<key>118</key>
<value>PaysafecardSOPG</value>
</paymentProvider>
<amount currencyCode="EUR">100.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>195.72.132.1</userIP>
<state>
<id>52ad9032-ebd7-4546-ac86-45e67453fc35</id>
<definition>
<key>27</key>
<value>CapturedByProvider</value>
</definition>
<createdOn>2014-12-17T08:14:02.34</createdOn>
<paymentStateDetails xsi:nil="true" />
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">100.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>ccbc1e5e-baeb-4331-ab99-7c94fef0ce73</value>
</detail>
<detail xsi:type="keyIntValuePair">
<key>PaymentScoring</key>
<value>714663</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>72562076-5d33-4279-8345-e6bc016cbfcc</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
Example handlePaymentStateChangedNotificationRequest for the state Cancelled:
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>PaysafecardSOPGShouldRequestKYCBDD</shopID>
<paymentMethod>
<key>19</key>
<value>Paysafecard Deposit</value>
</paymentMethod>
<merchantTransactionID>21e30378-3dca-4694-acd3-7c1e91f33c61</merchantTransactionID>
<paymentID>07e7ca39-14f6-4a72-a3e6-442b850d122a</paymentID>
<userID>PaysafecardSOPGShouldRequestKYCBDD</userID>
<paymentProvider>
<key>118</key>
<value>PaysafecardSOPG</value>
</paymentProvider>
<amount currencyCode="EUR">46.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>f22eceab-f0ab-430e-a031-045668603500</id>
<definition>
<key>113</key>
<value>Cancelled</value>
</definition>
<createdOn>2019-12-30T10:02:21.42</createdOn>
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">46.0000</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>07e7ca39-14f6-4a72-a3e6-442b850d122a</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>CustomerID</key>
<value>10677219</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>e3ae02c5-614d-4932-8cca-f6a68a6bde47</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
Paysafecard error codes
ProviderResponseCode | ProviderResponseMessage |
---|---|
3001 | Merchant %1 is not active. Please contact your webshop. |
3002 | Currency %1 is not valid for merchant %2. Please contact your webshop. |
3003 | Merchant %1 does not exist. Please contact your webshop. |
3006 | Card Type %1 is not accepted by the merchant. |
3007 | Merchant %1 exceeded time window to debit the transaction. |
3012 | Merchant %1 exceeded time window for Micropayment. |
3013 | Merchant %1 already exists. |
3014 | Reporting Criterion %1 for Merchant %2 doesn't exist. |
3015 | Reporting Criterion %1 for Merchant %2 is in state %3, expected %4 or %5. |
4001 | SSL error. |
4002 | Invalid function request. |
4003 | above maximum disposition amount (1000.00 EUR or equivalent in different transaction currency) |
4004 | Invalid proxy request. |
4005 | Connection error. |
4006 | Unexpected response from server. |
4007 | Undefined error - this should not happen. |
4008 | Error reported from backend. |
4010 | Error opening configuration file. |
4011 | Configuration file is no regular readable file. |
4012 | Incorrect syntax in configuration file. |
4013 | Incorrect value in configuration file. |
4014 | Error HTTP response from API proxy: %1. |
10003 | HTTPS request error |
10004 | General technical error |
10005 | General technical error |
10006 | PIN validation failed |
10007 | Unexpected error |
10008 | Authentication failed |
10010 | cancelPayment too late |
10011 | Insufficient Balance |
10012 | Zero Balance |
10013 | Card not active |
10014 | Method not allowed for SOPG User |
10015 | Currency not valid for SOPG User |
10021 | Invalid transaction amount |
10028 | Invalid request parameters |
Updated almost 5 years ago