Paysafecard

Paysafecard

Paysafecard is a payment method for mainly online shopping. When using my paysafecard during the payment process in an online shop, there is no need to enter the PIN again, only a username and password are required.

When paying with a paysafecard, the consumer enters the 16-digit number and the amount tendered is deducted from the paysafecard balance. Combining PINs allows consumers to use up any remaining credit on a paysafecard PIN. The current balance of each paysafecard as well as its transaction history and production date can be viewed at the official paysafecard site by entering the respective 16 PIN code.

Payments for goods or services other than Euros are converted into Euros at the conversion rate at the time of purchase.

Commands

Pre Transaction Commands

The first step is to generate a unique order number with the command CREATEORDER.

Transaction Commands

INITIATEPAYMENT

Request Parameters
Table 1. Request Parameters
Required Parameters Optional Parameters

MERCHANTKEY

LOGPATH

COMMAND

LANGUAGE

INITTYPE

DEPOSITAMOUNT

PAYMENTTYPE

ORDERREFERENCE

AMOUNT

CUSTOMERSTATEMENT

CURRENCY

CONFIRMURL

ORDERNUMBER

APPLICATIONTYPE

ORDERDESCRIPTION

PAYMENTNUMBER

SUCCESSURL

ORIGINATOR

FAILUREURL

CONSUMER_MERCHANT_CRM_ID

Optional request parameters CUSTOMERSTATEMENT and ORDERREFERENCE, are more restricted about their length and allowed characters than usual.

Response Parameters
Table 2. Response Parameters
Required Parameters Optional Parameters

status

header

version

body

errorCode

message

paySysMessage

originator

Initialization example
Paysafecard payment method can be initialized if the merchant sends PAYSAFECARD for parameter INITTYPE, and PAYSAFECARD for PAYMENTTYPE.
  1. Send a request.

    Example of Request for Initiation
    COMMAND=INITIATEPAYMENT&
    MERCHANTKEY=43gADp5.UOZxPTet6O8o8K6o-7RefQB3BO21OMu4chB65LJUI_&
    INITTYPE=PAYSAFECARD&
    PAYMENTTYPE=PAYSAFECARD&
    ORDERNUMBER=6036867&
    LANGUAGE=en&
    AMOUNT=1&
    CURRENCY=EUR&
    APPLICATIONTYPE=S&
    SERVICEURL=http://yourimprint.com/&
    CUSTOMERSTATEMENT=eh3462t3hg346&
    SUCCESSURL=https://yoursuccessurl.com&
    ORDERDESCRIPTION=Test&
    FAILUREURL=https://yourfailureurl.com&
    CONSUMER_MERCHANT_CRM_ID=13423072&
    DEPOSITAMOUNT=0
  2. The response looks like this:

    Example of Response for Initiation
    header=Content-Type%3A+text%2Fhtml%0D%0A&body=%3Chtml%3E%3Chead%3E%3Ctitle%3Epaysafecard+redirect%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%3E%0D%0A%3Cform+name%3D%22paysafecardForm%22+action%3D%22https%3A%2F%2Fcustomer.test.at.paysafecard.com%2Fpsccustomer%2FGetCustomerPanelServlet%3Fcurrency%3DEUR%26mtid%3D2p1000000840-10006691355787469%26amount%3D1.00%26mid%3D1160000872%26locale%3Dnull%22+method%3D%22post%22%3E%0D%0A%0D%0A%3C%2Fform%3E%0D%0A%3Cscript+type%3D%22text%2Fjavascript%22%3E%0D%0A%3C%21--%0D%0Adocument.paysafecardForm.submit%28%29%3B%0D%0A%2F%2F--%3E%0D%0A%3C%2Fscript%3E%3C%2Fbody%3E%3C%2Fhtml%3E&version=qtillserver+3.23.0.48&status=0
  3. Decode the text with URL Decoder. Use Notepad ++ or some other URL Decoder. After decoding the response should look like this.

    header=Content-Type: text/html
    &body=<html><head><title>paysafecard redirect</title></head><body>
    <form name="paysafecardForm" action="https://customer.test.at.paysafecard.com/psccustomer/GetCustomerPanelServlet?currency=EUR&mtid=2p8000000840-10002709106578534&amount=1.00&mid=1160000872&locale=null" method="post">
    
    </form>
    <script type="text/javascript">
    <!--
    document.paysafecardForm.submit();
    //-->
    </script></body></html>&version=qtillserver 3.23.0.47&status=0
  4. Beautify code (delete everything above and below html tag and uncomment function, and replace every "+" with empty space).

    <html>
        <head>
            <title>paysafecard redirect
            </title>
        </head>
         <body>
            <form name="paysafecardForm" action="https://customer.test.at.paysafecard.com/psccustomer/GetCustomerPanelServlet?currency=EUR&mtid=2p8000000840-10002709106578534&amount=1.00&mid=1160000872&locale=null" method="post">
    
            </form>
            <script type="text/javascript">
    
                document.paysafecardForm.submit();
    
            </script>
        </body>
    </html>
  5. Execute the HTML, and the Paysafecard mask should be seen in a browser. Enter specific test data for Paysafecard payment method. After that, the merchant will be redirected to the successUrl (which is invalid in this example).

VERIFYPAYMENT

Request Parameters
Table 3. Request Parameters
Required Parameters Optional Parameters

MERCHANTKEY

LOGPATH

COMMAND

LANGUAGE

ORDERNUMBER

APPLICATIONTYPE

PAYMENTNUMBER

QTILL_CLIENT_IP_ADDRESS

ORIGINATOR

Response Parameters
Table 4. Response Parameters
Required Parameters Optional Parameters

status

orders

version

errorCode

message

paySysMessage

originator

Order as a basis type of properties in the response can be returned for this command.
Verifying payment example
  1. Send a request.

    Request Parameters
    MERCHANTKEY=43gADp5.UOZxPTet6O8o8K6o-7RefQB3BO21OMu4chB65LJUI_&
    COMMAND=VERIFYPAYMENT&
    APPLICATIONTYPE=S&
    ORDERNUMBER=6036867&
    LANGUAGE=en
  2. The response looks like this:

    Response Parameters
    order.1.amount=1.00&
    payment.1.1.paymentNumber=6036867&
    payment.1.1.depositAmount=0.00&
    order.1.orderText=Test&
    order.1.contractNumber=72ee7187-cf31-4aae-9773-20d6bec114af&
    payment.1.1.timeModified=31.10.2022+10%3A13%3A25&
    payment.1.1.operationsAllowed=DEPOSIT%2CAPPROVEREVERSAL&
    payment.1.1.paymentType=PAYSAFECARD&
    order.1.merchantNumber=840&
    payment.1.1.state=payment_approved&
    order.1.depositAmount=0&
    order.1.customerStatement=eh3462t3hg346&
    order.1.providerContractNumber=72ee7187-cf31-4aae-9773-20d6bec114af&
    order.1.timeModified=31.10.2022+10%3A10%3A32&
    payment.1.1.providerReferenceNumber=2p7000000840-10006036867207431&
    order.1.orderNumber=6036867&
    payment.1.1.gatewayReferenceNumber=6036867&
    payment.1.1.orderNumber=6036867&
    payment.1.1.approveAmount=1.00&
    order.1.approveAmount=1.00&
    order.1.credits=0&
    payment.1.1.merchantNumber=840&
    order.1.payments=1&
    order.1.currency=EUR&
    version=qtillserver+3.23.0.48&
    order.1.refundAmount=0&
    payment.1.1.currency=EUR&
    order.1.timeCreated=31.10.2022+10%3A10%3A31&
    order.1.state=ORDERED&
    order.1.orderDescription=Test&
    orders=1&
    payment.1.1.timeCreated=31.10.2022+10%3A13%3A25&
    order.1.acquirer=Paysafecard&
    order.1.paymentType=PAYSAFECARD&
    order.1.brand=paysafecard&
    status=0

Post Transaction Commands

GETORDERDETAILS

Request Parameters
Table 5. Request Parameters
Required Parameters Optional Parameters

MERCHANTKEY

LOGPATH

COMMAND

LANGUAGE

ORDERNUMBER

APPLICATIONTYPE

ADMIN_PASSWORD

ORIGINATOR

Response Parameters
Table 6. Response Parameters
Required Parameters Optional Parameters

status

orders

version

errorCode

message

paySysMessage

originator

Order as a basis type of properties in the response can be returned for this command.
Getting order details example
  1. Send a request.

    Request Parameters
    MERCHANTKEY=43gADp5.UOZxPTet6O8o8K6o-7RefQB3BO21OMu4chB65LJUI_&
    COMMAND=GETORDERDETAILS&
    ORDERNUMBER=6036867&
    ADMIN_PASSWORD=9p3a0m5f&
    APPLICATIONTYPE=S&
  2. The response looks like this:

    Response Parameters
    order.1.amount=1.00&
    payment.1.1.paymentNumber=6036867&
    payment.1.1.depositAmount=1.00&
    order.1.orderText=Test&
    order.1.contractNumber=72ee7187-cf31-4aae-9773-20d6bec114af&
    payment.1.1.timeModified=31.10.2022+10%3A15%3A00&
    payment.1.1.paymentType=PAYSAFECARD&
    order.1.merchantNumber=840&
    payment.1.1.state=payment_deposited&
    order.1.depositAmount=1.00&
    order.1.customerStatement=eh3462t3hg346&
    order.1.providerContractNumber=72ee7187-cf31-4aae-9773-20d6bec114af&
    order.1.orderNumber=6036867&
    order.1.timeModified=31.10.2022+10%3A10%3A32&
    payment.1.1.providerReferenceNumber=2p7000000840-10006036867207431&
    payment.1.1.gatewayReferenceNumber=6036867&
    payment.1.1.orderNumber=6036867&
    objectsTotal=1&
    payment.1.1.approveAmount=1.00&
    order.1.approveAmount=0&
    order.1.credits=0&
    payment.1.1.merchantNumber=840&
    order.1.payments=1&
    order.1.currency=EUR&
    version=qtillserver+3.23.0.48&
    order.1.state=ORDERED&
    order.1.timeCreated=31.10.2022+10%3A10%3A31&
    payment.1.1.currency=EUR&
    order.1.refundAmount=0&
    order.1.orderDescription=Test&
    orders=1&
    payment.1.1.timeCreated=31.10.2022+10%3A13%3A25&
    order.1.paymentType=PAYSAFECARD&
    order.1.brand=paysafecard&
    order.1.acquirer=Paysafecard&
    payment.1.1.batchNumber=300000592&
    status=0

DEPOSIT

The transaction is automatically deposited for Paysafecard and all payment methods that are part of Paysafecard.

The transaction can be deposited:

  1. By using the command DEPOSIT (see an example!).

This is only possible if the transaction is not deposited in any other way. By default, a Paysafe-Transaction is deposited automatically.
Request Parameters
Table 7. Request Parameters
Required Parameters Optional Parameters

MERCHANTKEY

LOGPATH

COMMAND

LANGUAGE

ORDERNUMBER

CURRENCY

PAYMENTNUMBER

CUSTOMERSTATEMENT

AMOUNT

MERCHANTREFERENCE

APPLICATIONTYPE

ORIGINATOR

Response Parameters
Table 8. Response Parameters
Required Parameters Optional Parameters

status

orders

version

errorCode

message

paySysMessage

originator

Deposit
  1. Send a request.

    Request Parameters
    MERCHANTKEY=43gADp5.UOZxPTet6O8o8K6o-7RefQB3BO21OMu4chB65LJUI_&
    COMMAND=DEPOSIT&
    ORDERNUMBER=6036867&
    PAYMENTNUMBER=6036867&
    AMOUNT=1.00&
    CURRENCY=EUR&
    LANGUAGE=en&
    APPLICATIONTYPE=S
  2. The response looks like this:

    Response Parameters
    version=qtillserver+3.23.0.48&
    paymentNumber=6036867&
    status=0

Query Commands

For every payment method commands QUERYORDERS, QUERYCREDITS, and QUERYBATCHES are used.

Order Flow Diagram

Image

To interpret this diagram, the successful completion of a NEW PAYMENT is assumed. Starting from this operation it’s possible to carry out different commands.

All possible commands for specific acquirers are found here.