TOKEN

Request Details

Parameter NameData TypeMandatoryDescription
merchantOrderIdStringyesUnique order ID generated by merchant
amountlongyesAmount of order in Paisa
contraintsListyesDifferent type of constraints that must be applied to the payment
authModeStringyesDefault to 3DS
encryptionKeyIdlongyesKeyId of key which merchant uses to encrypt card number & cvv.
encryptedTokenStringyesEncrypted TOKEN number which merchant passes to process card transaction
encryptedCvvStringyesEncrypted CVV of the card with which payment is being initiated.
cryptogramStringyesThe cryptogram fetched from the gateway where the card was tokenized.
panSuffixStringyesLast four digits of card number
cardHolderNameStringyesCard Holder Name
expiryMonthStringyesToken expiry month
expiryYearStringyesToken expiry year
merchantUserIdStringyesThe unique identifier of the merchant user. It is used to associate the payment with a specific user.

Example :

import uuid

from phonepe.sdk.pg.payments.v2.custom_checkout_client 
import CustomCheckoutClient

from phonepe.sdk.pg.env 
import Env 
from phonepe.sdk.pg.common.models.request.pg_payment_request 
import PgPaymentRequest  
 
client_id = "<client_id>"
client_secret = "<client_secret>"
client_version = <client_version>  # insert your client version here
env = Env.SANDBOX  # change to Env.PRODUCTION when you go live
 
custom_checkout_client = CustomCheckoutClient.get_instance(client_id=client_id,
                                                           client_version=client_version,
                                                           client_secret=client_secret,
                                                           env=env)
 
merchant_order_id = str(uuid.uuid4())
amount = 100
encryption_key_id = 10
encrypted_cvv = "<encryptedCvv>"
auth_mode = "3DS"
pan_suffix = "7239"
cryptogram = "<cryptogram>"
encrypted_token = "<encryptedToken>"
merchant_user_id = "<merchantUserId>"
card_holder_name = "<cardHolderName>"
expiry_year = "2050"
expiry_month = "08"
ui_redirect_url = "<URL_TO_REDIRECT_USER>"
 
custom_checkout_pay_request = PgPaymentRequest.build_token_pay_request(amount=amount,
                                                                               merchant_order_id=merchant_order_id,
                                                                               auth_mode=auth_mode,
                                                                               encryption_key_id=encryption_key_id,
                                                                               encrypted_cvv=encrypted_cvv,
                                                                               pan_suffix=pan_suffix,
                                                                               cryptogram=cryptogram,
                                                                               card_holder_name=card_holder_name,
                                                                               expiry_month=expiry_month,
                                                                               expiry_year=expiry_year,
                                                                               merchant_user_id=merchant_user_id,
                                                                               encrypted_token=encrypted_token,
                                                                               redirect_url=ui_redirect_url)
 
custom_checkout_pay_response = custom_checkout_client.pay(custom_checkout_pay_request)
redirect_url = custom_checkout_pay_response.redirect_url

Extract the redirectUrl from the response received

Response Details

PropertyTypeDescription
orderIdStringOrder Id created by PhonePe
stateStringState of the order. Initially it will be PENDING.
expireAtLongOrder expire date in epoch
redirectUrlStringRedirect url to perform the transaction
Is this article helpful?