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
from phonepe.sdk.pg.common.models.request.meta_info import MetaInfo
client_id = "<client_id>"
client_secret = "<client_secret>"
client_version = 1 # 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
auth_mode = "3DS"
encrypted_card_number = "<encryptedCardNumber>"
encrypted_cvv = "<encryptedCvv>"
merchant_user_id = "<merchantUserId>"
card_holder_name = "<cardHolderName>"
expiry_year = "2052"
expiry_month = "08"
ui_redirect_url = "<URL_TO_REDIRECT_USER>"
meta_info = MetaInfo() \
.udf1("free-text-value-1") \
.udf2("free-text-value-2") \
.udf3("free-text-value-3") \
.udf4("free-text-value-4") \
.udf5("free-text-value-5") \
.udf6("free-text-value-6") \
.udf7("free-text-value-7") \
.udf8("free-text-value-8") \
.udf9("free-text-value-9") \
.udf10("free-text-value-10") \
.udf11("ref_11") \
.udf12("tag-12") \
.udf13("user@13") \
.udf14("code.14") \
.udf15("val+15") \
.build()
custom_checkout_pay_request = PgPaymentRequest.build_card_pay_request(
merchant_order_id=merchant_order_id,
amount=amount,
encryption_key_id=encryption_key_id,
encrypted_cvv=encrypted_cvv,
auth_mode=auth_mode,
encrypted_card_number=encrypted_card_number,
merchant_user_id=merchant_user_id,
card_holder_name=card_holder_name,
expiry_month=expiry_month,
expiry_year=expiry_year,
redirect_url=ui_redirect_url,
meta_info=meta_info)
custom_checkout_pay_response = custom_checkout_client.pay(custom_checkout_pay_request)
redirect_url = custom_checkout_pay_response.redirect_url