REST API
The Payment Processing API conforms to the design principles of Representational State Transfer (REST). Wirecard Payment Gateway provides access to resources (data entities) via URL paths. To use a REST API, your application will make an HTTP request and parse the response. By default, the response format is XML. If you wish, you can request JSON instead of XML. Your methods will be the standard HTTP methods such as GET, PUT, POST and DELETE.
The API currently supports the following data formats:
-
for requests XML, JSON and NVP (for credit card only).
-
for responses XML, HTML or JSON. Some methods accept a subset of these formats, only.
Change the format extension to a request or set the HTTP accept
header to get results in the format of your choice. Methods to retrieve
data from the Payment Processing API require a GET
request. Methods
that submit data require a POST
.
API methods that require a particular HTTP method will return an error if the request is not made using the correct method. The following HTTP Return Codes are helpful in analyzing the error. |
Some API methods use optional or requisite parameters. Two things to keep in mind when making requests with parameters:
-
Parameter values should be UTF-8
-
All URLs for REST should be URL encoded.
Because the Payment Processing API is based on open standards, any web development language may be used to access the API.
Security
Every request sent to Wirecard Payment Gateway is authorized and authenticated. Users are authenticated using basic authentication over an SSL enabled channel. The Merchant Account configuration is used to authorize the request.
Going on Production
Test Environment | Production Environment | |
---|---|---|
Credit Card |
|
|
Alternative Payment Methods |
|
|
Mobile Payments |
|
|
Please contact our Merchant Support for production environment credentials. |
Create a Payment
Requests to the endpoints can be sent as XML, JSON or NVP (for credit card only).
-
Content-Type header MUST be specified within the request as "application/xml" or "application/json" to specify request body content.
-
Accept header specifies response body format - "application/xml" or "application/json". When Accept header is not specified in request then application/xml is used by default and XML is returned back in response regardless of request format.
Structure and fields naming convention is based on payment.xsd so there are the same field names used within JSON request/response as well as within XML request/response.
Payment requests taking longer than 30 seconds will be timed-out and returned with an error. |
Simulations
Simulations can only be processed with credit cards! |
Transaction
A Merchant Account can send a special message, requesting that the result echoes back a specific set of Transaction Statuses. The following characteristics apply:
-
Any merchant account can be used for test simulation, in production or any other environment.
-
Existing fields can be populated with information notifying the engine that this is a test transaction. This allows standard payment attributes to be used in a Merchant’s existing Order Management, Internet Booking Engine, Virtual Terminal, or any other client applications.
-
Test Transactions are never settled.
-
It is possible to simulate a successful transaction by sending a transaction status of "20x.xxxx". Any other requested Transaction Status Code will result in a transaction state of 'failed'.
-
It is possible to simulate a timeout scenario by delaying the response from the engine by client application’s timeout setting.
At times, it may be required to simulate one or more valid Transaction Statuses. The client application indicates that it wishes to have certain Transaction Statuses echoed back, and the Payment Service does so in the response.
Following is the behavior:
-
Any invalid/empty transaction statuses are not simulated. See the table of valid transaction statuses.
-
The simulation is valid for Credit Card only.
-
The payment being requested does not go to any acquirer/provider. The transaction status simulation is typically used to simulate the status from the acquirer/provider.
-
The engine performs basic data validation in order to store the data in the database. In case of any failure, the requested transaction statuses are NOT echoed back. The validation errors are returned instead.
-
The transaction can be searched in the reporting site.
-
All other aspects of the payment processing are respected, including Instant Payment Notification, Reconciliation Services, etc.
-
All test transactions will have the last transaction status of "100.5555 warning: Your transaction is in test mode."
-
Merchant Account must have a test token assigned to enable transaction status simulation.
If "100.5555" is not returned, the Transaction was NOT in Transaction Processing Test Mode, and was processed live. Watch for this to ensure the intended effect. |
See the conditions to simulate a set of transaction status.
Conditions
-
The tag <accountholder/address/street1> must contain the valid transaction status to be simulated.
-
The tag <account-holder/last-name> must contain an issued test token to enable the simulation of transaction status. If multiple transaction status are required, you can add a comma-delimited set of transaction status.
Samples for a Transaction Simulation
See samples for transaction simulation.
Timeout
At times, it may be required to simulate the system not responding to the client application for an extended period of time. The client application must specify that a timeout value of n milliseconds by using the <last-name> field in conjunction with the Test Token. The value of n should be more than the client application’s timeout setting.
Conditions
-
The tag <accountholder/address/street1> must contain a valid transaction status and a defined timeout period in milliseconds. If multiple transaction status are required, you can add a comma-delimited set of transaction status.
-
The tag <account-holder/last-name> must contain an issued test token to enable a timeout simulation.
Samples for a Timeout Simulation
See samples for timeout simulation.
Reference Transaction
At times, it may be required to simulate a transaction followed by another one referencing the first, such as a credit card authorization followed by a capture. In the reference transactions <street1> field is not used. As such, the client application indicates the expected status of the referenced transaction in the initial transaction. E.g. excepted status code of a capture transaction must be indicated in the initial authorization. This is indicated in the <street1> field with a grammar including a short form of the transaction type. The ordering of the status codes in the tag <accountholder/address/street1> is significant. Payment Service analyses the transaction type in a payment workflow or group and applies the status code as mentioned in the original transaction and returns it to the client application.
Transaction Type | Short Form |
---|---|
authorization-only |
AO |
authorization |
A |
capture-authorization |
CA |
purchase |
P |
void-capture |
VC |
void-purchase |
VP |
check-risk |
C |
Conditions
-
The status codes must be set during the first transaction request.
-
The tag <accountholder/address/street1> must contain two valid transaction status for both transactions.
Example
The client application would like to simulate a successful zero dollar authorization, followed by credit card declined during the charge:
-
Zero Dollar Authorization: 201.0000
-
Purchase: 500.1053
This expected status codes were set during the ZDA request as follows:
<street1>AO-201.0000,P-500.1053</street1>
Samples for a Reference Transaction Simulation
See samples for reference transaction simulation.
Samples
For All Payment Methods
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>9105bb4f-ae68-4768-9c3b-3eda968f57ea</merchant-account-id>
<request-id>fb78df4a-9784-4fea-bd3c-1038e031ad56</request-id>
<transaction-type>purchase</transaction-type>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>Doe</last-name>
<email>john.doe@wirecard.com</email>
<phone>+1(1)4161234567</phone>
<address>
<street1>123 anystreet</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card>
<account-number>4444333322221111</account-number>
<expiration-month>12</expiration-month>
<expiration-year>2020</expiration-year>
<card-type>visa</card-type>
<card-security-code>123</card-security-code>
</card>
<ip-address>127.0.0.1</ip-address>
<payment-methods>
<payment-method name="creditcard"/>
</payment-methods>
</payment>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" self="https://api-test.wirecard.com:443/engine/merchants/9105bb4f-ae68-4768-9c3b-3eda968f57ea/payments/6c770e46-36a0-11e5-b074-005056a96a54">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/merchants/9105bb4f-ae68-4768-9c3b-3eda968f57ea">9105bb4f-ae68-4768-9c3b-3eda968f57ea</merchant-account-id>
<transaction-id>6c770e46-36a0-11e5-b074-005056a96a54</transaction-id>
<request-id>fb78df4a-9784-4fea-bd3c-1038e031ad56</request-id>
<transaction-type>purchase</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2015-07-30T09:50:35.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="3d-acquirer:The resource was successfully created." severity="information"/>
</statuses>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>Doe</last-name>
<email>john.doe@wirecard.com</email>
<phone>+1(1)4161234567</phone>
<address>
<street1>123 anystreet</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card-token>
<token-id>4672942444021111</token-id>
<masked-account-number>444433******1111</masked-account-number>
</card-token>
<ip-address>127.0.0.1</ip-address>
<descriptor/>
<payment-methods>
<payment-method name="creditcard"/>
</payment-methods>
<authorization-code>106079</authorization-code>
<api-id>elastic-api</api-id>
</payment>
JSON
{
"payment" : {
"merchant-account-id" : {
"value" : "9105bb4f-ae68-4768-9c3b-3eda968f57ea"
},
"request-id" : "fb78df4a-9784-4fea-bd3c-1038e031ad56",
"transaction-type" : "purchase",
"requested-amount" : {
"value" : 1.01,
"currency" : "USD"
},
"account-holder" : {
"first-name" : "John",
"last-name" : "Doe",
"email" : "john.doe@wirecard.com",
"phone" : "+1(1)4161234567",
"address" : {
"street1" : "123 anystreet",
"city" : "Brantford",
"state" : "ON",
"country" : "CA"
}
},
"card" : {
"account-number" : "4444333322221111",
"expiration-month" : 12,
"expiration-year" : 2020,
"card-security-code" : "123",
"card-type" : "visa"
},
"ip-address" : "127.0.0.1",
"payment-methods" : {
"payment-method" : [ {
"name" : "creditcard"
} ]
}
}
}
{
"payment" : {
"merchant-account-id" : {
"value" : "9105bb4f-ae68-4768-9c3b-3eda968f57ea",
"ref" : "https://api-test.wirecard.com:443/engine/merchants/9105bb4f-ae68-4768-9c3b-3eda968f57ea"
},
"transaction-id" : "6c770e46-36a0-11e5-b074-005056a96a54",
"request-id" : "fb78df4a-9784-4fea-bd3c-1038e031ad56",
"transaction-type" : "purchase",
"transaction-state" : "success",
"completion-time-stamp" : 1438249835000,
"statuses" : {
"status" : [ {
"value" : "",
"code" : "201.0000",
"description" : "3d-acquirer:The resource was successfully created.",
"severity" : "information"
} ]
},
"requested-amount" : {
"value" : 1.01,
"currency" : "USD"
},
"account-holder" : {
"first-name" : "John",
"last-name" : "Doe",
"email" : "john.doe@wirecard.com",
"phone" : "+1(1)4161234567",
"address" : {
"street1" : "123 anystreet",
"city" : "Brantford",
"state" : "ON",
"country" : "CA"
}
},
"card-token" : {
"token-id" : "4672942444021111",
"masked-account-number" : "444433******1111"
},
"ip-address" : "127.0.0.1",
"descriptor" : "",
"payment-methods" : {
"payment-method" : [ {
"name" : "creditcard"
} ]
},
"authorization-code" : "106079",
"api-id" : "elastic-api",
"self" : "https://api-test.wirecard.com:443/engine/merchants/9105bb4f-ae68-4768-9c3b-3eda968f57ea/payments/6c770e46-36a0-11e5-b074-005056a96a54"
}
}
Credit Card Only
Transaction Simulation
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>07edc10b-d3f9-4d12-901f-0db7f4c7e75c</merchant-account-id>
<request-id>9ab09625-12cb-4deb-b856-2feea2645dcb</request-id>
<transaction-type>purchase</transaction-type>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>RYKGJ123VDEYORMZS456</last-name>
<email>john.doe@wirecard.com</email>
<phone>+1(416)1112222</phone>
<address>
<street1>500.1053</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card>
<account-number>4444333322221111</account-number>
<expiration-month>12</expiration-month>
<expiration-year>2020</expiration-year>
<card-type>visa</card-type>
<card-security-code>123</card-security-code>
</card>
<ip-address>127.0.0.1</ip-address>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
</payment>
<?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" self="https://api-test.wirecard.com:443/engine/rest/merchants/07edc10b-d3f9-4d12-901f-0db7f4c7e75c/payments/ce7e0750-78c7-438f-a949-841115b7815d">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/07edc10b-d3f9-4d12-901f-0db7f4c7e75c">07edc10b-d3f9-4d12-901f-0db7f4c7e75c</merchant-account-id>
<transaction-id>ce7e0750-78c7-438f-a949-841115b7815d</transaction-id>
<request-id>9ab09625-12cb-4deb-b856-2feea2645dcb</request-id>
<transaction-type>purchase</transaction-type>
<transaction-state>failed</transaction-state>
<completion-time-stamp>2018-07-10T10:23:48.000Z</completion-time-stamp>
<statuses>
<status code="500.1053" description="The acquirer returned Declined. Please check with Issuer, or use different card." severity="error" />
<status code="100.5555" description="test Transaction" severity="information" />
</statuses>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>RYKGJ123VDEYORMZS456</last-name>
<email>john.doe@wirecard.com</email>
<phone>+1(416)1112222</phone>
<address>
<street1>500.1053</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card-token>
<token-id>4193258203791111</token-id>
<masked-account-number>444433******1111</masked-account-number>
</card-token>
<ip-address>127.0.0.1</ip-address>
<order-detail>609669634369250</order-detail>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
</payment>
Timeout Simulation
The following request shows a transaction status simulation for a successful credit card transaction that responded after 60,000 milliseconds.
<?xml version="1.0" encoding="utf-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
<merchant-account-id>07edc10b-d3f9-4d12-901f-0db7f4c7e75c</merchant-account-id>
<request-id>6d324e6b-0d97-43bb-8688-52aee348655d</request-id>
<transaction-type>purchase</transaction-type>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>RYKGJ123VDEYORMZS456</last-name>
<email>john.doe@wirecard.com</email>
<phone />
<address>
<street1>201.0000,timeout-60000</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card>
<account-number>4444333322221111</account-number>
<expiration-month>12</expiration-month>
<expiration-year>2020</expiration-year>
<card-type>visa</card-type>
<card-security-code>123</card-security-code>
</card>
<ip-address>127.0.0.1</ip-address>
</payment>
<?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" self="https://api-test.wirecard.com:443/engine/rest/merchants/07edc10b-d3f9-4d12-901f-0db7f4c7e75c/payments/a480eb86-7e14-4654-99cd-6eeccba4c02c">
<merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/07edc10b-d3f9-4d12-901f-0db7f4c7e75c">07edc10b-d3f9-4d12-901f-0db7f4c7e75c</merchant-account-id>
<transaction-id>a480eb86-7e14-4654-99cd-6eeccba4c02c</transaction-id>
<request-id>6d324e6b-0d97-43bb-8688-52aee348655d</request-id>
<transaction-type>purchase</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2018-07-10T10:27:55.000Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="The resource was successfully created." severity="information" />
<status code="100.5555" description="test Transaction" severity="information" />
</statuses>
<requested-amount currency="USD">1.01</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>RYKGJ123VDEYORMZS456</last-name>
<email>john.doe@wirecard.com</email>
<phone/>
<address>
<street1>201.0000,timeout-60000</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card-token>
<token-id>4193258203791111</token-id>
<masked-account-number>444433******1111</masked-account-number>
</card-token>
<ip-address>127.0.0.1</ip-address>
<order-detail>613464402851117</order-detail>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
</payment>
Referenced Transaction Simulation
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>c3671cf9-c775-4e39-8d67-31ce24094682</merchant-account-id>
<request-id>89c20f59-23cd-4be6-a121-d6b2499aa604</request-id>
<transaction-type>authorization-only</transaction-type>
<requested-amount currency="USD">0</requested-amount>
<account-holder>
<first-name>John</first-name>
<last-name>qmNmRoMhhgxtlLhvETNhaKHimBbwiJRy</last-name>
<email>john.doe@wirecard.com</email>
<phone>+1(416)1112222</phone>
<address>
<street1>AO-201.0000,P-500.1053</street1>
<city>Brantford</city>
<state>ON</state>
<country>CA</country>
</address>
</account-holder>
<card>
<account-number>4444333322221111</account-number>
<expiration-month>12</expiration-month>
<expiration-year>2020</expiration-year>
<card-type>visa</card-type>
<card-security-code>123</card-security-code>
</card>
<ip-address>127.0.0.1</ip-address>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
</payment>
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" self="http://10.0.0.142:8080/engine/rest/merchants/c3671cf9-c775-4e39-8d67-31ce24094682/payments/30c061a8-862f-11e2-bd92-00163e6e1b2f">
<merchant-account-id ref="http://10.0.0.142:8080/engine/rest/config/merchants/c3671cf9-c775-4e39-8d67-31ce24094682">c3671cf9-c775-4e39-8d67-31ce24094682</merchant-account-id>
<transaction-id>30c061a8-862f-11e2-bd92-00163e6e1b2f</transaction-id>
<request-id>89c20f59-23cd-4be6-a121-d6b2499aa604</request-id>
<transaction-type>authorization</transaction-type>
<transaction-state>success</transaction-state>
<completion-time-stamp>2013-03-06T07:26:41.523Z</completion-time-stamp>
<statuses>
<status code="201.0000" description="The resource was successfully created." severity="success" />
<status code="100.5555" description="warning: Your transaction is in test mode" severity="information" />
</statuses>
<requested-amount currency="USD">1.01</requested-amount>
<card-token>
<token-id>4671168333191111</token-id>
<masked-account-number>444433******1111</masked-account-number>
</card-token>
<ip-address>127.0.0.1</ip-address>
<descriptor>demo
descriptor</descriptor>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
<authorization-code>153620</authorization-code>
</payment>
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>c3671cf9-c775-4e39-8d67-31ce24094682</merchant-account-id>
<request-id>89c20f59-23cd-4be6-a121-d6b2499aa604</request-id>
<transaction-type>purchase</transaction-type>
<parent-transaction-id>30c061a8-862f-11e2-bd92-00163e6e1b2f</parent-transaction-id>
<requested-amount currency="USD">1.01</requested-amount>
<ip-address>127.0.0.1</ip-address>
</payment>
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" self="http://10.0.0.142:8080/engine/rest/merchants/c3671cf9-c775-4e39-8d67-31ce24094682/payments/30c061a8-862f-11e2-bd92-00163e6e1b2f">
<merchant-account-id ref="http://10.0.0.142:8080/engine/rest/config/merchants/c3671cf9-c775-4e39-8d67-31ce24094682">c3671cf9-c775-4e39-8d67-31ce24094682</merchant-account-id>
<transaction-id>30c061a8-862f-11e2-bd92-00163e6e1b2f</transaction-id>
<request-id>89c20f59-23cd-4be6-a121-d6b2499aa604</request-id>
<transaction-type>purchase</transaction-type>
<transaction-state>failed</transaction-state>
<completion-time-stamp>2013-03-06T07:26:41.523Z</completion-time-stamp>
<statuses>
<status code="500.1053" description="The acquirer returned Declined. Please check with Issuer, or use different card." severity="error" />
<status code="100.5555" description="warning: Your transaction is in test mode " severity="information" />
</statuses>
<requested-amount currency="USD">1.01</requested-amount>
<card-token>
<token-id>4671168333191111</token-id>
<masked-account-number>444433******1111</masked-account-number>
</card-token>
<ip-address>127.0.0.1</ip-address>
<payment-methods>
<payment-method name="creditcard" />
</payment-methods>
</payment>