Set Up Your Server
To start working with our SDK, you should expose two APIs on your backend for your app to communicate with:- Endpoint 1: Preparing the checkout,
- Endpoint 2: Getting result of payment.
Prepare the checkout
Perform a server-to-server POST request to prepare the checkout with the required data, including the payment type, amount and currency. The response to a successful request is a JSON string with the checkout ID (see"id"
in example below), required in the second step to make the transaction. curl https://test.como.world/v1/checkouts \ -d "entityId=8ac7a4c7761cdc4a01761f34e767099c" \ -d "amount=92.00" \ -d "currency=EUR" \ -d "paymentType=DB" \ -H "Authorization: Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=="
public Dictionary<string, dynamic> Request() { Dictionary<string, dynamic> responseData; string data="entityId=8ac7a4c7761cdc4a01761f34e767099c" + "&amount=92.00" + "¤cy=EUR" + "&paymentType=DB"; string url = "https://test.como.world/v1/checkouts"; byte[] buffer = Encoding.ASCII.GetBytes(data); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "POST"; request.Headers["Authorization"] = "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=="; request.ContentType = "application/x-www-form-urlencoded"; Stream PostData = request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); var s = new JavaScriptSerializer(); responseData = s.Deserialize<Dictionary<string, dynamic>>(reader.ReadToEnd()); reader.Close(); dataStream.Close(); } return responseData; } responseData = Request()["result"]["description"];
import groovy.json.JsonSlurper
public static String request() {
def data = "entityId=8ac7a4c7761cdc4a01761f34e767099c" +
"&amount=92.00" +
"¤cy=EUR" +
"&paymentType=DB"
def url = "https://test.como.world/v1/checkouts".toURL()
def connection = url.openConnection()
connection.setRequestMethod("POST")
connection.setRequestProperty("Authorization","Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
connection.doOutput = true
connection.outputStream << data
def json = new JsonSlurper().parseText(connection.inputStream.text)
json
}
println request()
private String request() throws IOException {
URL url = new URL("https://test.como.world/v1/checkouts");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==");
conn.setDoInput(true);
conn.setDoOutput(true);
String data = ""
+ "entityId=8ac7a4c7761cdc4a01761f34e767099c"
+ "&amount=92.00"
+ "¤cy=EUR"
+ "&paymentType=DB";
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(data);
wr.flush();
wr.close();
int responseCode = conn.getResponseCode();
InputStream is;
if (responseCode >= 400) is = conn.getErrorStream();
else is = conn.getInputStream();
return IOUtils.toString(is);
}
const https = require('https');
const querystring = require('querystring');
const request = async () => {
const path='/v1/checkouts';
const data = querystring.stringify({
'entityId':'8ac7a4c7761cdc4a01761f34e767099c',
'amount':'92.00',
'currency':'EUR',
'paymentType':'DB'
});
const options = {
port: 443,
host: 'test.como.world',
path: path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': data.length,
'Authorization':'Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=='
}
};
return new Promise((resolve, reject) => {
const postRequest = https.request(options, function(res) {
const buf = [];
res.on('data', chunk => {
buf.push(Buffer.from(chunk));
});
res.on('end', () => {
const jsonString = Buffer.concat(buf).toString('utf8');
try {
resolve(JSON.parse(jsonString));
} catch (error) {
reject(error);
}
});
});
postRequest.on('error', reject);
postRequest.write(data);
postRequest.end();
});
};
request().then(console.log).catch(console.error);
function request() {
$url = "https://test.como.world/v1/checkouts";
$data = "entityId=8ac7a4c7761cdc4a01761f34e767099c" .
"&amount=92.00" .
"¤cy=EUR" .
"&paymentType=DB";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization:Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=='));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// this should be set to true in production
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$responseData = curl_exec($ch);
if(curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $responseData;
}
$responseData = request();
try:
from urllib.parse import urlencode
from urllib.request import build_opener, Request, HTTPHandler
from urllib.error import HTTPError, URLError
except ImportError:
from urllib import urlencode
from urllib2 import build_opener, Request, HTTPHandler, HTTPError, URLError
import json
def request():
url = "https://test.como.world/v1/checkouts"
data = {
'entityId' : '8ac7a4c7761cdc4a01761f34e767099c',
'amount' : '92.00',
'currency' : 'EUR',
'paymentType' : 'DB'
}
try:
opener = build_opener(HTTPHandler)
request = Request(url, data=urlencode(data).encode('utf-8'))
request.add_header('Authorization', 'Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==')
request.get_method = lambda: 'POST'
response = opener.open(request)
return json.loads(response.read());
except HTTPError as e:
return json.loads(e.read());
except URLError as e:
return e.reason;
responseData = request();
print(responseData);
require 'net/https'
require 'uri'
require 'json'
def request()
uri = URI('https://test.como.world/v1/checkouts')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new(uri.path)
req.set_form_data({
'entityId' => '8ac7a4c7761cdc4a01761f34e767099c',
'amount' => '92.00',
'currency' => 'EUR',
'paymentType' => 'DB'
})
res = http.request(req)
return JSON.parse(res.body)
end
puts request()
def initialPayment : String = {
val url = "https://test.como.world/v1/checkouts"
val data = (""
+ "entityId=8ac7a4c7761cdc4a01761f34e767099c"
+ "&amount=92.00"
+ "¤cy=EUR"
+ "&paymentType=DB"
)
val conn = new URL(url).openConnection()
conn match {
case secureConn: HttpsURLConnection => secureConn.setRequestMethod("POST")
case _ => throw new ClassCastException
}
conn.setDoInput(true)
conn.setDoOutput(true)
IOUtils.write(data, conn.getOutputStream())
conn.setRequestProperty("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
conn.connect()
if (conn.getResponseCode() >= 400) {
return IOUtils.toString(conn.getErrorStream())
}
else {
return IOUtils.toString(conn.getInputStream())
}
}
Public Function Request() As Dictionary(Of String, Object)
Dim url As String = "https://test.como.world/v1/checkouts"
Dim data As String = "" +
"entityId=8ac7a4c7761cdc4a01761f34e767099c" +
"&amount=92.00" +
"¤cy=EUR" +
"&paymentType=DB"
Dim req As WebRequest = WebRequest.Create(url)
req.Method = "POST"
req.Headers.Add("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
req.ContentType = "application/x-www-form-urlencoded"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(data)
req.ContentLength = byteArray.Length
Dim dataStream As Stream = req.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim res As WebResponse = req.GetResponse()
Dim resStream = res.GetResponseStream()
Dim reader As New StreamReader(resStream)
Dim response As String = reader.ReadToEnd()
reader.Close()
resStream.Close()
res.Close()
Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim dict As Dictionary(Of String, Object) = jss.Deserialize(Of Dictionary(Of String, Object))(response)
Return dict
End Function
responseData = Request()("result")("description")
Authorization: Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==
entityId=8ac7a4c7761cdc4a01761f34e767099c |
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:04:31+0000",
"ndc":"9474506D5D7B74A232782F5281024B29.uat01-vm-tx01",
"id":"9474506D5D7B74A232782F5281024B29.uat01-vm-tx01"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:37:11+0000",
"ndc":"A90009F88DB40B155B1EEF785DB19B38.uat01-vm-tx03",
"id":"A90009F88DB40B155B1EEF785DB19B38.uat01-vm-tx03"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
{
"result":{
"code":"000.200.100",
"description":"successfully created checkout"
},
"buildNumber":"dab3d4c74990a1b31acff67570781f38b590c61a@2021-09-17 08:23:22 +0000",
"timestamp":"2021-09-17 10:26:10+0000",
"ndc":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04",
"id":"07B979E07AFB8D838C11C2E9CB5A0852.uat01-vm-tx04"
}
For a full list of parameters that can be sent in the prepare checkout request, see the API Reference.
Get the payment status
Once the payment has been processed, your app receives the callback from the mobile SDK. Then, to get the status of the transaction, you should make a GET request to thebaseUrl + resourcePath
, including your authentication parameters.
Important: The baseUrl must end in a “/”, e.g. “https://test.como.world/”.
Get resourcePath
for specific transaction using mobile SDK. The app should send resourcePath
to your server.
- If you use SDK with ready-to-use UI,
resourcePath
will be returned in callback after submitting a transaction. - If you use core SDK with your own UI, you will have to request checkout info from the server (SDK provides convenience API for this request).
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
https://test.como.world/v1/checkouts/8a82944a4cc25ebf014cc2c782423202/payment
curl -G https://test.como.world/v1/checkouts/{id}/payment \
-d "entityId=8ac7a4c7761cdc4a01761f34e767099c" \
-H "Authorization: Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=="
public Dictionary<string, dynamic> Request() {
Dictionary<string, dynamic> responseData;
string data="entityId=8ac7a4c7761cdc4a01761f34e767099c";
string url = "https://test.como.world/v1/checkouts/{id}/payment?" + data;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "GET";
request.Headers["Authorization"] = "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
var s = new JavaScriptSerializer();
responseData = s.Deserialize<Dictionary<string, dynamic>>(reader.ReadToEnd());
reader.Close();
dataStream.Close();
}
return responseData;
}
responseData = Request()["result"]["description"];
import groovy.json.JsonSlurper
public static String request() {
def data = "entityId=8ac7a4c7761cdc4a01761f34e767099c"
def url = ("https://test.como.world/v1/checkouts/{id}/payment?" + data).toURL()
def connection = url.openConnection()
connection.setRequestMethod("GET")
connection.setRequestProperty("Authorization","Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
def json = new JsonSlurper().parseText(connection.inputStream.text)
json
}
println request()
private String request() throws IOException {
URL url = new URL("https://test.como.world/v1/checkouts/{id}/payment "&entityId=8ac7a4c7761cdc4a01761f34e767099c");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==");
int responseCode = conn.getResponseCode();
InputStream is;
if (responseCode >= 400) is = conn.getErrorStream();
else is = conn.getInputStream();
return IOUtils.toString(is);
}
const https = require('https');
const querystring = require('querystring');
const request = async () => {
var path='/v1/checkouts/{id}/payment';
path += '?entityId=8ac7a4c7761cdc4a01761f34e767099c';
const options = {
port: 443,
host: 'test.como.world',
path: path,
method: 'GET',
headers: {
'Authorization':'Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=='
}
};
return new Promise((resolve, reject) => {
const postRequest = https.request(options, function(res) {
const buf = [];
res.on('data', chunk => {
buf.push(Buffer.from(chunk));
});
res.on('end', () => {
const jsonString = Buffer.concat(buf).toString('utf8');
try {
resolve(JSON.parse(jsonString));
} catch (error) {
reject(error);
}
});
});
postRequest.on('error', reject);
postRequest.end();
});
};
request().then(console.log).catch(console.error);
function request() {
$url = "https://test.como.world/v1/checkouts/{id}/payment";
$url .= "?entityId=8ac7a4c7761cdc4a01761f34e767099c";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization:Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=='));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// this should be set to true in production
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$responseData = curl_exec($ch);
if(curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $responseData;
}
$responseData = request();
try:
from urllib.parse import urlencode
from urllib.request import build_opener, Request, HTTPHandler
from urllib.error import HTTPError, URLError
except ImportError:
from urllib import urlencode
from urllib2 import build_opener, Request, HTTPHandler, HTTPError, URLError
import json
def request():
url = "https://test.como.world/v1/checkouts/{id}/payment"
url += '?entityId=8ac7a4c7761cdc4a01761f34e767099c'
try:
opener = build_opener(HTTPHandler)
request = Request(url, data=b'')
request.add_header('Authorization', 'Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==')
request.get_method = lambda: 'GET'
response = opener.open(request)
return json.loads(response.read());
except HTTPError as e:
return json.loads(e.read());
except URLError as e:
return e.reason;
responseData = request();
print(responseData);
require 'net/https'
require 'uri'
require 'json'
def request()
path = ("?entityId=8ac7a4c7761cdc4a01761f34e767099c")
uri = URI.parse('https://test.como.world/v1/checkouts/{id}/payment' + path)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg=='
res = http.request(req)
return JSON.parse(res.body)
end
puts request()
def initialPayment : String = {
val url = "https://test.como.world/v1/checkouts/{id}/payment"
url +="?entityId=8ac7a4c7761cdc4a01761f34e767099c"
val conn = new URL(url).openConnection()
conn match {
case secureConn: HttpsURLConnection => secureConn.setRequestMethod("GET")
case _ => throw new ClassCastException
}
conn.setRequestProperty("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
conn.connect()
if (conn.getResponseCode() >= 400) {
return IOUtils.toString(conn.getErrorStream())
}
else {
return IOUtils.toString(conn.getInputStream())
}
}
Public Function Request() As Dictionary(Of String, Object)
Dim url As String = "https://test.como.world/v1/checkouts/{id}/payment" +
"?entityId=8ac7a4c7761cdc4a01761f34e767099c"
Dim req As WebRequest = WebRequest.Create(url)
req.Method = "GET"
req.Headers.Add("Authorization", "Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg==")
req.ContentType = "application/x-www-form-urlencoded"
Dim res As WebResponse = req.GetResponse()
Dim resStream = res.GetResponseStream()
Dim reader As New StreamReader(resStream)
Dim response As String = reader.ReadToEnd()
reader.Close()
resStream.Close()
res.Close()
Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim dict As Dictionary(Of String, Object) = jss.Deserialize(Of Dictionary(Of String, Object))(response)
Return dict
End Function
responseData = Request()("result")("description")
Authorization | Bearer OGFjN2E0Yzc3NjFjZGM0YTAxNzYxZjM0ZTc5YjA5YTB8V0duZ0Q4WGFYRg== |
entityId=8ac7a4c7761cdc4a01761f34e767099c
We recommend that you verify the following fields from the Payment Status response, by comparing the returned values with expected:
- ID(s)
- Amount
- Currency
- Brand
- Type
Test Your Server
You can find the values for the sandbox testing account in our Testing Page. To verify your integration, check the transactions in the BIP, where they will appear in real-time.
NOTE: Your need to develop and test your code against your sandbox account before processing live transactions against a production account.
Go to production
When you are ready to start charging real money, transition over to our production environment. At this point, your should be able to generate the checkout and obtain the payment status in the sandbox.