SafetyPay

Introduction

SafetyPay

SafetyPay is an asynchronous payment method where the end consumers finish the payment in their own online-banking account after being redirected to a SafetyPay landing page during checkout to choose the currency and the desired bank. There is also the option of a cash payment, in which case SafetyPay provides a Payment Code for the consumers that they can use later at any point of collection to pay (merchant receives a notification confirming the outcome of the transaction). By integrating SafetyPay, merchants can accommodate consumers who:

  • prefer not to use a credit card (or do not have one),

  • do not want to disclose personal information for fear of fraud,

  • wish to shop outside their country but don’t have internationally accepted cards.

Another benefit of SafetyPay is that it significantly reduces fraudulent purchases, opportunities for identity theft and many other related security risks by using push payments. Consumers submit ("push") their payment to the merchant directly, without providing their personal & financial information to the merchant or SafetyPay. And since there is no fraud, the merchant controls when and how to refund consumers: there are no chargebacks or other hidden costs.

SafetyPay is offered as a processing payment model, which means that the acquirer directly acquires the merchants.

General Information

Payment Mode, Countries and Currencies

This table illustrates which payment mode SafetyPay belongs to. It also provides detailed information about the countries and currencies which are relevant for SafetyPay.

Payment Mode

Please contact merchant support for Payment Mode.

Countries

AT, DE, ES, BE, NL, US, CA, CR, MX, PR, BR, EC, PE, CL, CO

Currencies

EUR, USD, CAD, MXN, CRC, BRL, PEN, CLP, CLF, COP

Communication Formats

This table illustrates how SafetyPay notifications are encoded and which formats and methods can be used for requests and responses.

Requests/Responses

Format

XML

Methods

POST

IPN Encodement

SHA256

Transaction Types

This table lists all transaction types available for SafetyPay.

Some of the transaction types cannot be used in the requests. Refer to the columns below for an overview.

For transaction type details which are not given here, look at Appendix B: Transaction Types.

Transaction Type Description Request Response/IPN  WEP Link to the sample

debit

Creates a request to charge the specified amount from the Consumer’s bank account.

YES

 YES

YES

debit samples

refund-debit

Initiates the refund process, referring to an existing debit transaction.

YES

YES

YES

refund samples

refund-request

Returns the original transaction amount to the Consumer’s account. It follows refund-debit as the final step of the refund flow.

NO

NO

YES

 

get-url

Retrieves the URL of the SafetyPay landing page for the Consumer to be redirected to.

NO

YES

YES

 

Request

YES indicates that the transaction type is sent in the request.

Response/IPN

YES indicates that the transaction type appears in either response or notification.

WEP

YES indicates that the transaction type is visible in Wirecard Enterprise Portal.

Test Credentials

URLs (Endpoints)

REST API

For transaction type debit.

https://api-test.wirecard.com/engine/rest/paymentmethods/

For transaction types refund-request and refund-debit.

https://api-test.wirecard.com/engine/rest/payments/

Payment Page

https://api-test.wirecard.com/engine/hpp/

Merchant Account ID (MAID)

ca20c8a7-fa58-4ef5-a785-1c90ca9662c3

Username

16390-testing

Password

3!3013=D3fD8X7

Secret Key

13f27673-6bbe-4227-838a-e31952b5d794

Workflow

debit transaction
Payment Process Using REST API
SafetyPay Workflow REST API
  1. Consumer initiates a transaction.

  2. Merchant sends a request with the consumer’s data to the endpoint of WPG.

  3. WPG sends a response to the merchant with generated URL to SafetyPay landing page.

  4. The merchant redirects the consumer to the SafetyPay landing page (The URL for redirection is in the response message, field payment-methods/payment-method/@url).

  5. The consumer authorizes the transaction.

  6. SafetyPay sends the authorization status to WPG.

  7. WPG sends a Success/Failed notification to the merchant.

Payment Process Using HPP
SafetyPay Workflow HPP
  1. Consumer initiates a transaction.

  2. Merchant sends a request with the consumer’s data to the endpoint of WPG.

  3. WPG redirects the consumer to the SafetyPay landing page (The URL for redirection is in the response message, field payment-methods/payment-method/@url).

  4. The consumer authorizes the transaction.

  5. SafetyPay sends the authorization status to WPG. 

  6. WPG sends a Success/Failed notification to the merchant.

refund Transaction
refund is only possible via REST API.
SafetyPay Workflow Refund
  1. Consumer initiates a refund process.

  2. Merchant sends a request to SafetyPay. It includes the transaction ID of the debit transaction that it’s linked to.

  3. SafetyPay processes the refund request.

  4. SafetyPay sends the refund result to WPG.

  5. WPG sends a Success/Failed notification to the merchant.

Fields

The fields used for SafetyPay requests, responses and notifications are the same as the REST API Fields. Please refer to the REST API Fields or the request example for the fields required in a debit transaction.

Only the fields listed below have different properties.

The following elements are mandatory M, optional O or conditional C for a request/response/notification. If the respective cell is empty, the field is disregarded or not sent.

debit transaction
Field Request   Response Notification Data Type Size Value Range Description Usage of Optional Fields

product-id

O

O

O

Alphanumeric

36

"online" "offline"

Identifier for selection, if consumer wants to proceed payment with Cash (offline) or Internet Banking (online).

If the field is not present in the request, consumer will select ONLINE or OFFLINE option after redirection on SafetyPay page.

Samples

Go to Notification Examples if you want to see corresponding notification samples.

debit
debit Request (Successful)
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
 <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
 <request-id>a10fc76c-1174-48a1-9a1c-dd82fc600deb</request-id>
 <transaction-type>debit</transaction-type>
 <requested-amount currency="USD">1.23</requested-amount>
 <payment-methods>
  <payment-method name="safetypay" />
 </payment-methods>
 <notifications>
  <notification url="add.your.url" />
 </notifications>
 <locale>en</locale>
 <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
 <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
 <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
</payment>
debit Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
 <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
 <transaction-id>1cefb8b1-0e8f-46d8-93ff-2cc051e425c7</transaction-id>
 <request-id>a10fc76c-1174-48a1-9a1c-dd82fc600deb</request-id>
 <transaction-type>debit</transaction-type>
 <transaction-state>success</transaction-state>
 <completion-time-stamp>2018-08-02T10:01:24.000Z</completion-time-stamp>
 <statuses>
  <status code="201.0000" description="The resource was successfully created." severity="information" />
 </statuses>
 <requested-amount currency="USD">1.23</requested-amount>
 <notifications>
  <notification url="add.your.url"/>
 </notifications>
 <payment-methods>
  <payment-method url="https://sandbox-gateway.safetypay.com/Express4/Checkout/index?TokenID=15db9aa1-9db3-4049-a938-3c20110fdb73" name="safetypay" />
 </payment-methods>
 <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
 <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
 <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
 <locale>en</locale>
</payment>
debit Request (Failure)
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <request-id>59c4d5a5-2b9c-4575-87be-2414f4d03b34</request-id>
  <transaction-type>debit</transaction-type>
  <requested-amount currency="USD">1.23</requested-amount>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <locale />
  <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
  <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
  <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
</payment>
debit Response (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <transaction-id>262fa2bd-2927-4c4f-b98a-0297961815f7</transaction-id>
  <request-id>59c4d5a5-2b9c-4575-87be-2414f4d03b34</request-id>
  <transaction-type>debit</transaction-type>
  <transaction-state>failed</transaction-state>
  <completion-time-stamp>2018-08-02T10:04:17.000Z</completion-time-stamp>
  <statuses>
    <status code="400.1169" description="The language or language_COUNTRY is invalid." severity="error" />
  </statuses>
  <requested-amount currency="USD">1.23</requested-amount>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
  <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
  <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
  <locale></locale>
</payment>
refund
refund-debit Request (Successful)
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <request-id>058319b4-134e-4c4d-ad73-65a32d4bd9f5</request-id>
  <transaction-type>refund-debit</transaction-type>
  <requested-amount currency="USD">1.23</requested-amount>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <parent-transaction-id>03240826-20ee-446d-a1cb-342917f8d94f</parent-transaction-id>
</payment>
refund-debit Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <transaction-id>ba4d5af7-4d77-44e4-99fa-a54ac9e21f8b</transaction-id>
  <request-id>058319b4-134e-4c4d-ad73-65a32d4bd9f5</request-id>
  <transaction-type>refund-debit</transaction-type>
  <transaction-state>success</transaction-state>
  <completion-time-stamp>2018-08-02T10:05:21.000Z</completion-time-stamp>
  <statuses>
    <status code="201.0000" description="The resource was successfully created." severity="information" />
  </statuses>
  <requested-amount currency="USD">1.23</requested-amount>
  <parent-transaction-id>03240826-20ee-446d-a1cb-342917f8d94f</parent-transaction-id>
  <notifications>
    <notification url="add.your.url" />
  </notifications>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <authorization-code>0B110B6181603EB333574C2A81D32836C80EE9D8423F788E1C065C6F5C1F98D7</authorization-code>
  <api-id>---</api-id>
  <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
  <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
  <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
  <locale>en</locale>
</payment>
refund-debit Request (Failure)
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <request-id>a60c531a-2f48-47be-9edc-d531567fe6d6</request-id>
  <transaction-type>refund-debit</transaction-type>
  <requested-amount currency="USD">5.55</requested-amount>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <parent-transaction-id>03240826-20ee-446d-a1cb-342917f8d94f</parent-transaction-id>
</payment>
refund-debit Response (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
  <merchant-account-id>ca20c8a7-fa58-4ef5-a785-1c90ca9662c3</merchant-account-id>
  <transaction-id>74bfceab-d18b-40a9-b115-cb60f052fbc6</transaction-id>
  <request-id>a60c531a-2f48-47be-9edc-d531567fe6d6</request-id>
  <transaction-type>refund-debit</transaction-type>
  <transaction-state>failed</transaction-state>
  <completion-time-stamp>2018-08-02T10:10:52.000Z</completion-time-stamp>
  <statuses>
    <status code="500.1154" description="The amount requested is not valid." severity="error" />
  </statuses>
  <requested-amount currency="USD">5.55</requested-amount>
  <parent-transaction-id>03240826-20ee-446d-a1cb-342917f8d94f</parent-transaction-id>
  <payment-methods>
    <payment-method name="safetypay" />
  </payment-methods>
  <api-id>---</api-id>
  <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
  <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
  <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
  <locale>en</locale>
</payment>
Custom URL: