Verotel calls your server to add, rebill, cancel, modify, or delete a website user. Reply APPROVED when the change is done. FlexPay does not send these postbacks.
General Description
The VerotelRUM accepts the Postback (a HTTP call to the server of the merchant) from Verotel. The Postback provides the merchant with postback information regarding the transaction processed and the user to be added, modified or deleted. Verotel FlexPay does not return any VerotelRUM Postbacks.
Supported transaction types
| Postback call | Usage |
|---|---|
add |
Command when a new one-time or initial-recurring transaction occurs. The buyer must be given access to the website with given usercode and passcode. |
rebill |
Command that notifies the merchant about an automated rebill transaction took place for given buyer. |
cancel |
Command when a buyer cancelled next planned rebill transaction. The subscription will expire automatically on the next charge date. On this next charge date the merchant will receive a VerotelRUM command 'expire' (see below). |
delete |
Command when a merchant needs to remove access to a website for given buyer. |
modify |
Command when a merchant needs to change the passcode of given buyer. |
Add transaction
Add transaction (called by Verotel server) http://www.yourwebsite.com/cgi-bin/rumadd.pl?trn=add&trn_id=39748304&usercode=bob&passcode=testpwd&custom1=cust1&cus tom2=cust2&custom3=cust3 parameter_name type optional remarks trn const "add" mandatory trn_id number mandatory ID of transaction in Verotel system amount number mandatory amount of transaction usercode a-zA-Z0-9 mandatory 1 to 12 alphanumeric characters (editing allows 5-12 in Verotel Control Center) passcode a-zA-Z0-9 mandatory 1 to 14 alphanumeric characters (editing allows 5-12 in Verotel Control Center) custom1 string optional up to 100 characters custom2 string optional up to 100 characters custom3 string optional up to 100 characters
GET https://example.com/postback
?trn=value
&trn_id=1
&amount=9.99
&usercode=value
&passcode=value
&custom1=xxyyzz
&custom2=custom-2
&custom3=custom-3const url = new URL("https://example.com/postback");
url.searchParams.set("trn", "value");
url.searchParams.set("trn_id", "1");
url.searchParams.set("amount", "9.99");
url.searchParams.set("usercode", "value");
url.searchParams.set("passcode", "value");
url.searchParams.set("custom1", "xxyyzz");
url.searchParams.set("custom2", "custom-2");
url.searchParams.set("custom3", "custom-3");
const response = await fetch(url);from urllib.parse import urlencode
from urllib.request import urlopen
params = {
"trn": "value",
"trn_id": "1",
"amount": "9.99",
"usercode": "value",
"passcode": "value",
"custom1": "xxyyzz",
"custom2": "custom-2",
"custom3": "custom-3",
}
url = "https://example.com/postback?" + urlencode(params)
response = urlopen(url)// GET https://example.com/postback
$params = [
"trn" => "value",
"trn_id" => "1",
"amount" => "9.99",
"usercode" => "value",
"passcode" => "value",
"custom1" => "xxyyzz",
"custom2" => "custom-2",
"custom3" => "custom-3",
];// GET https://example.com/postback
Map<String, String> params = Map.ofEntries(
Map.entry("trn", "value"),
Map.entry("trn_id", "1"),
Map.entry("amount", "9.99"),
Map.entry("usercode", "value"),
Map.entry("passcode", "value"),
Map.entry("custom1", "xxyyzz"),
Map.entry("custom2", "custom-2"),
Map.entry("custom3", "custom-3")
);Your endpoint receives this call.
Query parameters
trnstringrequiredtrn_idnumberrequiredID of transaction in Verotel system
amountnumberrequiredamount of transaction
usercodestringrequired1 to 12 alphanumeric characters (editing allows 5-12 in Verotel Control Center)
passcodestringrequired1 to 14 alphanumeric characters (editing allows 5-12 in Verotel Control Center)
custom1stringup to 100 characters
custom2stringup to 100 characters
custom3stringup to 100 characters
Response
200Expected Response Codes Verotel expects that the VerotelRUM script installed on the merchants website responds with a predefined response code. It is important for the merchant to implement this correctly. Whenever Verotel receives a response other than "APPROVED" it will retry the postback call two more times in 20 minutes time period. If all attempts fail, the Postback call will be marked as failed and corresponding debit transaction automatically refunded. Excessive number of failures may cause the Verotel compliance department to suspend the Verotel account. Content of response Meaning APPROVED on success DECLINED when transaction cannot be successfully completed on merchants side ERROR on technical failure on merchants side
Rebill transaction
Rebill transaction (called by Verotel server) http:// www.yourwebsite.com/cgi-bin/rumadd.pl?trn=rebill&trn_id=39748304&usercode=bob&custom1=cust1&custom2=cust2&custo m3=cust3 parameter_name type Optional remarks trn const "rebill" Mandatory trn_id number Mandatory ID of transaction in Verotel system amount number Mandatory amount of transaction usercode a-zA-Z0-9 Mandatory 1 to 12 alphanumeric characters (editing allows 5-12 in Verotel Control Center) custom1 string optional up to 100 characters custom2 string optional up to 100 characters custom3 string optional up to 100 characters
GET https://example.com/postback
?trn=value
&trn_id=1
&amount=9.99
&usercode=value
&custom1=xxyyzz
&custom2=custom-2
&custom3=custom-3const url = new URL("https://example.com/postback");
url.searchParams.set("trn", "value");
url.searchParams.set("trn_id", "1");
url.searchParams.set("amount", "9.99");
url.searchParams.set("usercode", "value");
url.searchParams.set("custom1", "xxyyzz");
url.searchParams.set("custom2", "custom-2");
url.searchParams.set("custom3", "custom-3");
const response = await fetch(url);from urllib.parse import urlencode
from urllib.request import urlopen
params = {
"trn": "value",
"trn_id": "1",
"amount": "9.99",
"usercode": "value",
"custom1": "xxyyzz",
"custom2": "custom-2",
"custom3": "custom-3",
}
url = "https://example.com/postback?" + urlencode(params)
response = urlopen(url)// GET https://example.com/postback
$params = [
"trn" => "value",
"trn_id" => "1",
"amount" => "9.99",
"usercode" => "value",
"custom1" => "xxyyzz",
"custom2" => "custom-2",
"custom3" => "custom-3",
];// GET https://example.com/postback
Map<String, String> params = Map.ofEntries(
Map.entry("trn", "value"),
Map.entry("trn_id", "1"),
Map.entry("amount", "9.99"),
Map.entry("usercode", "value"),
Map.entry("custom1", "xxyyzz"),
Map.entry("custom2", "custom-2"),
Map.entry("custom3", "custom-3")
);Your endpoint receives this call.
Query parameters
trnstringrequiredtrn_idnumberrequiredID of transaction in Verotel system
amountnumberrequiredamount of transaction
usercodestringrequired1 to 12 alphanumeric characters (editing allows 5-12 in Verotel Control Center)
custom1stringup to 100 characters
custom2stringup to 100 characters
custom3stringup to 100 characters
Response
200Expected Response Codes Verotel expects that the VerotelRUM script installed on the merchants website responds with a predefined response code. It is important for the merchant to implement this correctly. Whenever Verotel receives a response other than "APPROVED" it will retry the postback call two more times in 20 minutes time period. If all attempts fail, the Postback call will be marked as failed and corresponding debit transaction automatically refunded. Excessive number of failures may cause the Verotel compliance department to suspend the Verotel account. Content of response Meaning APPROVED on success DECLINED when transaction cannot be successfully completed on merchants side ERROR on technical failure on merchants side
Cancel transaction
Cancel transaction (called by Verotel server) http:// www.yourwebsite.com/cgi-bin/rumadd.pl?trn=cancel&usercode=bob&custom1=cust1&custom2=cust2&custom3=cust3 parameter_name type optional remarks trn const "cancel" mandatory usercode a-zA-Z0-9 mandatory 1 to 12 alnum characters (editing allows 5-12 in Verotel Control Center) custom1 string optional up to 100 characters custom2 string optional up to 100 characters custom3 string optional up to 100 characters
GET https://example.com/postback
?trn=value
&usercode=value
&custom1=xxyyzz
&custom2=custom-2
&custom3=custom-3const url = new URL("https://example.com/postback");
url.searchParams.set("trn", "value");
url.searchParams.set("usercode", "value");
url.searchParams.set("custom1", "xxyyzz");
url.searchParams.set("custom2", "custom-2");
url.searchParams.set("custom3", "custom-3");
const response = await fetch(url);from urllib.parse import urlencode
from urllib.request import urlopen
params = {
"trn": "value",
"usercode": "value",
"custom1": "xxyyzz",
"custom2": "custom-2",
"custom3": "custom-3",
}
url = "https://example.com/postback?" + urlencode(params)
response = urlopen(url)// GET https://example.com/postback
$params = [
"trn" => "value",
"usercode" => "value",
"custom1" => "xxyyzz",
"custom2" => "custom-2",
"custom3" => "custom-3",
];// GET https://example.com/postback
Map<String, String> params = Map.ofEntries(
Map.entry("trn", "value"),
Map.entry("usercode", "value"),
Map.entry("custom1", "xxyyzz"),
Map.entry("custom2", "custom-2"),
Map.entry("custom3", "custom-3")
);Your endpoint receives this call.
Query parameters
trnstringrequiredusercodestringrequired1 to 12 alnum characters (editing allows 5-12 in Verotel Control Center)
custom1stringup to 100 characters
custom2stringup to 100 characters
custom3stringup to 100 characters
Response
200Expected Response Codes Verotel expects that the VerotelRUM script installed on the merchants website responds with a predefined response code. It is important for the merchant to implement this correctly. Whenever Verotel receives a response other than "APPROVED" it will retry the postback call two more times in 20 minutes time period. If all attempts fail, the Postback call will be marked as failed and corresponding debit transaction automatically refunded. Excessive number of failures may cause the Verotel compliance department to suspend the Verotel account. Content of response Meaning APPROVED on success DECLINED when transaction cannot be successfully completed on merchants side ERROR on technical failure on merchants side
Modify transaction
Modify transaction (called by Verotel server) http:// www.yourwebsite.com/cgi-bin/rumadd.pl?trn=modify&usercode=bob&passcode=testpwd&custom1=cust1&custom2=cust2&cu stom3=cust3 parameter_name Type optional remarks trn const "modify" mandatory usercode a-zA-Z0-9 mandatory 1 to 12 alphanumeric characters passcode a-zA-Z0-9 mandatory 1 to 14 alphanumeric characters custom1 String optional up to 100 characters custom2 String optional up to 100 characters custom3 string optional up to 100 characters
GET https://example.com/postback
?trn=value
&usercode=value
&passcode=value
&custom1=xxyyzz
&custom2=custom-2
&custom3=custom-3const url = new URL("https://example.com/postback");
url.searchParams.set("trn", "value");
url.searchParams.set("usercode", "value");
url.searchParams.set("passcode", "value");
url.searchParams.set("custom1", "xxyyzz");
url.searchParams.set("custom2", "custom-2");
url.searchParams.set("custom3", "custom-3");
const response = await fetch(url);from urllib.parse import urlencode
from urllib.request import urlopen
params = {
"trn": "value",
"usercode": "value",
"passcode": "value",
"custom1": "xxyyzz",
"custom2": "custom-2",
"custom3": "custom-3",
}
url = "https://example.com/postback?" + urlencode(params)
response = urlopen(url)// GET https://example.com/postback
$params = [
"trn" => "value",
"usercode" => "value",
"passcode" => "value",
"custom1" => "xxyyzz",
"custom2" => "custom-2",
"custom3" => "custom-3",
];// GET https://example.com/postback
Map<String, String> params = Map.ofEntries(
Map.entry("trn", "value"),
Map.entry("usercode", "value"),
Map.entry("passcode", "value"),
Map.entry("custom1", "xxyyzz"),
Map.entry("custom2", "custom-2"),
Map.entry("custom3", "custom-3")
);Your endpoint receives this call.
Query parameters
trnstringrequiredusercodestringrequired1 to 12 alphanumeric characters
passcodestringrequired1 to 14 alphanumeric characters
custom1stringup to 100 characters
custom2stringup to 100 characters
custom3stringup to 100 characters
Response
200Expected Response Codes Verotel expects that the VerotelRUM script installed on the merchants website responds with a predefined response code. It is important for the merchant to implement this correctly. Whenever Verotel receives a response other than "APPROVED" it will retry the postback call two more times in 20 minutes time period. If all attempts fail, the Postback call will be marked as failed and corresponding debit transaction automatically refunded. Excessive number of failures may cause the Verotel compliance department to suspend the Verotel account. Content of response Meaning APPROVED on success DECLINED when transaction cannot be successfully completed on merchants side ERROR on technical failure on merchants side
Delete transaction
Delete transaction (called by Verotel server) http:// www.yourwebsite.com/cgi-bin/rumadd.pl?trn=delete&usercode=bob&custom1=cust1&custom2=cust2&custom3=cust3 parameter_name type optional remarks trn const "delete" mandatory usercode a-zA-Z0-9 mandatory 1 to 12 alphanumeric characters (editing allows Verotel Control Center) custom1 string optional up to 100 characters custom2 string optional up to 100 characters custom3 string optional up to 100 characters
GET https://example.com/postback
?trn=value
&usercode=value
&custom1=xxyyzz
&custom2=custom-2
&custom3=custom-3const url = new URL("https://example.com/postback");
url.searchParams.set("trn", "value");
url.searchParams.set("usercode", "value");
url.searchParams.set("custom1", "xxyyzz");
url.searchParams.set("custom2", "custom-2");
url.searchParams.set("custom3", "custom-3");
const response = await fetch(url);from urllib.parse import urlencode
from urllib.request import urlopen
params = {
"trn": "value",
"usercode": "value",
"custom1": "xxyyzz",
"custom2": "custom-2",
"custom3": "custom-3",
}
url = "https://example.com/postback?" + urlencode(params)
response = urlopen(url)// GET https://example.com/postback
$params = [
"trn" => "value",
"usercode" => "value",
"custom1" => "xxyyzz",
"custom2" => "custom-2",
"custom3" => "custom-3",
];// GET https://example.com/postback
Map<String, String> params = Map.ofEntries(
Map.entry("trn", "value"),
Map.entry("usercode", "value"),
Map.entry("custom1", "xxyyzz"),
Map.entry("custom2", "custom-2"),
Map.entry("custom3", "custom-3")
);Your endpoint receives this call.
Query parameters
trnstringrequiredusercodestringrequired1 to 12 alphanumeric characters (editing allows Verotel Control Center)
custom1stringup to 100 characters
custom2stringup to 100 characters
custom3stringup to 100 characters
Response
200Expected Response Codes Verotel expects that the VerotelRUM script installed on the merchants website responds with a predefined response code. It is important for the merchant to implement this correctly. Whenever Verotel receives a response other than "APPROVED" it will retry the postback call two more times in 20 minutes time period. If all attempts fail, the Postback call will be marked as failed and corresponding debit transaction automatically refunded. Excessive number of failures may cause the Verotel compliance department to suspend the Verotel account. Content of response Meaning APPROVED on success DECLINED when transaction cannot be successfully completed on merchants side ERROR on technical failure on merchants side