Step 1: Creating the Token
You should know that This step can be used and will behave the same in the following integration types:(Hosted Payment Page, Invoices, Managed Form, Own Form).
The first thing you need to create a token is to create a basic payment request with the required information via any integration type that suits your business needs more, as mentioned in the previous step "Initiating the Payment Request", but with including the below parameters as a MUST among the original request payload.
The Endpoint and Related Postman Collection​
In this manual, we will rely on the PayTabs Hosted Payment Page API Endpoint, mentioned on PayTabs API endpoints postman collection, which you can access fromPayTabs Postman APIs Collection. The endpoint will need to be accessed with a POST request on the below-mentioned URL
POST | {{domain}}/payment/request |
---|
Please note that not using the proper endpoint URL {domain} will lead to authentication issues within your responses. To find the your proper domain you can read ourWhat is my (Region)/(endpoint URL)?tutorial article.
- KSA
- UAE
- Egypt
- Oman
- Jordan
- Kuwait
- Global
https://secure.paytabs.sa/payment/request
https://secure.paytabs.com/payment/request
https://secure-egypt.paytabs.com/payment/request
https://secure-oman.paytabs.com/payment/request
https://secure-jordan.paytabs.com/payment/request
https://secure-kuwait.paytabs.com/payment/request
https://secure-global.paytabs.com/payment/request
The Required Parameters​
Along with the required parameters specified in "Step 3" of the integration type you are using, you will need ot use the following parameter:
-
tokenise
Parameter tokenise
Description The tokenization format the generated token should follow. Hosted Payment Page APIs | Token Based Transactions .
To know more about this parameter please click here.Data Type STRING Required ✘ Validation Rules Pass one of the following list: 1
- no tokenization2
- Hex323
- AlphaNum204
- Digit225
- Digit166
- AlphaNum32
Sample {
"tokenise": 2,
}
Request & Response Payloads Samples​
- Hosted Payment Page
- Invoices
- Managed Form
- Own Form
- Request Sample Payload
- Response Sample Payload
You should know that the Return & callback parameters are not required, but you should use them to receive the generated token.
{
"profile_id": {{profile_id}},
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 25000.2,
"cart_currency": "SAR",
"tokenise": 2,
"callback": "{Your CallBack URL}",
"return": "{Your Return URL}"
}
{
"tran_ref": "TST22********159",
"tran_type": "Sale",
"cart_id": "CART#1001",
"cart_description": "Description of the items/services",
"cart_currency": "SAR",
"cart_amount": "500.00",
"return": "none",
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4817FD44318539688688",
"serviceId": 2,
"profileId": 9*****4,
"merchantId": 1*****7,
"trace": "PMN****4.63****A8.00****C4"
}
- Request Sample Payload
- Response Sample Payload
{
"profile_id": "987###",
"tran_type": "sale",
"tran_class": "ecom",
"cart_id": "CART#1001",
"cart_currency": "SAR",
"cart_amount": 500,
"cart_description": "Description of the items/services",
"tokenise": 2,
"invoice": {
"line_items": [
{
"unit_cost": 100,
"quantity": 5,
}
]
}
},
"callback": "{Your CallBack URL}",
"return": "{Your Return URL}"
{
"invoice_id": 2072841,
"invoice_link": "https://secure.paytabs.com/payment/request/invoice/2072841/A8CB6A4667A444E79E868206DB76382A"
}
- Request Sample Payload
- Response Sample Payload
You should know that the Return & callback parameters are not required, but you should use them to receive the generated token.
{
"profile_id": {{profile_id}},
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 25000.2,
"cart_currency": "SAR",
"payment_token": "{your payment token}",
"tokenise": 2,
"customer_details": {
"name": "first last",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "dubai",
"state": "du",
"country": "AE",
"zip": "12345"
},
"callback": "{Your CallBack URL}",
"return": "{Your Return URL}"
}
{
"tran_ref": "TST22********159",
"tran_type": "Sale",
"cart_id": "CART#1001",
"cart_description": "Description of the items/services",
"cart_currency": "SAR",
"cart_amount": "500.00",
"return": "none",
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4817FD44318539688688",
"customer_details": {
"name": "first last",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "dubai",
"state": "du",
"country": "AE",
"zip": "12345"
},
"serviceId": 2,
"profileId": 9*****4,
"merchantId": 1*****7,
"trace": "PMN****4.63****A8.00****C4"
}
- Request Sample Payload
- Response Sample Payload
You should know that the Return & callback parameters are not required, but you should use them to receive the generated token.
{
"profile_id": {{profile_id}},
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 25000.2,
"cart_currency": "SAR",
"card_details": {
"pan": "4111111111111111",
"cvv": "123",
"expiry_month": 12,
"expiry_year": 2023
},
"tokenise": 2,
"customer_details": {
"name": "first last",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "dubai",
"state": "du",
"country": "AE",
"zip": "12345"
},
"callback": "{Your CallBack URL}",
"return": "{Your Return URL}"
}
{
"tran_ref": "TST22********159",
"tran_type": "Sale",
"cart_id": "CART#1001",
"cart_description": "Description of the items/services",
"cart_currency": "SAR",
"cart_amount": "500.00",
"return": "none",
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4817FD44318539688688",
"customer_details": {
"name": "first last",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "dubai",
"state": "du",
"country": "AE",
"zip": "12345"
},
"serviceId": 2,
"profileId": 9*****4,
"merchantId": 1*****7,
"trace": "PMN****4.63****A8.00****C4"
}
Expected Payment Flow Behavior​
- Hosted Payment Page
- Invoices
- Managed Form
- Own Form
- First, you should initiate a payment by following the steps mentioned in Hosted Payment Page | Initiating the Payment manual.
- Next, you should use the
tokenise
parameter within your request as clarified in the above Sample Request Payload. - Then, you will receive a response that includes redirect URL. This means you have initiated a correct payment request/page successfully.
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4818688",
- Next, you should redirect your customer to this URL so the payment process can be finalized.
- After this, your customer would proceed normally with payment by providing his card information.
- Then, he will be redirected to his issuer bank 3DS/OTP page to authenticate the used card
- Finally, he would be redirected to a success/error page accordingly. By this time, you will receive the full transaction response in the specified return or callback urls, which will contain the generated token as shown below:
{
.
.
.
"token":"{Generated Token}"
.
.
.
} - Finally, you should save this
token
in you database so that you can use it to create token-based transactions.
- First, you should initiate a payment by following the steps mentioned in Hosted Payment Page | Initiating the Payment manual.
- Next, you should use the
tokenise
parameter within your request as clarified in the above Sample Request Payload. - Then, you will receive a response that includes redirect URL or link URL based on the used endpoint. This means you have initiated a correct invoice request successfully.
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4818688",
"invoice_link": "https://secure.paytabs.com/payment/request/invoice/2072841/A8CB6A4667A444E79E868206DB76382A",
- Next, you should redirect your customer to this URL so the payment process can be finalized.
- After this, your customer would proceed normally with payment by providing his card information.
- Then, he will be redirected to his issuer bank 3DS/OTP page to authenticate the used card
- Next, he would be redirected to a success/error page accordingly. By this time, you will receive the full transaction response in the specified return or callback urls, which will contain the generated token as shown below:
{
.
.
.
"token":"{Generated Token}"
.
.
.
} - Finally, you should save this
token
in you database so that you can use it to create token-based transactions.
- First, you should initiate a payment by following the steps mentioned in Hosted Payment Page | Initiating the Payment manual.
- Next, you should use the
tokenise
parameter within your request as clarified in the above Sample Request Payload. - Then, you will receive a response that includes redirect URL or the full payment response based on the customer card type (3DS OR Not). This means you have initiated a correct payment request successfully.
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4818688",
- Next and in case of 3DS cards, you should redirect your customer to this URL so the payment process can be finalized.
- After this, your customer would proceed normally with payment by providing his card information.
- Then, he will be redirected to his issuer bank 3DS/OTP page to authenticate the used card
- Next, he would be redirected to a success/error page accordingly. By this time, you will receive the full transaction response in the specified return or callback urls, which will contain the generated token as shown below:
{
.
.
.
"token":"{Generated Token}"
.
.
.
} - Finally, you should save this
token
in you database so that you can use it to create token-based transactions.
- First, you should initiate a payment by following the steps mentioned in Hosted Payment Page | Initiating the Payment manual.
- Next, you should use the
tokenise
parameter within your request as clarified in the above Sample Request Payload. - Then, you will receive a response that includes redirect URL or the full payment response based on the customer card type (3DS OR Not). This means you have initiated a correct payment request successfully.
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4818688",
- Next and in case of 3DS cards, you should redirect your customer to this URL so the payment process can be finalized.
- After this, your customer would proceed normally with payment by providing his card information.
- Then, he will be redirected to his issuer bank 3DS/OTP page to authenticate the used card
- Next, he would be redirected to a success/error page accordingly. By this time, you will receive the full transaction response in the specified return or callback urls, which will contain the generated token as shown below:
{
.
.
.
"token":"{Generated Token}"
.
.
.
} - Finally, you should save this
token
in you database so that you can use it to create token-based transactions.