1. SDD API
This is a description of our SOAP-WS-API for merchants, our test WSDL is available at:
https://evdstaging.kontantkort.nu/extclientproxy/client?wsdl
http://extdev.kontantkort.nu/extclientproxy/client?wsdl
2. Function requests used for POS client integration
Below you will find methods used in Stores for EVD integration. This is part of EVD API. Methods not listed below shall not be implemented.
3. Mandatory Methods
These methods have to be implemented in order to pass our certification get production access.
getProductsList
Returns list of available product.
getProductList request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
getProductList response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of the voucher in ERS system of the request. To be used with buyReservedVoucher and cancelVoucherReservation requests |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
name | String | GT Mobile | Name of a splier |
currency | String | SEK | Currency code |
value | decimal | 70 | Product price |
ean | String | 7330596005932 | Product ean |
sku | String | 3453433 | Product sku |
name | String | Some name | Product name |
getProductsListWithVAT
Returns list of available product with their VAT %.
getProductListWithVAT request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="http://externalws.client.ers.seamless.com/">
<soapenv:Header />
<soapenv:Body>
<ext:getProductListWithVAT>
<context>
<channel>web</channel>
<clientId>test_id</clientId>
<password>abc123</password>
<clientRequestTimeout>0</clientRequestTimeout>
<clientUserId>9900</clientUserId>
</context>
</ext:getProductListWithVAT>
</soapenv:Body>
</soapenv:Envelope>
getProductListWithVAT response
Field | Type | Sample Value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of the voucher in ERS system of the request. To be used with buyReservedVoucher and cancelVoucherReservation requests |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
name | String | GT Mobile | Name of a splier or Vendor |
currency | String | SEK | Currency code |
value | decimal | 70 | Product price |
ean | String | 7330596005932 | Product ean |
sku | String | 3453433 | Product sku |
name | String | Some name | Product name |
key | String | VAT | Custom Parameter to print VAT |
Value | String | Some % value | Product VAT % |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getProductListWithVATResponse xmlns:ns2="http://externalws.client.ers.seamless.com/">
<return>
<errorDescription>Success</errorDescription>
<ersReference>2019052808353639501000023</ersReference>
<resultCode>0</resultCode>
<suppliers>
<name>Test Supplier 1</name>
<productWithCustomParam>
<customParameters>
<entry>
<key>VAT</key>
<value>0%</value>
</entry>
</customParameters>
<customerPrice>
<currency>SEK</currency>
<value>10</value>
</customerPrice>
<ean>7330596005932</ean>
<name>SeamlessTest</name>
<sku>10181</sku>
</productWithCustomParam>
</suppliers>
<suppliers>
<name>Test Supplier 2</name>
<productWithCustomParam>
<customParameters>
<entry>
<key>VAT</key>
<value>0%</value>
</entry>
</customParameters>
<customerPrice>
<currency>SEK</currency>
<value>50</value>
</customerPrice>
<ean>5391517032017</ean>
<name>SeamlessTestProduct</name>
<sku>10152</sku>
</productWithCustomParam>
</suppliers>
</return>
</ns2:getProductListWithVATResponse>
</soap:Body>
</soap:Envelope>
reserveVoucher
Used for purchasing a voucher in a two-phase commit manner. ERS will only keep the reservation for a limited time (configurable on the ERS, typically a few minutes) after which a buyReservedVoucher might fail.
reserveVoucher request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
clientComment | no | String | Some comment | Can be used to add additional information from the client system |
clientReference | no | String | 823429834723948 | Reference of the transaction in clients system |
clientTag | no | String | POS007 | Tracking tag from the clients system (i.e: cash register ID) |
productId | yes | String | ean:7332023036197 | The ean or sku number of the voucher that is being reserved. Needs to be prefixed by “sku:” or “ean:”. List of available skus and eans can be obtained by getProductList call |
reserveVoucher response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of the voucher in ERS system of the request. To be used with buyReservedVoucher and cancelVoucherReservation requests |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
buyReservedVoucher
The second step in the two-phase commit procedure for buying a voucher. Can only be called after getting a successful response from a reserveVoucher call.
buyReservedVoucher request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
ersReference | yes | String | 2014071716555003001000100 | ersReference of the reserved voucher returned by reserveVoucher response |
receiptFormatId | yes | String | TEXT | Needs to be set to one of the following: VML, TEXT, HTML |
buyReserverdVoucher response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of the voucher in ERS system of the request. To be used with buyReservedVoucher and cancelVoucherReservation requests |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
productEAN | String | 7332023036197 | EAN number of the product (voucher) that was bought |
productName | String | Årskort 999KR | Name of the product |
productSKU | String | 19016 | SKU number of the product |
receipt | String | Sample receipt can be found here | Content to be parsed on POS side, printed and provided to the customer |
code | String | 380000080 | Code of the generated voucher |
expiryDate | date | 2014-01-01T00:00:00+01:00 | Voucher’s date of expiration |
serial | String | 380080 | Serial number of the voucher |
cancelVoucherReservation
Used to cancel a reservation of a voucher after a successful response from a reserveVoucher call and should be called if the purchase is to be aborted.
cancelVoucherReservation request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
ersReference | yes | String | 2014071716555003001000100 | ersReference of the reserved voucher returned by reserveVoucher response |
receiptFormatId | yes | String | TEXT | Needs to be set to one of the following: VML, TEXT, HTML |
cancelVoucherReservation response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of cancelation in the ERS system |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
cancelTransaction
Allows to cancel transaction that has been finished. Using ersReference from buyReservedVoucher response (not voucher).
cancelTransaction request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 100000 | Timeout requested from the client´s side. We highly recommend use 100000 for online cancellation since it take little more time to get the response from Operators. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
clientComment | no | String | Some comment | Can be used to add additional information from the client system |
clientReference | no | String | 823429834723948 | Reference of the transaction in clients system |
clientTag | no | String | POS007 | Tracking tag from the clients system (i.e: cash register ID) |
ersReference | yes | String | 2014110515155960201000883 | ersReference from buyReservedVoucher response of voucher to be refunded |
verificationCode | no | String | 803987373939 | The verification code for the cancellation, if required |
reasonCode | no | decimal | 03 | The code categorizing the reason for the cancellation. 01 – Cashier mistake, 02 – Technical error, 03 – Customer mistake, 11 – Code unusable |
cancelTransaction response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of cancelation in the ERS system |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
4. Optional Methods
These methods have to be implemented in order to pass our certification get production access.
executeReport
Allows to generate reports.
executeReport request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
clientComment | no | String | Some comment | Can be used to add additional information from the client system |
clientReference | no | String | 823429834723948 | Reference of the transaction in clients system |
reportId | yes | String | repo:///terminal/ REP_TERM_CASHIER_SALES_PERIOD.xml | Type of report that you’d like to get |
language | yes | String | en | Language of report. Currently available are “en” for English and “sv” for Swedish |
key | yes | Sring | resellerId | Name of the parameter. Different types of reports require diffrent parametrs. Check below example request to see differences |
value | yes | String | someresellerid | Value of the parameter |
executeReport response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
content | String | Cgo8YnI+Cjxp… | Contains report in base64 form |
contentString | String | See examples below | content of the report |
executeReport CASHIER_SALES_PERIOD example
executeReport RESELLER_INFO example
executeReport RESELLER_SALES_PERIOD example
getProductListCount
Returns number of active product available in EVD system.
getProductListCount request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
context/channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
getProductListCount response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
ersReference | String | 2016082314483437301000028 | Trackable number for the request in EVD System |
totalCount | decimal | 28 | Number of total active products in EVD System |
getProductListCount example
getProductListBySequence
Returns list of available product as per valid start sequence and end sequence.
getProductListBySequence request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
context/channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
startSeq | yes | decimal | 0 | Zero or Valid positive number less than getProductListCount return value |
endSeq | yes | decimal | 10 | Zero or Valid positive number less than getProductListCount return value |
getProductListBySequence response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
ersReference | String | 2016082314483437301000028 | Trackable number for the request in EVD System |
spliers/name | String | BITE | Splier Name |
products/customerPrice/currency | String | EUR | Currency Code |
products/customerPrice/value | decimal | 1.42 | Product Price |
products/ean | String | 4751022250015 | Product EAN |
products/name | String | Bites papildināšanas kods 1.42 EUR | Product Name |
products/sku | String | 450104 | Product SKU |
getProductListBySequence example
getReceipt
Return a receipt for reseller or subscriber based on “receiptType” param.
getReceipt request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
context/channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 0 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | p@55w0Rd | password provided by Seamless |
ersReference | yes | String | 2016082312381671501000013 | Trackable number for the request in EVD System. This number actually is a transaction number, buyVoucher was called |
receiptType | yes | String | RESELLER | The value of this should be ‘RESELLER’ or ‘SUBSCRIBER’. In case of other input no receipt will return |
getReceipt response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
ersReference | String | 2016082314483437301000028 | Trackable number for the request in EVD System |
receipt | String | BITE | The actual receipt text for reseller or subscriber |
getReceipt example
sendEmail
This API is used so that a Reseller can send a mail to SDD support mail box, as part of the ‘Contact Us’ feature. A successful request gives success response along with resultcode
sendEmail request
Description:
Field
|
Required
|
Type
|
Description
|
---|---|---|---|
channel | Yes | String | This is the channel through which client is performing the transaction. |
clientId | Yes | String | This is the unique id of the client that is performing the transaction. |
clientRequestTimeout | Yes | integer | Timeout requested from the client´s side. It should be 0 for an immediate response |
senderEmail | Yes | String | This is the Email Id of the sender. |
senderPhoneNo | Yes | String | This is the phone number of the sender. |
mailSubject | Yes | String | This is the mail subject. |
mailBody | Yes | String | This is the mail body. For multiline mail body add line break as \n for each new line.
|
sendEmail example
getResellerRoles
This API returns the available reseller’s roles from SDD system.
getResellerRoles request
Description:
Field
|
Required
|
Type
|
Sample Value
|
Description
|
---|---|---|---|---|
channel | Yes | String | WS | Needs to be set to WS |
clientId | Yes | String | dist1 | Seamless will provide this ID |
clientRequestTimeout | Yes | integer | 0 | Timeout requested from the client´s side. It should be 0 for an immediate response |
clientUserId | Yes | String | 9900 | Seamless will provide this userId |
password | Yes | String |
20192019 |
Seamless will provide this Password |
getResellerRoles example
getClientStatus
This API returns whether a user is needed to change the password before doing any transaction or not. Based on this parameter client can redirect the user to the password change page if needed.
getClientStatus request
Description:
Field
|
Required
|
Type
|
Description
|
---|---|---|---|
channel | Yes | String | This is the channel through which client is performing the transaction. |
clientId | Yes | String | This is the unique id of the client that is performing the transaction. |
clientRequestTimeout | Yes | Integer | Timeout requested from the client´s side. It should be 0 for an immediate response |
clientUserId | Yes | String | This is a unique user id of the client that is performing the transaction. |
password | Yes | String | The password associated with the userId field in the initiatorPrincipalId field. |
receiptFormatId | Optional | String | Format in which receipt will display. |
getClientStatus example
searchAgentUsers
This API is used to search a user data. Returns the SUCCESS message along with the user data of the Reseller. At present Reseller_admin can search a user under his reseller account.
searchAgentUsers request
Description:
Field
|
Required
|
Type
|
Sample Value
|
Description
|
---|---|---|---|---|
Field
|
Required
|
Type
|
Sample Value
|
Description
|
channel | Yes | String | WS | Needs to be set to WS |
clientId | Yes | String | dist1 | Seamless will provide this ID |
clientRequestTimeout | Yes | Integer | 0 | Timeout requested from the client´s side. It should be 0 for an immediate response |
clientUserId | Yes | String | 9900 | Seamless will provide this userId, this userid value depends on the permitted role specified in the configuration of extclientproxy in searchUserPermittedResellerRoles. |
password | Yes | String |
20192019 |
Seamless will provide this Password |
firstName |
No | String | Taylor |
First Name of the user |
lastName | No | String | Swift | Last Name of the user |
userId | No | String | webadmin8334 | Unique in the system |
yubiKey | No | String | fdgsre31wauu | String value of twelve characters |
roleId | No | String | Reseller_admin | Defines the type of role of the user |
searchAgentUsers example
fetchImageAd
This API is used to fetch an advertisement image. Based on the input parameters(category, channel and operatorId) it returns SUCCESS with image data in bytes.
Note: To integrate this API client should connect to http://localhost:8913/extclientproxy/service?wsdl.
fetchImageAd request
Description:
Field
|
Required
|
Type
|
Description
|
---|---|---|---|
context channel | No | String | Not required |
clientComment | No | String | Not required |
clientId | No | String | Not required |
clientReference | No | String | Not required |
clientRequestTimeout | Yes | Integer | Timeout requested from the client´s side. It should be 0 for an immediate response |
id | No | String | Not required |
type | No | String | Not required |
password | No | String | Not required |
channel | Yes | String | Possible values are: WEB, MOB |
category | Yes | String | Possible values are: LOGIN, INTERVALPOPUP, OPERATOR |
operatorId | Optional | String | Possible values (TELE2, TELENOR, etc) as per rule configured in AdServer |
fetchImageAd example
addUpdateAgentUser
This API is used to add or update a user data based on input parameter isUpdate. When isUpdate=true then system will try to update an exiting user’s data and isUpdate=false system will try to create a new user. It returns SUCCESS after creation or updation of a user’s data.
Note:
1. While adding user we will keep isUpdate field false.
<isUpdate>false</isUpdate>
2. While updating user we will keep isUpdate field true and yubiKey field commented out or removed.
<isUpdate>true</isUpdate>
<!– <yubiKey></yubiKey>–>
addUpdateAgentUser request
Description:
Field
|
Required
|
Type
|
Sample Value
|
Description
|
---|---|---|---|---|
Field
|
Required
|
Type
|
Sample Value
|
Description
|
channel | Yes | String | WS | Needs to be set to WS |
clientId | Yes | String | dist1 | Seamless will provide this ID |
clientRequestTimeout | Yes | integer | 0 | Timeout requested from the client´s side. It should be 0 for an immediate response |
clientUserId | Yes | String | 9900 | Seamless will provide this userId |
password | Yes | String |
20192019 |
Seamless will provide this Password |
country |
No | String |
sweden |
Country of the user |
|
No | String | taylor@gmail.com | email Id of the user |
firstName |
No | String | Taylor |
FirstName of the user |
lastName | No | String | Swift | Lastname of the user |
password | Yes | String | 20092009 | Password of the user |
phoneNo | No | String | 6673348376 | Pnone number of the user |
status | No | String | Active | Status of the user in system |
userId | Yes | String | webadmin8334 | Unique in the system |
yubiKey | No | String | fdgsre31wauu | String value of twelve characters |
isUpdate | Yes | String | true/false | false value for adding user and true for updating the user. |
roleId | Yes | String | Reseller | Defines the type of role of the user |
addUpdateAgentUser example
changeCLientPassword
Used to change reseller’s password.
changeClientPassword request
Field | Required | Type | Sample Value | Description |
---|---|---|---|---|
channel | yes | String | WS | Needs to be set to WS |
clientId | yes | String | reseller123 | clientId provided by Seamless |
clientRequestTimeout | yes | decimal | 50000 | Timeout requested from the client´s side. We highly recommend to leave it to zero for an immediate response. Use different than 0 only if it´s a special situation. |
clientUserId | yes | decimal | 9900 | Use 9900 unless provided with different clientUserId |
password | yes | String | seamless123 | password provided by Seamless |
newPassword | yes | String | 112233 | Choose any desired password. |
changeClientPasswordResponse response
Field | Type | Sample value | Description |
---|---|---|---|
errorDescription | String | SUCCESS | Description of the status of the response |
ersReference | String | 2014071814275177901000128 | Trackable number of the voucher in ERS system of the request. To be used with buyReservedVoucher and cancelVoucherReservation requests |
resultCode | decimal | 0 | Response result code. See posible result codes at the bottom of this page |
5. Response Codes
Code | Description | Detailed description | Can occur |
---|---|---|---|
78 | The transaction has already been reversed. Transaction ID: 2015012716100420301000413 | Voucher has been bought and refunded | buyReservedVoucher |
78 | The specified transaction is in illegal state for this operation. | Voucher already bought | buyReservedVoucher, cancelVoucherReservation |
79 | You are not found in the system. | Provided incorrect credentials (clientId or clientUserId) | Any method |
79 | The given password is not correct | Provided password is incorrect | Any method |
90 | You provided an unknown product SKU/EAN. Please try again with an existing product SKU/EAN. | reserveVoucher | |
90 | SYSTEM_ERROR: Missing parameter resellerId ! | reportId key/value is missing in executeReport request where it is required | executeReport |
90 | SYSTEM_ERROR: Report not found! | wrong reportId | executeReport |
90 | SYSTEM_ERROR: Unable to find layout for language: | wrong language value | executeReport |
91 | The specified transaction could not be found. | Wrong ersReference | buyReservedVoucher, cancelVoucherReservation, cancelTransaction |