Merchant-hosted transactions refer to payment processes where the merchant’s platform handles the entire transaction, from capturing payment details to transmitting them securely to the payment processor. Various types of transactions can be conducted through merchant-hosted systems, including:
E-commerce Purchases: Customers can buy products or services directly from a merchant’s website.
Donations: Charities and non-profits can receive contributions securely via their website.
Bill Payments: Utility bills, subscriptions, and other recurring payments can be settled online.
Ticket Sales: Events, movies, concerts, and other ticketed activities can be paid for online.
Digital Downloads: Music, ebooks, software, and other digital products can be sold and downloaded online.
Booking and Reservations: Hotels, restaurants, and other service-based businesses can accept payments for bookings and reservations.
Subscriptions: Customers can sign up for recurring services or memberships, with payments processed automatically.
Transaction Capabilities and Flows in PayBiz
PayBiz offers comprehensive transaction capabilities, including purchase processing, reversal functionality, and tokenization for enhanced security. Below, you’ll find detailed descriptions of the purchase and reversal flows provided by PayBiz.
How it works
Customer visits the merchant site and clicks on checkout for payment processing. Customer provides card details purchase details and confirms to pay using the payment gateway. Payment Gateway verifies the transaction request from the merchant and gives the payment ID and payment page URL in the response. Below is the sample of initial request
-
Java
-
Json
private String request() throws IOException {
URL url = new URL("https://staging.logibiztech.com:8777/transaction/request-payment-url");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization",
"Bearer OGE4Mjk0MTc0YjdlY2IyODAxNGI5Njk5MjIwMDE1Y2N8c3k2S0pzVDg=");
conn.setDoInput(true);
conn.setDoOutput(true);
String data = “{
"tranPortalId": "EdfaTerminal",
"password": "P@ssw0rd@123",
"amount": "200.00",
"trackId": "10560",
"langId": "EN",
"actionCode": "1",
"currency": "840",
"cardNumber": "4111111111111111",
"cardHolderName": "example",
"expiryMonth": "09",
"expiryYear": "2026",
"cvv": "111",
"saveFlag": "true",
"mobileNumber": "0222222222222",
"email": "[email protected]",
"custToken": "",
"cardToken": "",
"successUrl": "https://www.logibizte ch.com/details",
"errorUrl": "https://www.logibiztech.com/details",
"javaScriptEnabled": "true",
"browserJavaScriptEnabled": "true",
"browserJavaEnabled": "true",
"browserLanguage": "enPK",
"browserColorDepth": "24",
"browserScreenHeight": "714",
"browserScreenWidth": "1536",
"browserTimeZone ": "-300",
"udf": []
}”
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);
}
{
"tranPortalId": "EdfaTerminal",
"password": "P@ssw0rd@123",
"amount": "200.00",
"trackId": "10560",
"langId": "EN",
"actionCode": "1",
"curren cy": "840",
"cardNumber": "4111111111111111",
"cardHolderName": "examp le",
"expiryMonth": "09",
"expiryYear": "2026",
"cvv": "111",
"saveFlag": "true",
"mobileNumber": "0222222222222",
"email": "[email protected]",
"custToken": "",
"cardToken": "",
"successUrl": "https://www.logibizte ch.com/details",
"errorUrl": "https://www.logibiztech.com/details",
"javaScriptEnabled": "true",
"browserJavaScriptEnabled": "true",
"bro wserJavaEnabled": "true",
"browserLanguage": "enPK",
"browserColorDepth": "24",
"browserScreenHeight": "714",
"browserScreenWidth": "1536",
"browserTimeZone ": "-300",
"udf": []
}
Response
Success scenario
{
"paymentUrl":"https://staging.logibiztech.com:8777/transaction/external/processpayment",
"paymentId": "823202379870001",
"status": "1"
}
Failure scenario
{
"errorCode": "LOG-20",
"errorDesc": "Invalid Card Number",
"message": "INVALID_CARD_NUMBER"
}
Customer redirect
Merchant needs to frame the payment page URL like:
https://staging.logibiztech.com:8777/transaction/external/process-payment/823202379870001
Merchant needs to redirect the customer to Payment gateway. Payment gateway verifies the terminal rules engine details (If configured). Customer browser will redirect to ACS page and will complete authentication (in 3ds flow) Payment gateway will process the transaction with the respective schemes. Once the transaction complete, PG provide the response. This is URL redirection. Merchant needs to frame the Response
Response
Success scenario
{
"responseMessage": "PaymentSuccessful",
"status": "SUCCESS",
"mercha ntRefId": "6566666666",
"token": "0b4d4878-c5ae-4cb7-a99aa45d9121984d",
"paymentId": "823202379870001",
"txnTime": "2023-07- 2201: 53: 02PM",
"amount": "200.00",
"authCode": "000000",
"responseCode ": "00",
"rrn": "139022961549",
"currencyCode": "840",
"cardToken": "411 1**********11"
}
Failure scenario
{
"responseMessage": "RISK-001:Card number is in Declined Card list",
"status": "1",
"merchantRefId": "43535",
"token": null,
"paymentI d": "823202379870001",
"txnTime": "2023-07-21 10:33:07 AM",
"amount": "234.00",
"responseCode": "RISK-001",
"rrn": null,
"currencyCode": null,
"cardToken": null
}