HPP Airline - Integration Guide V2.14

1. Document Details

1.1 Scope

This document provides information about Velocity HPP integration with a website.

Note: Details about SDK and API integration are in separate guides, which can be provided on request.

1.2 Version History

VersionDateUpdates or changes
2.05June 2021Updated JSON redirect parameters.
2.06July 2021Updated JSON redirect parameters.
2.07Sept 2021Updated JSON request and redirect parameters.
2.08Feb 2022Editing and formatting. Updated JSON redirect parameters.
2.09Mar 2022Updated Section 5.1 table to change “country” parameter to “No”.
2.10April 2022Updated Section 5.2 table txntype values list.
2.11April 2022Updated Section 5.2 table to add init-token VA examples.
2.12August 2022Updated Section 7 to include the shipping node, order data parameter descriptions, and passenger type codes.
2.13November 2022Changed GMT to local time.
2.14January 2023Updated document template.

2. Introduction

Velocity Hosted Payment Page (HPP) provides a seamless and secure payment processing channel. HPP offers payment processing for websites. You can easily integrate it with your website. You can control, optimize, and harmonize payment transactions across channels.


3. Glossary of Terms

The terms used in this document are listed and defined in the table below.

TermDescription
MerchantAny business that sells goods or services and accepts payments from customers.
CustomersThose who want to buy goods and services from merchants.
HPPHosted Payment Page.
PSPPayment Service Provider.
ACQAcquirer
CPDCellPoint Digital
POPPayment Orchestration Platform
MSISDNMobile Station International Subscriber Directory Number
MACMessage Authentication Code

4. Integration Requirement

To ensure the seamless integration of your system with HPP, CPD requires the following from merchants:

  • Organization logo, website payment template, and website colour scheme.
  • Accept URL: customers are redirected on this URL if their transaction is successful.
  • Cancel URL: customers are redirected on this URL if their transaction is cancelled.
  • Callback URL: a URL where CPD presents the asynchronous status of a transaction.
  • PSP or acquirer details.
  • Preferred payment methods, countries, and languages and currencies supported.
  • Whitelist server IPs of CPD.
  • Payment options that need to be mapped with specific regions or countries.

5. Integration Approach

The complete integration process is simple and is usually completed within a week. The integration time depends on the number of configurations you require.

After the onboarding process is complete, CPD provides you with a unique client ID and an Account ID. You can use these to accept payments.

Before you go live, you can test the payment processing by performing mock transactions using test cards. To integrate with the APM, CPD provides a test account for many products.

The following table shows how the payment control is passed from Velocity HPP to your website.

PageFeature
Order summary page
  • Shopping cart summary.
  • Customers can checkout using the payment button.
Hosted Payment page (HPP)
  • Hosted by CPD.
  • Facilitates payment processing based on your account ID.
  • Provides payment information about the success or failure of payment.
  • Redirects customers back to your page.
Payment Confirmation Page
  • Provides information if a transaction was successful or failure.
  • Provides confirmation about the purchase.

5.1 HPP Payment Flow

The diagram provides an illustration of the HPP workflow, which includes the following:

Order Summary page > CPD payment page > Merchant Payment confirmation page

5.2 Request to Invoke Velocity HPP

To integrate HPP with your Digital Web Channel or Storefront, integrate a simple form that CPD provides. You need to redirect customers to HPP when they checkout to make a payment; a payment page opens outside your shopping cart page.

To redirect your customers to Velocity HPP, send the following request syntax to invoke Velocity HPP as a request.

<!DOCTYPE HTML>
<html>
<body><form action="https://{HPP_HOST}/views/web.php" method="POST" id="order-form">
<input type="hidden" name="country" value="200">
<input type="hidden" name="clientid" value="10022">
<input type="hidden" name="account" value="100220">
<input type="hidden" name="accept-url" value="{accept-url}">
<input type="hidden" name="cancel-url" value="{cancel-url}">
<input type="hidden" name="callback-url" value="{callback-url}">
<input type="hidden" name="orderid" value="1561120588855">
<input type="hidden" name="operator" value="20000">
<input type="hidden" name="language" value="us">
<input type="hidden" name="customer-ref" value="test">
<input type="hidden" name="email" value="[email protected]">
<input type="hidden" name="mobile-country" value="200">
<input type="hidden" name="mobile" value="9898989898">
<input type="hidden" name="amount" value="1.232">
<input type="hidden" name="auth-token" value="E814B1DE-2A6A-4A09-B522-13D5CD9829D1">
<input type="hidden" name="init-token" value="f26ebd24d623f228cb8bc37f30939003ffd1c98b2d24ab8be35e9a881521fc1b4b3f82bf131471ff68a9c716c20af08141ff4a1337f0c31ee8ddc75bedb35fd8">
<input type="hidden" name="nonce" value="12345">
<input type="hidden" name="orderdata" value="{JSON order-data}">
<input type="hidden" name="gtm-data" value="{gtmData}">
<input type="hidden" name="profile-id" value="XC2G6BYDBqibRdO06G1OGZq6OBxM">
<input type="hidden" name=response-content-type" value="2">
   <input type="hidden" name="txntype" value="1|3|5">
<input type="hidden" name="
"additionaldata" value='{
  "additional_data": {
    "param": [
      {
        "name": "session_token",
        "text": "2A6A4A09B52213D5CD9829D1"
      },
      {
        "name": "hold_fee_amount",
        "text": "150"
      },
      {
        "name": "hold_fee_currency_code",
        "text": "608"
      },
      {
        "name": "hold_period",
        "text": "8"
      },
      {
        "name": "stepper",
        "text": "1"
      }   
    ]
  }
}'> 
<input type="submit" value="Pay" class="btn-link">
</form></body></html>

The following table provides a description of the parameters sent in a request.

ParameterTypeRequiredDescription
Client idIntegerYesA merchant’s unique ID for Velocity, which CPD creates.
AccountIntegerYesThe ID of a sub-account with which a payment transaction is associated. The account ID is an integer greater than 100000 and account number is an integer smaller than 1000. CPD provides the account number.
Order idStringYesA unique identification string; it is a passenger name record (PNR) for airlines.
OperatorIntegerNoThe ID of a customer’s mobile network operator. CPD recommends including this parameter in the request to ensure Velocity interacts with the operator accurately.
A typical value is (’country id’ multiplied by 100)
CountryIntegerNoThe ID of a country from which a customer creates a transaction. It is based on the International Organization for Standardization (ISO) country standard numeric code.
Note: If you do not provide country, Velocity uses default client country for the payment routing.
Currency-codeIntegerNoThe ID of a currency using which, a customer creates a transaction. CPD provides this ID.
Note:The list of supported currency is based on the agreement between a merchant and CPD. If you do not provide any currency code, Velocity uses default client country for the payment routing.
MobileIntegerNoThe MSISDN of a customer without the International Dialling Code.
EmailStringNoThe email address of a customer.
Customer-refStringNoA unique merchant’s reference ID for a customer. Velocity uses this token to identify a customer. Additionally, the customer reference is included in the request to the specified auth-URL to authenticate the customer when paying with a stored card through the mVault module if single sign-on is used.
Note: If neither country nor currency-code is provided, then the default client country is used for the payment routing.
AmountDecimalYesThe total amount that a customer is charged for a payment transaction in a country’s currency.
LanguageStringNoThe default language that Velocity uses when translating the payment pages. Velocity language codes are based on the ISO-639-1 standard.
Refer to http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details.
Accept-urlStringNoThe absolute URL where Velocity directs the customer after successfully completing a payment transaction.
Note: If you do not provide this parameter, Velocity uses your default accept URL.
Cancel-urlcancel-urlNoThe absolute URL where Velocity directs customers if they cancel a payment transaction midway.
Note: If you do not provide this parameter, Velocity uses your default cancel URL.
HmacStringYesThe Message Authentication Code. It is calculated by creating a SHA512 hash comprising the following input fields in the listed order:

ParameterRequired
clientidYes
orderidYes
amountYes
countryYes
mobileNo
mobile-countryNo
emailNo
deviceidNo
saltYes

Using MAC calculation secures the information sent by the merchant to Velocity. It applies the SHA-512 encryption algorithm on key parts of the information sent to protect against tampering. The ‘salt’ is a merchant's shared secret string used to ensure that the provided MAC is unique.
Order dataJSON stringNoThe order details, which contains event, location, date or time, ticket type, cost, booking fee, quantity, and total price. Sample code is given in the Order Data section of this document.
Gtm-dataJSON stringNoIt is a payload for Google Analytics, the details of which are given in another document. It can be made available on request.
Response-content-typeIntegerNoThe format in which merchant gets the redirect response:
Array content type = 1 (default value)
JSON content type = 2
TxntypeIntegerNoA value to indicate the purchase type such as Search and Book (S&B), Managed My Booking (MYB). The values are:
  • 1 - S & B
  • 3 - MYB
  • 5 – MYB (Disable PCH)
  • 6 - CPL Transaction.
  • 7 - Call Centre Transaction
Additional dataJSON stringNoThe additional data sent from a merchant.
NonceStringYesTimestamp / random string.
Init-tokenStringYesThis is a combination of SHA512 (clientid+username+password+nonce+accepturl) encryption.
Example:
  • clientid=10007
  • username = CPM
  • password = TEST
  • nonce = 123435
So, the above combination will generate the following token:
SHA512(10007CPMTEST123435).
For Cebu below params will be added in the init-token:
  • clientid
  • username
  • password
  • nonce
  • accept-url
For VA below params will be added in the init-token:
  • clientid
  • username
  • password
  • nonce
  • accept-url
  • cancel-url
  • callback-url
  • profile-id
  • auth-token
SHA512 (clientidusernamepasswordnonceaccepturlcancelurlcallbackurlprofileidauthtoken)
Profile-idStringNoThe profile ID of a customer which is used for fetching the customer’s profile from an external system or Velocity.
Note: This field is mandatory only if merchant wants user profile authentication.
additional data JSON
session_tokenStringNoAn authentication token for validating a user.
ParameterTypeRequiredDescription
hold_fee_amountDecimalYesThe holding fee amount that a customer is charged for an offline payment transaction in a country’s currency.
hold_fee_currency_codeIntegerNoThe ID of a currency from which a customer creates a transaction. CPD provides this ID.
Note: The list of supported currency is based on the agreement between a merchant and CPD. This field is optional if holding fee currency is assumed as transaction currency.
hold_periodIntegerNoThe number of hours for which the booking is reserved for offline payment transaction completion.
Note: The information is shown on HPP only.
stepperIntegerNoThe default value = 1 It depends on merchant specification related to breadcrumbs for HPP UI.
Note: Merchants can request for specific breadcrumbs shown to customers on the top of HPP payment page. Such as booking, add-ons, payment, and so on.

5.3 Response of Velocity HPP

Velocity HPP sends a response to merchants to accept or cancel URL. After your customers make a payment, they are redirected back to your website. They receive one of the following notifications about the payment processing:

  • Payment was successful
  • Payment was a failure
  • Customer cancelled the payment

After the completion of the payment, the control is passed back to the merchant URL. The customers are redirected to one of the following merchant URLs:

Merchant URLTransaction status
Accept-URLPayment is successful
Cancel-URLPayment fails or customers cancels a transaction

Note: Velocity accepts the parameters if they are lowercase only.

When Velocity receives a payment request, it performs an extensive validation of the received data. The validation ensures that the

  • Payment page is rendered correctly on a customer’s mobile device.
  • Transaction has the maximum chance of succeeding when sent to the PSP or Acquirer for clearance.

The callback request informs you about the payment status as an HTTP POST. Your technical team can customize the transaction details that you view. This is an asynchronous message in a separate HTTP transaction initiated from Velocity. The message is in addition to the original synchronous response to the payment request and the user redirect to confirmation page

Note: Consider the following:

  • The callback response parameter is customizable.
  • Velocity sends parameters in lowercase. The request contains body with URL encoded format. Therefore, all the parameters may not be visible in the URL.
  • The legacy version of HPP redirect parameters is deprecated and will be removed soon; it will not be supported in subsequent releases.

5.3.1 HPP Redirect Parameters: Legacy Version

The following is a sample POST data sent from Velocity HPP to accept or cancel URL:

transaction_id = 9018273
transaction_status = 1
order_id = SAWEQD1
amount = 100965
state_id = 2000
sign = 7d777e2f338c8db976e39312445484f3
session_id = 50787
currency = 840
decimals = 2
payment_method = Card
card_name = VISA
masked_card = 411234******4113
dcc_card_currency = 123
dcc_card_amount = 100
dcc_card_decimals = 2
dcc_exchange_rate = 45.78
fraud_status_code = 3115
fraud_status_desc = Rejected
pre_auth_ext_id = 5900006009536418604009
pre_auth_ext_status_code = 105
post_auth_ext_id = 5900006009536418604009
post_auth_ext_status_code = REJECT
approval_code = 776441
psp_name = Wire-Card
psp_ref_id=34535343
expiration_date = 01/21
first_name = Chris
last_name = Ryan
street_address = 253 M.L. Quezon Street
city = Makati City
country = Philippines
province = CEB
postal_code = 12345
ip_address = 192.158. 1.38
date_time = 2021-02-03T21:32:59+08:00
CUS = {Payment Reference Number from SafetyPay}
NIT = {Merchants Code at PSE}
coupon_issue_timestamp = 2021-02-03T21:32:59+08:00
coupon_expiry = 2021-02-04T21:32:59+08:00
coupon_id = AHG7888B
issuing_bank = {Bank name for PSE / Onsite Center name for Onsite Payment}
 
session_token = 2A6A4A09B52213D5CD9829D1
hold_fee_amount = 100.20
hold_fee_currency_code = 608
hold_period = 8

Velocity sends the following parameters to the accept or cancel URL of a merchant server.

ParameterTypeRequired
transaction_idIntegerThe unique ID of Velocity for a payment transaction.
transaction_statusIntegerAn integer code indicating the status of the transaction,
where 1 = Success and 0 = Fail.
order_idStringThe order ID which a merchant provides after initializing a transaction.
currencyIntegerThe currency ID in which a customer was charged for non-dynamic currency conversion (non-DCC) transactions. If DCC was selected, this parameter provides pricing currency, the charged currency would be provided in dcc_card_currency.
amountIntegerThe total amount that the customer was charged for the payment transaction in a country’s currency. If you opt for DCC, this parameter provides the pricing amount. The amount charged is in dcc_card_amount.
state_idIntegerThe status of the transaction.
Note: If payment status is “timeout”, state_id = 0 is sent in response
signStringThe Unique MD5 string for the transaction combination of (clientid+transaction_id+order_id+currency+amount+state_id+salt)
Salt can be share separately if you want this to be validated.
session_idIntegerThe Velocity HPP session used for processing the transaction.
decimalsIntegerThe currency precision. For example, 2 is used for USD for the currency parameter.
payment_methodStringStringThe payment method of the transaction. For example, Card or APM.card_name
card_nameStringThe card scheme/network of the transaction. For example, Visa or Mastercard. For APM transactions, this parameter is not sent in the redirect callback.
masked_cardIntegerThe masked card used for a transaction. For example, 4444XXXXXXX1111. For APM transactions, this parameter is not sent in the redirect callback.
dcc_card_currencyIntegerThe card currency if DCC is selected for a transaction. If a merchant does not select DCC, this parameter is not sent in the redirect callback.
dcc_card_amountIntegerThe total amount that the customer was charged for a payment transaction if DCC is selected for the transaction. If a merchant does not opt for DCC, this parameter is not sent in the redirect callback.
dcc_card_decimalsIntegerThe DCC currency precision. For example, use 2 for GBP for dcc_card_currency. If a merchant does not opt for DCC, this parameter is not sent in the redirect callback.
dcc_exchange_rateIntegerThe DCC currency exchange rate as returned by DCC provider. (Example 54.777) If you opt for DCC, this parameter is sent in the redirect callback.
fraud_status_codeIntegerThe final fraud status code. For example, 3011 or 3111. If you do not enable fraud check, this parameter is not sent in the redirect callback. Refer to Fraud Status Codes for details
fraud_status_descStringThe final fraud status description. For example, accepted or review. If you do not enable fraud check, this parameter is not be sent in the redirect callback.
pre_auth_ext_status_codeIntegerThe pre-auth fraud check system response code, if available.
pre_auth_ext_idIntegerThe pre-auth fraud check system transaction ID, if available.
post_auth_ext_idIntegerThe post-auth fraud check system transaction ID, if available.
post_auth_ext_status_codeIntegerThe post-auth fraud check system response code, if available.
approval_codeIntegerThis is the Acquirer approval code for the transaction.
Note:This is optional and provided, if available.
psp_nameStringThe acquirer or processor name through which the transaction was processed. For example, AUB for AliPay and 2C2P.
expiration_dateThe card expiration date of the transaction. For example, 01/21.
first_nameStringThe first name in the billing address, if available.
last_nameStringThe last name in the billing address, if available.
street_addressStringThe street address in the billing address, if available.
cityStringThe name of a city in the billing address, if available.
countryStringThe country name in the billing address, if available.
provinceStringThe state or region value in the billing address, if available.
postal_codeIntegerThe zip or postal code in the billing address, if available.
ip_addressIntegerThe IP address of a transaction.
date_timeThe date and time when a transaction was initiated in UTC.
CUSIntegerThe Payment Reference Number issued by SafetyPay.
Note: This parameter is sent for Safety Pay transactions only.
NITIntegerThe Merchants Code at PSE.
Note: This parameter is sent for net banking transactions only.
coupon_issue_timestampStringThe date and time of coupon issued by Safety Pay.
Note: This parameter is sent for Safety Pay onsite transactions only.
coupon_expiryStringThe date and time of coupon of expiry issued by Safety Pay.
Note: This parameter is sent for Safety Pay onsite transactions only.
coupon_idStringThe AgreementCode issued by SafetyPay.
Note: This parameter is sent for Safety Pay onsite transactions only.
issuing_bankStringThe bank name for net banking or onsite centre name for onsite payment.
Note: This parameter is
• Sent for Safety Pay transactions only.
• Not sent for card transactions.
session_tokenStringThe additional data parameters, which are sent in a request.
hold_fee_amount
hold_fee_currency_code
hold_period
For example, {"additional_data":{"param": [{"name": "session_token","text": "2A6A4A09B52213D5CD9829D1"}]}}

5.3.2 HPP Redirect Parameters: Array Format

Following is a sample POST data to accept or cancel URL in HPP redirect callback for split payment. It is not visible in URL.

session_id = 50787
session_type = 2
order_id = SAWEQD1
transaction_status = 1
 
transaction_data[9018273][state_id] = 2000
transaction_data[9018273][amount] = 100965
transaction_data[9018273][sign] = 7d777e2f338c8db976e39312445484f3
transaction_data[9018273][currency] = 840
transaction_data[9018273][decimals] = 2
transaction_data[9018273][payment_method] = Card
transaction_data[9018273][card_name] = VISA
transaction_data[9018273][masked_card] = 411234******4113
transaction_data[9018273][dcc_card_currency] = 123
transaction_data[9018273][dcc_card_amount] = 100
transaction_data[9018273][dcc_card_decimals] = 2
transaction_data[9018273][dcc_exchange_rate] = 45.78
transaction_data[9018273][fraud_status_code] = 3111
transaction_data[9018273][fraud_status_desc] = Accepted
transaction_data[9018273][pre_auth_ext_id] = 5900006009536418604009
transaction_data[9018273][pre_auth_ext_status_code] = 105
transaction_data[9018273][post_auth_ext_id] = 5900006009536418604009
transaction_data[9018273][post_auth_ext_status_code] = ACCEPT
transaction_data[9018273][approval_code] = 776441
transaction_data[9018273][psp_name] = Wire-Card
transaction_data[9018273][psp_ref_id]=34535343
transaction_data[9018273][expiration_date] = 01/21
transaction_data[9018273][first_name] = Sam
transaction_data[9018273][last_name] = Ryan
transaction_data[9018273][street_address] = 253 M.L. Quezon Street
transaction_data[9018273][city] = Makati City
transaction_data[9018273][country] = Philippines
transaction_data[9018273][province] = CEB
transaction_data[9018273][postal_code] = 12345
transaction_data[9018273][session_token] = 2A6A4A09B52213D5CD9829D1
transaction_data[9018273][hold_fee_amount] = 100.20
transaction_data[9018273][hold_fee_currency_code] = 608
transaction_data[9018273][hold_period] = 8
transaction_data[9018274][state_id] = 2000
transaction_data[9018274][amount] = 100
transaction_data[9018274][sign] = 7d777e2f338c8db976e39312445484f3
transaction_data[9018274][currency] = 840
transaction_data[9018274][decimals] = 2
transaction_data[9018274][payment_method] = Voucher
transaction_data[9018274][card_name] = Voucher
transaction_data[9018274][approval_code] = 776441
transaction_data[9018274][psp_name] = Travel-Fund

The following is a description of the parameters.

ParameterDescription
order_id The order ID that a merchant provides after initializing a transaction.
transaction_statusAn integer code indicating the status of the transaction,
where 1 = Success and 0 = Fail.
transaction_data[transaction_id][state_id]The status of the transaction. Refer to Transaction Status Codes for details.
For the payment status timeout scenario, state_id = 0 is sent in the response.
transaction_data[transaction_id][currency]The numeric ISO currency code in which the customer was charged for non-DCC transactions. If DCC was selected this parameter provides the pricing currency, the charged currency is provided in dcc_card_currency.
Note: See https://en.wikipedia.org/wiki/ISO_4217 for details.
transaction_data[transaction_id][amount]The total amount that the customer was charged for the payment transaction in a country’s currency. If DCC was selected, this parameter provides the pricing amount, the amount charged is in dcc_card_amount.
transaction_data[transaction_id][sign]The Unique MD5 string for the transaction combination of (orderid+stateid+currency+ and so on).
transaction_data[transaction_id][decimals]The currency decimal precision. For example, 2 for USD for the currency parameter.
transaction_data[transaction_id][payment_method]The payment method used for a transaction. For example, Card, or PayPal.
transaction_data[transaction_id][card_name]The card scheme or network of the transaction. For example, Visa or Mastercard. For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][masked_card]Masked card of the transaction. For example, 4444XXXXXXX1111.
For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_currency]The ISO numeric card currency number if DCC is selected for a transaction. If DCC is not selected, this parameter is not sent in the redirect callback.
Note: See https://en.wikipedia.org/wiki/ISO_4217 for details.
transaction_data[transaction_id][dcc_card_amount]The total amount that a customer was charged for a payment transaction
if DCC is selected for the transaction. If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_decimals]DCC currency decimal precision. For example, 2 for GBP for dcc_card_currency. If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_exchange_rate]The DCC currency exchange rate as returned by a DCC provider.
For example, 54.777. If DCC is selected, this parameter is sent in the redirect callback.
transaction_data[transaction_id][fraud_status_code]The final fraud status code. For example, 3011, 3111.
Refer to Transaction Status Codes for details. If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][fraud_status_desc]The final fraud status. For example, Accepted or Review. If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][pre_auth_ext_status_code]The pre-auth fraud check system response code.
transaction_data[transaction_id][pre_auth_ext_id]The pre-auth fraud check system transaction ID.
transaction_data[transaction_id][card_name]The card scheme or network of the transaction. For example, Visa or Mastercard. For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][masked_card]The masked card number of a transaction. For example, 4444XXXXXXX1111. For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_currency]The ISO numeric card currency code if DCC is selected for a transaction. If DCC is not selected, this parameter is not sent in the redirect callback.
Note: See https://en.wikipedia.org/wiki/ISO_4217 for details.
transaction_data[transaction_id][dcc_card_amount]The total amount that a customer is charged for a payment transaction if DCC is selected. If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_decimals]The DCC currency precision. For example, 2 for GBP for dcc_card_currency. If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_exchange_rate]The DCC currency exchange rate as returned by a DCC provider. For example, 54.777. If DCC is selected, this parameter is sent in the redirect callback.
transaction_data[transaction_id][fraud_status_code]Final fraud status code. For example, 3011 or 3111. Refer to Fraud Status Codes for details. If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][fraud_status_desc]The final fraud status. For example. Accepted or Review. If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][pre_auth_ext_status_code]The pre-auth fraud check system response code.
transaction_data[transaction_id][pre_auth_ext_id]The pre-auth fraud check system transaction ID.
transaction_data[transaction_id][card_name]The card scheme or network of the transaction. For example, Visa or Mastercard. For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][masked_card]The masked card number of a transaction. For example, 4444XXXXXXX1111. For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_currency]The ISO numeric card currency code, which is shown only if DCC is selected for a transaction. If DCC is not selected, this parameter is not sent in the redirect callback.
Note: See https://en.wikipedia.org/wiki/ISO_4217 for details.
transaction_data[transaction_id][dcc_card_amount]The total amount that a customer was charged for a payment transaction if DCC is selected. If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_card_decimals]The DCC currency precision. For example, 2 for GBP for dcc_card_currency . If DCC is not selected, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][dcc_exchange_rate]The DCC currency exchange rate as returned by a DCC provider.
For example, 54.777. If DCC is selected, this parameter is sent in the redirect callback.
transaction_data[transaction_id][fraud_status_code]The final fraud status code. For example, 3011 or 3111.
Refer to Fraud Status Codes for details. If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][fraud_status_desc]The final fraud status description. For example, Accepted or Review.
If Fraud is not enabled, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][pre_auth_ext_status_code]The Pre-auth fraud check system response code.
transaction_data[transaction_id][pre_auth_ext_id]The Pre-auth fraud check system transaction ID.
transaction_data[transaction_id][post_auth_ext_id]The Post-auth fraud check system transaction ID.
transaction_data[transaction_id][post_auth_ext_status_code]The Post-auth fraud check system response code.
transaction_data[transaction_id][approval_code]The Acquirer approval code for the transaction.
Note: It is provided, if available.
transaction_data[transaction_id][psp_name]Acquirer or processor name through which this transaction was processed. For example, AUB for AliPay and 2C2P for some cards.
transaction_data[transaction_id][psp_ref_id]Acquirer or processor reference ID through which this transaction was processed.
transaction_data[transaction_id][expiration_date]The card expiration date of the transaction. For example, 01/21.
For APM transactions, this parameter is not sent in the redirect callback.
transaction_data[transaction_id][first_name]The billing address first name.
Note: The parameters related to billing address and contact details are sent only if they are available.
transaction_data[transaction_id][last_name]The billing address last name.
transaction_data[transaction_id][street_address]The billing address street address.
transaction_data[transaction_id][city]The billing address city name.
transaction_data[transaction_id][country]The billing address country name.
transaction_data[transaction_id][province]The billing address state/region value.
transaction_data[transaction_id][postal_code]The billing address zip code.
transaction_data[transaction_id][email]The card holder's email address.
transaction_data[transaction_id][mobile]The card holder's mobile number.
transaction_data[transaction_id][dialing_country_code]The card holder's mobile dialling country code.
transaction_data[transaction_id][session_token]
transaction_data[transaction_id][hold_fee_amount]
transaction_data[transaction_id][hold_fee_currency_code]
transaction_data[transaction_id][hold_period]
The parameter contains additional information, which is sent in the request. Examples are {"additional_data":{"param": [{"name": "session_token","text":"2A6A4A09B52213D5CD9829D1"}]}}

5.3.3 HPP Redirect Parameters: JSON Forma

The following JSON format is sent from HPP to a merchant's Accept/Cancel URL in the POST method.
The following JSON response is sent as a value of a redirect parameter in a HTML form post.

[redirect] => {
  "order_status": {
    "code": "1/0"
  },
  "session_id": "21465",
  "session_type": "1",
  "sale_amount": {
    "value": "8716000",
    "currency_id": "170",
    "decimals": "2",
    "alpha3code": "COP",
},
  "status": {
    "code": "4030",
    "message": "Session Complete"
  },
  "additional_data": {
    "params": [
      {
        "name": "platform",
        "text": "WEBB2C"
      },
      {
        "name": "hold_fee_currency_code",
        "text": "COP"
      }
    ]
  },
  "transactions": {
    "transaction": [
      {
        "id": "32629",
				"order_id": "3J6POZ",
        "hmac": "f7ef5a949c37068bad50e9e15d735eef827b108009825c0ee630db257ac58dacb91fe3cebdcec39d5549e0b1bcc39297f752d29a512e09815805e20219b4cfd1",
        "payment_method": "CASH",
        "payment_type": "8",
        "date_time": "2021-07-12T05:25:15+00:00",
        "issuing_bank": "Efecty",
        "installment": "2",
        "ip_address": "123.203.28.127",
        "service_type_id": "1",
        "amount": {
          "text": "8716000",
          "currency_id": "170",
          "decimals": "2",
          "alpha3code": "COP",
          "conversion_rate": "1"
        },
        "status": {
          "code": "2001",
          "message": "Payment captured by PSP"
        },
        "psp": {
          "id": "70",
          "name": "SafetyPay",
          "external_id": "469537"
        },
        "card": {
          "id": "7",
          "name": "VISA",
          "mask_card_number": "4444********1111",
          "expiry": "12/24"
        },
        "additional_data": {
          "params": [
            {
              "name": "platform",
              "text": "WEBB2C"
            },
            {
              "name": "_ga",
              "text": "2.164258751.1803897181.1625637105-1001259588.1622795959"
            },
            {
              "name": "office_id",
              "text": "BOGAV08AK"
            },
            {
              "name": "hold_fee_currency_code",
              "text": "COP"
            },
            {
              "name": "kpi_used",
              "text": "true"
            },
            {
              "name": "Response_Code",
              "text": "101"
            },
            {
              "name": "CUS",
              "text": "469537"
            },
            {
              "name": "NIT",
              "text": "9006166521"
            },
            {
              "name": "coupon_issue_timestamp",
              "text": "2021-07-12T05:27:14"
            },
            {
              "name": "coupon_expiry",
              "text": "2021-07-13T03:01:10"
            },
            {
              "name": "coupon_id",
              "text": "110924"
            },
            {
              "name": "receipt_filename",
              "text": "prdcpr_8f64d5c3-8575-460a-994b-52eeddd01702.pdf"
            }
          ]
        },
        "billing_address": {
          "first_name": "deb",
          "last_name": "de",
          "street": "reotuhesdfdss",
          "city": "sdfds",
          "state": "Abra",
          "country": "Philippines",
          "postal_code": "12345"
        },
        "fraud": {
          "status_code": "Post Auth Success",
          "status_desc": "Post Auth Success",
          "post_auth_ext_id": "6255590973676885104011",
          "post_auth_ext_status_code": "ACCEPT"
        }
      }
    ]
  }
}

The following is a description of the parameters.

TransactionsSub-parameterDescription
order_statuscodeAn integer code indicating the status of the transaction,
where 1 = success and 0 = failed.
session_idThe Velocity session ID for a transaction.
session_typeAn integer that defines payment type. The following can be the possible values. If a customer selects
  • Split payment, session_type = 2 is returned in the redirect response.
  • Does not select split payment, session_type = 1 is returned in the redirect response.
sale_amounttextThe total amount that the customer was charged for the payment transaction in a country’s currency.
currency_idThe currency ID , in which the customer was charged for the payment.
alpha3codeThree-letter country codes
decimalsThe currency precision. For example, 2 for USD for the currency parameter.
statuscodeAn integer code indicating the status of the session.
messageThe status message of a session
session_tokenA merchant's unique token.
hold_fee_amountThe holding fee amount
hold_fee_currency_codeThe holding fee currency.
hold_periodThe hold period.
Transactions
idVelocity’s unique ID for the payment transaction.
order_idThe order ID, which a merchant provides when a transaction is initiated. It is the PNR for airlines.
hmacThe Message Authentication Code. It is calculated by creating a SHA512 hash comprising the following input fields in the listed order:
ParameterMandatory (Yes/No)
ClientidYes
orderedYes
amountYes
countryNo
mobileNo
mobile-countryNo
emailNo
deviceidNo
saltYes

Using MAC calculation secures the information sent by the velocity to the merchant by applying the SHA-512 encryption algorithm on key parts of the information sent to protect against tampering. The “salt” is a merchant's shared secret string used to ensure that the provided MAC is unique.
payment_methodThe type of method used for payment. The values are
  • Direct Debit (Online payment) - DD
  • Credit/Debit Card (Card payment) - CD
  • Wallet - eWallet
  • Other payment methods - CASH
payment_typeThe type of payment. The possible values are
  • 1 = Card
  • 2 = Voucher
  • 3 = Wallet
  • 4 = APM
  • 5 = Card Token
  • 6 = Virtual
  • 7 = Online Banking
  • 8 = Offline Payment
ip_addressThe IP address of a transaction initiated.
date_timeThe date and time when a transaction was initiated in UTC.
installmentThe number of instalments opted by a customer.
issuing_bankThe bank name for PSE or Onsite Center name for Onsite Payment. This parameter is sent for Safety Pay transactions only.
Note: For card transactions, this parameter is not sent in the redirect callback.
approval_codeThe issuer approval code provided by a PSP for a transaction.
Note: It is available for card payments only.
status_codeThe final fraud status code, for example, 3011 or 3111. Refer to the Fraud Status Codes section for details.
Note: If Fraud is not enabled, this parameter will not be sent in the redirect callback.
status_descThe final fraud status description. For example, Accepted or Review.
Note: If Fraud is not enabled, this parameter is not sent in the redirect callback.
pre_auth_ext_status_codeThe pre-auth fraud check system response code, if available.
pre_auth_ext_idThe pre-auth fraud check system transaction ID, if available
post_auth_ext_idThe post-auth fraud check system transaction ID, if available.
post_auth_ext_status_codeThe post-auth fraud check system response code, if available.
service_type_idThe value to indicate the type of exchange services used for a transaction. The ID indicates if the Foreign Exchange (FX) services such as DCC or PCC are opted. The ID is a two-digit number XY in which:
  • X - Represents the type of exchange service used in a transaction.
  • Y - Represents the exchange usedꟷ it can be opt-in or opt-out.
The following table shows the possible values of exchange service ID:
ID (XY)Service (X)Opted
11DCCOpted
12DCCNot opted
41PCCOpted
42PCCNot opted
billing_addressfirst_nameThe billing address first name, if available.
last_nameThe billing address last name, if available.
streetThe billing address street address, if available.
cityThe billing address city name, if available.
countryThe billing address country name, if available.
stateThe billing address state/region value, if available.
amounttextThe total amount that a customer was charged for the payment transaction in a country’s currency.
currency_idThe currency ID , which the customer was charged for the payment.
decimalsThe currency precision. For example, 2 for USD for the currency parameter.
alpha3codeThe three-letter country codes
conversion_rateThe default value = 1
This field contains the conversion rate given by the FX service in decimals. If FX service is not opted, the value of this field is 1.
statuscodeThe status code of the transaction. Refer to the Transaction Status Codes section for details.
Note: For payment status timeout scenario, state_id = 0 is sent in response.
messageThe status message of a transaction.
pspidVelocity’s unique ID for the PSP.
nameThe name of the PSP or ACQ used for completing the transaction. This is present in the callback only if configured during onboarding.
For example – 2C2P, 2C2P-ALC, Global Payment, Worldpay, or Chase Payment.
reference_idThe transaction ID received from a PSP or ACQ. This is present in the redirect only if configured during onboarding.
idThe Velocity card ID to identify the card scheme. For example, Mastercard or Visa. If the transaction is abandoned then this attribute is not present.
mask_card_numberThe masked card of the transaction. For example, 4444XXXXXXX1111.
Note: For APM, PSE and Onsite transactions, this parameter is not sent in the redirect callback.
expiryThe card expiration date of the transaction. For example, 01/21.
Note: For APM, PSE and Onsite transactions, this parameter is not sent in the redirect callback.
nameThe card scheme/network of the transaction. For example, Visa or Mastercard.
Note: For APM, PSE and Onsite transactions, this parameter is not sent in the redirect callback.
additional_dataCUSThe payment Reference Number from SafetyPay.
Note: This parameter is sent for Safety Pay transactions only.
NITThe merchant’s code at PSE.
Note: This parameter is sent for PSE transactions only.
coupon_issue_timestampThe date and time of coupon issue by Safety Pay.
Note: This parameter will be sent for Safety Pay onsite payment transactions only.
coupon_expiryThe date and time of coupon expiry by Safety Pay.
Note: This parameter will be sent for Safety Pay onsite payment transactions only.
coupon_idThe AgreementCode sent by SafetyPay.
Note: This parameter will be sent for Safety Pay onsite payment transactions only.
receipt_filenameThe filename of the coupon generated.

6. Error Codes

6.1 Fraud Status Codes

The following table lists status codes that can be returned in the redirect from HPP against fraud_status_code.

CodeTypeDescription
3010Pre-Fraud Check InitiatedPre-Fraud Check Initiated
3011Pre-screening result - AcceptedThe pre-auth fraud check was “accepted” and no further fraud screening will be done.
3012Pre-screening fraud service unavailablePre-screening fraud service unavailable
3013Pre-screening result - unknownAn unknown error.
3014Pre-Screening fraud Result - ReviewThe fraud check was REVIEW.
3015Pre-screening result - RejectedThe pre-auth fraud check service was in REJECTED and no further payment processing will be done.
3016Pre-screening Connection Failed - RejectedPre-screening connection failed - rejected
3100Post Fraud Check requiredPost fraud check required
3111Post-screening Result - AcceptedThe post-auth fraud check was ACCEPTED.
3112Post-screening Fraud Service UnavailableSystem error from fraud check service and therefore, manual review will be required.
The payment will not be refunded or cancelled.
3113Post-Screening Result - UnknownThis state indicates an unknown error.
3114Post-screening Fraud Result - ReviewThe fraud check was REVIEW and hence manual Review will be required.
The payment will not be refunded or cancelled.
3115Post-screening Result - RejectedThe fraud check was REJECTED. The payment will be refunded or cancelled.
3116Post-screening Connection FailedVelocity could not connect to fraud check service and therefore, manual review will be required. The payment will not be refunded or cancelled.

6.2 Transaction Status Codes

The following table lists possible status codes that can be returned in the redirect from HPP against state_id.

CodeTypeDescription
10411041When velocity starts payment with provider and waits for confirmation about payment, point logs this state.
This state is useful for offline payment methods, where from Velocity side payment is process and waiting for offline provider.
2000AuthorizedThe payment has been successfully authorized by the PSP.
2001CapturedThe payment has been successfully captured by the PSP.
2010RejectedThe payment was rejected by the PSP or Acquirer.
2011DeclinedThe payment was declined by PSP / Acquirer while performing capture
2002CancelThe payment was cancelled.
5000ValidationThe validation failed.
20163D verification failed3D verification with MPI failed
2017Authorization not attempted due to rule matchedAuthorization not attempted after successful 3D verification due to rule matched

7. Order Data

Merchants from a specific domain, such as airlines, want to display booking information to customers after they make payment. For example, displaying ticket details along with address of a customer. The following is a sample of an airline data request.

{
   "order":{
      "shipping": {
          "name": "str1234",
          "street": "str1234",
          "street2": "str1234",
          "city": "str1234",
          "state": "str1234",
          "zip": "30303",
          "country": "826"
      },
      "line_items":{
         "line_item":[
            {
               "product":{
                  "sku":"ODERWS",
                  "name":"RETURN",
                  "description":"DXB-BKK:BKK-DXB",
                  "airline_data":{
                     "profiles":{
                        "profile":[
                           {
                              "seq":"1",
                              "title":"Mr",
                              "first_name":"firstname1",
                              "last_name":"lastname1",
                              "type":"ADT",
                              "contact_info":{
                                 "email":"[email protected]",
                                 "mobile":{
                                    "country_id":"640",
                                    "text":"5577868383"
                                 }
                              },
                              "additional_data":{
                                 "param":[
                                    {
                                       "name":"loyality_id",
                                       "text":"value"
                                    },
                                    {
                                       "name":"passenger_tier",
                                       "text":"value"
                                    },
                                    {
                                       "name":"passport_no",
                                       "text":"value"
                                    }
                                 ]
                              }
                           },
                           {
                              "seq":"2",
                              "title":"Mr",
                              "first_name":"Passanger2",
                              "last_name":"last2",
                              "type":"CHD",
                              "contact_info":{
                                 "email":"[email protected]",
                                 "mobile":{
                                    "country_id":"640",
                                    "text":"5577868383"
                                 }
                              },
                              "additional_data":{
                                 "param":[
                                    {
                                       "name":"passport_no",
                                       "text":"value"
                                    }
                                 ]
                              }
                           }
                        ]
                     },
                     "billing_summary":{
                          "fare_detail":{
                              "fare":[
                                 {
                                    "description":"Localization Key - ADULTBASEFARE",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"1",
                                    "product_code":"BASE",
                                    "product_category":"FARE",
                                    "product_item":"Base Fare"
                                 },
                                 {
                                    "description":"Localization Key - ADULTBASEFARE Surcharge",
                                    "currency":"PHP",
                                    "amount":"10",
                                    "profile_seq":"1",
                                    "product_code":"BASE",
                                    "product_category":"FARE",
                                    "product_item":"Internation/Domestic Surcharge"
                                 },
                                 {
                                    "description":"Localization Key - Sales Tax Colombia",
                                    "currency":"PHP",
                                    "amount":"20",
                                    "profile_seq":"1",
                                    "product_code":"YSTR",
                                    "product_category":"TAX",
                                    "product_item":"Sales Tax Colombia"
                                 },
                                 {
                                    "description":"Localization Key - International Airport Facility Charge Colombia",
                                    "currency":"PHP",
                                    "amount":"20",
                                    "profile_seq":"1",
                                    "product_code":"COAE",
                                    "product_category":"TAX",
                                    "product_item":"International Airport Facility Charge Colombia"
                                 },
                                 {
                                    "description":"Localization Key - CHILDBASEFARE",
                                    "currency":"PHP",
                                    "amount":"70.89",
                                    "profile_seq":"2",
                                    "product_code":"BASE",
                                    "product_category":"FARE",
                                    "product_item":"Base Fare"
                                 },
                                 {
                                    "description":"Localization Key - CHILDTAX",
                                    "currency":"PHP",
                                    "amount":"10",
                                    "profile_seq":"2",
                                    "product_code":"",
                                    "product_category":"TAX",
                                    "product_item":"Tax Child"
                                 }
                              ]
                           },
                           "add_ons":{
                              "add_on":[
                                 {
                                    "description":"Localization Key - SEAT PRICE",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"1",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"SEAT",
                                    "product_category":"Service",
                                    "product_item":"4C"
                                 },
                                 {
                                    "description":"Localization Key - SEAT TAX",
                                    "currency":"PHP",
                                    "amount":"10",
                                    "profile_seq":"2",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"SEAT",
                                    "product_category":"Tax",
                                    "product_item":"4C"
                                 },
                                 {
                                    "description":"Localization Key - MEAL Price",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"1",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"MEAL",
                                    "product_category":"Service",
                                    "product_item":"VEG MEAL"
                                 },
                                 {
                                    "description":"Localization Key - MEAL Price",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"2",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"MEAL",
                                    "product_category":"Service",
                                    "product_item":"Sandwich"
                                 },
                                 {
                                    "description":"Localization Key - Bicycle",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"1",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"MISC",
                                    "product_category":"Special Service",
                                    "product_item":"Bicycle"
                                 },
                                 {
                                    "description":"Localization Key - GOLF Eqp",
                                    "currency":"PHP",
                                    "amount":"110",
                                    "profile_seq":"1",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"MISC",
                                    "product_category":"Special Service",
                                    "product_item":"Golf Eqp."
                                 },
                                 {
                                    "description":"Localization Key - Wheel Chair",
                                    "currency":"PHP",
                                    "amount":"0",
                                    "profile_seq":"1",
                                    "trip_tag":"0",
                                    "trip_seq":"0",
                                    "product_code":"WCHR",
                                    "product_category":"Special Service",
                                    "product_item":"Wheel Chair"
                                 },
                                 {
                                    "description":"Localization Key - Travel Assitance",
                                    "currency":"PHP",
                                    "amount":"40",
                                    "profile_seq":"1",
                                    "trip_tag":"1",
                                    "trip_seq":"1",
                                    "product_code":"INS1",
                                    "product_category":"Service",
                                    "product_item":"INS30DAY"
                                 }
                              ]
                           }
                        
                     },
                     "trips":{
                        "trip":[
                           {
                              "tag":"1",
                              "seq":"1",
                              "origin":{
                                 "country_id":"608",
                                 "external_id":"DXB",
                                 "text":"Dubai",
                                 "time_zone":"+8:00",

                                 "terminal":"1"
                              },
                              "destination":{
                                 "country_id":"648",
                                 "external_id":"BKK",
                                 "text":"Bangkok",
                                 "time_zone":"+8:00",
                                 "terminal":"2"

                              },
                              "departure_time":"2020-05-15T23:25:00",
                              "arrival_time":"2020-05-16T13:05:00",
                              "booking_class":"E",
                              "service_level":"XL",
                              "transportation":{
                                 "code":"AV",
                                 "number":"123",
                                 "carriers":{
                                    "carrier":[
                                       {
                                          "type":"Aircraft Boeing-737-9",
                                          "code":"AV",
                                          "number":"123"
                                       }
                                    ]
                                 }
                              },
                              "additional_data":{
                                 "param":[
                                    {
                                       "name":"NONSTOP",
                                       "text":"Yes"
                                    },
                                    {
                                       "name":"fare_basis",
                                       "text":"EGHN46"
                                    }
                                 ]
                              }
                           },
                           {
                              "tag":"2",
                              "seq":"1",
                              "origin":{
                                 "country_id":"648",
                                 "external_id":"BKK",
                                 "text":"Bangkok International Airport - Terminal 3",
                                 "time_zone":"+8:00"
                              },
                              "destination":{
                                 "country_id":"608",
                                 "external_id":"DXB",
                                 "text":"Dubai International Airport - Terminal 2",
                                 "time_zone":"+8:00"
                              },
                              "departure_time":"2020-05-20T16:40:00",
                              "arrival_time":"2020-05-20T21:40:00",
                              "booking_class":"E",
                              "service_level":"XL",
                              "transportation":{
                                 "code":"AV",
                                 "number":"123",
                                 "carriers":{
                                    "carrier":[
                                       {
                                          "type":"Aircraft Boeing-737-9",
                                          "code":"AV",
                                          "number":"123"
                                       }
                                    ]
                                 }
                              },
                              "additional_data":{
                                 "param":[
                                    {
                                       "name":"fare_basis",
                                       "text":"EGHN46"
                                    }
                                 ]
                              }
                           }
                        ]
                     }
                  }
               },
               "amount":"10022",
               "additional_data":{
                  "param":[
                     {
                        "name":"pnr_creation_date",
                        "text":"2021-05-07 08:40:00"
                     },  {
                        "name":"flight_sel_url",
                        "text":"URL"
                     },
                     {
                        "name":"info_cust_url",
                        "text":"URL"
                     },
                     {
                        "name":"office_id",
                        "text":"DEAVSLK"
                     },
                     {
                        "name":"promo_code",
                        "text":"DEAV323"
                     },
                     {
                        "name":"flexi_search",
                        "text":"Yes"
                     },
                     {
                        "name":"lowest_fare",
                        "text":"Yes"
                     }
                  ]
               }
            }
         ]
      }
   }
}

7.1 Description of Order Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
shippingStringNoShipping address. Refer to Shipping Parameter Details for details.
line_itemsStringYesThe detailed information of the travel itinerary, which includes an array of line_item. Refer to Line_item Parameters for details.

7.2 Shipping Parameter Details

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
nameStringYesThe name of a customer.
streetStringYesThe first line of the address.
street2StringNoThe second line of the address.
cityStringYesThe city name.
stateStringYesThe state name.
zipIntegerYesThe zip code.
countryIntegerYesThe ISO numeric country code.

7.3 Line-item Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
productStringYesThe detailed information of travel itinerary, which includes:
  • Fare information
  • Traveller information
  • Trip Information
Refer to Product Parameters for details.
amountNumberYesThe total amount of an order.
pointsIntegerNoThe loyalty points used for this order by a customer.
rewardIntegerNoThe reward points used for this order by a customer.
quantityIntegerNoThe quantity of this line item. The default value is 1.
additional_dataStringNoInsert additional information here. For example, its key value data structure which accepts values for parameters as deviceFingerPrint, info_cust_url, office_id, flexi_search, lowest_fare.

7.4 Product Parameters

The following table provides a description of the parameters

ParameterTypeRequiredDescription
skuIntegerYesThe short code for travel itinerary. For example, PNR and order number.
nameStringYesThe name of a journey. For example, ONEWAY, RETURN, MULTICITY, MYB, and OLCI.
descriptionStringNoThe description of travel itinerary
Image_urlStringNoThe image URL of the product.
airline_dataStringNoThe low-level information of travel itinerary, which includes:
  • Fare information
  • Traveller information
  • Trip Information
Refer to Airline_data Parameters for details.

7.5 Airline-data Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
profilesArrayYesAn array of profile object, which provides traveller information for the travel itinerary. Refer to Profile Parameters for details.
billing_summaryArrayNoAn array of billing summary, which provides billing details of a journey. Refer to Billing Summary Parameters for details.
tripsArrayAn array of the trip object, which provides trip information for the travel itinerary. Refer to Trip Parameters for details.

7.6 Profile Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
seqIntegerYesThe sequence number of a passenger.
titleStringYesThe title of a passenger. For example, Mr., Mrs., or Ms.
first_nameStringYesThe first name of a passenger.
last_nameStringYesThe last name of a passenger.
typeStringYesThe type of a passenger. For example, adult, child, or infant. Refer to Passenger Type Codes for details.
contact_infoStringYesThe object which contains the following contact information of a passenger:
  • email
  • mobile
Refer to ContactInfo Sub-parameters for details
Additional_dataStringNoThe additional passenger information related to a passenger profile such as loyalty number, passenger tier, and passport number.

7.7 Billing Summary Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
fare_detailStringYesThe fare details of a journey.
add_onsStringYesThe additional information of a journey.
Refer to Add_on Sub-parameters for details.

7.8 Trip Parameters

The following table provides a description of the parameters:

ParameterTypeRequiredDescription
tagStringYesThe sequence of this journey in journeys.
seqStringYesThe sequence of this trip or layover within a journey from end to end.
originObjectYesAn object of location object which provides location information for the travel itinerary. Refer to Origin Sub-parameters for details.
destinationObjectYesAn object of location object which provides location information for the travel itinerary. Refer to Destination Sub-parameters for details
departure_timeStringYesThe departure time of flight from origin in local time.
arrival_timeStringYesThe arrival time of flight on destination in local time.
booking_classStringYesThe booking class (RBD – first letter of fare-basis). For example, H.
service_levelStringYesThe cabin class opted. For example, XL, X, M, or S.
transportationArrayYesAn array of destination location object, which provides location information for the travel itinerary.
Refer to Transportation Sub-parameters for details.
additional_dataStringNoThe additional data which contains additional trip details. For example, fare_basis and non-stop.

7.9 Description of Sub-parameters

7.9.1 Contactinfo Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
emailStringYesThe email ID of a passenger.
mobileIntegerYesThe mobile number of a passenger along with the country ID. It contains the sub-parameters country_id and mobile. Refer to Mobile Sub-parameters for details.

7.9.2 Fare Details Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
profile_seqIntegerYesThe sequence number of a passenger linked to this fare component.
descriptionStringYesThe description of the fare.
currencyNumberYesThe alpha3 ISO currency code of the fare amount.
product_codeIntegerYesThe product code of item.
product_categoryIntegerYesThe product code of category.
product_itemStringYesThe product name.
amountNumberYesThe amount charged for the product. It can be a decimal value.

Note: Fare components are associated with the profile sequence number, for example, to each passenger traveling. Each Fare component should be repeated for each passenger.

7.9.3 Add-on Sub-parameters

The following table provides a description of the sub-parameters

ParameterTypeRequiredDescription
profile_seqIntegerNoThe sequence number of a passenger linked to this add-on.
Note: This parameter is mandatory only if it is associated with a passenger.
trip_tagIntegerNoThe tag number associated with a trip, which helps identify a trip.
Note: This parameter is mandatory only if an add-on is associated with a trip.
trip_seqIntegerNoThe trip sequence number to identify the leg of the trip.
Note: This parameter is mandatory if add-on is associated with the leg a of trip.
descriptionStringYesThe description of the add-on parameters.
currencyNumberYesThe alpha3 ISO currency code of the fare amount.
product_codeIntegerYesThe code number to identify the add-on product.
product_categoryIntegerYesThe code number to identify the add-on product category.
product_itemIntegerYesThe code number to identify the add-on product item.
amountNumberYesThe amount paid for the add-on product. It can be a decimal value.

Note:

  • Add-ons can be associated with the passenger, booking, or particular leg of the booking by using the association profile_seq, trip_tag and trip_seq.
  • The Product category will be the Service and Tax will be the tax for the add-on price.

7.9.4 Origin Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
external_idStringYesThe IATA code of an airport.
country_idIntegerYesThe ISO numeric country code.
time_zoneStringYesThe time zone of the place where a journey originates.
The time zone is offset. For example, +08:00
textStringYesThe name of the city.
terminalIntegerYesThe terminal number.

7.9.5 Destination Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
external_idStringYesThe IATA code of airport.
country_idIntegerYesThe ISO numeric country code.
time_zoneStringYesThe time zone of the destination. The time zone is offset. For example, +08:00.
textStringYesThe name of the city.
terminalIntegerYesThe terminal number.

7.9.6 Transportation Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
codeStringYesThe marketing airline code for transportation. For example, 5J, PR, OD, or AV.
numberNumberYesThe operating flight number.
carriersArrayYesThe array of a carrier used in this journey. Refer to Carrier Sub-parameters for details.

7.9.7 Mobile Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
country_idIntegerYesThe three-digit numeric ISO country code of the mobile number country
textStringYesThe mobile number of a passenger.

7.9.8 Carrier Sub-parameters

The following table provides a description of the sub-parameters:

ParameterTypeRequiredDescription
typeStringYesThe aircraft type information.
For example, Aircraft Boeing-737-9.
codeStringYesThe code for operating airline. For example, PR,OD, or AV.
numberNumberYesThe flight number of an airline.

7.9.9 Passenger Type Codes

The following tables provides the applicable codes for passenger types:

TypeCodeDescription
ADTAdult
CDSenior Citizen
CHDChild
INFInfant with FAA Seat
LIEXIPSC Exempted ADT w/o doc
LIXCIPSC Exempted – Child
NRMRNon-revenue PSMR
NRSANon-revenue SA
NRSQNon-revenue SQ
PWDPax with Disability
SDStudent – Adult
SDCStudent – Child
VOUVOU PSMR
BBAG2ND Checked Bag 23 KG
CBAG3rd Checked Bag or More 23 KG
HBAGPrepaid Overweight
SPEQGolf Equipment
SPEQSki Equipment
SPEQBicycle
SPEQScuba Equipment
SPEQSurfboard up to 70 LB 32 KG
SPEQWindsurf Equip up to 70 LB 32 KG
SPEQKite Surfboard up to 22 LB 10 KG
PETCPet in Cabin
AVIHPet in Hold
ASSTTravel Assistance
UMNRUnaccompanied Minor
BLNDBlind Passenger Information
BSCTBassinet/Baby Cot Request
DEAFDeaf Passenger Information
DEPAAccompanied Deportee Information
DEPUDeportee – Accompanied by an Escort
DOCAPassenger Crew Address Information
DOCOPassenger/Crew Other Travel Related Info
DOCSPassenger/Crew Other Travel Document Info
DPNADisabled Passenger Needing Assistance
ESANPassenger with Emotional Support/Psychiatric Assistance
FOIDForm of Identification for eTicket
MEDAMedical Assistance Information
MEQTMedical Equipment
SVANPassenger with Service Animal in Cabin
WCBDWheelchair Dry-cell Battery Request
WCBWWheelchair Wet-cell Battery Request
WCHCWheelchair to Seat Request
WCHRWheelchair to Aircraft Door Request
WCHSWheelchair Up/Down Stairs Request
WCLBWheelchair Lithium-Ion Battery Request
WCMPWheelchair Manual Powered Request
WCOBWheelchair on Board Request
TIMETime to Think

8. FAQs about HPP Integration

Q: Where can I view the payment transaction?

A: After you complete the onboarding, the support team provides you login credentials and a link to the Vision console. You can use one of the modules to view all of the transaction details. You can also use Vision to cancel or refund the transactions.

Q: I have a mobile application. How can I integrate Velocity HPP?

A: CPD provides software development kits (SDKs) for mobile application.

Q: After the completion of a transaction, does a merchant’s backend server receive information about the success or failure of transaction?

A: After customers receive a confirmation of the success or failure of transaction, an asynchronous call back request is sent to your server about the success or failure of the translation. This includes information such as TXNid, status, authcode, and amount information.

Q: How do I check transaction data on front end and back end?

A:

Front end:

When HPP sends data on accept URL, it sends following transaction details in the body of the URL on the front end (accept URL) and client server (call back URL):

Back end:

When transaction is successful, Velocity sends back end data of above transaction details on that URL for both successful or failed transaction.

Note: If the transaction fails, Velocity sends information on cancel URL