Custom – Saved Card

  • RSA Encrypt Data
  • Custom – Saved Card

RSA Encrypt Data

This method is used to RSA Encrypt the data with the provided public key.

Parameters

ParameterTypeMandatoryDescription
datastrYesThe data to encrypt, generally it is the card number or the card cvv.
public_keystrYesThe public key provided by PhonePe.

For Python SDK Version **\ 0.0.3**, the imports should be:
from phonepe.sdk.pg.payments.**v1**”

For Python SDK Version <= 0.0.3, the imports should be:
from phonepe.sdk.pg.payments

For Python SDK Version > 0.0.3, the imports should be:
from phonepe.sdk.pg.payments.v1

Example – RSA Encrypt Data

from phonepe.sdk.pg.payments.v1.payment_client import PhonePePaymentClient
from phonepe.sdk.pg.env import Env

merchant_id = "<YOUR_MERCHANT_ID>"
salt_key = "<YOUR_SALT_KEY>"
salt_index = 1 # insert your salt index
env = Env.UAT
should_publish_events = True
phonepe_client = PhonePePaymentClient(merchant_id, salt_key, salt_index, env, should_publish_events)

sensitive_data = "<CARD_CVV>"
public_key = "<YOUR_PUBLIC_KEY>"

encrypted_data = phonepe_client.encrypt_data(data=sensitive_data, public_key=public_key)

Returns

The encrypted data.

Custom – Saved Card

This method is used to initiate a Saved Card via the PhonePe PG Custom Checkout

Parameters

ParameterTypeMandatoryDescription
merchant_transaction_idstrYesThe unique transaction ID assigned by the merchant.
Note:
– merchantTransactionId length should be less than 35 characters
– No Special characters allowed except underscore “_” and hyphen “-“
amountintYesThe amount of the payment. In paise. Minimum 100 i.e. 1 rupee
auth_modestrYesThe authentication mode for the card payment. Generally 3DS is used.
card_idboolYesThe ID of the saved card. You can find this in the callback from the callback of Card instrument, when save_card=True
encrypted_cvvstrYesThe encrypted CVV (Card Verification Value) of the card.
encryption_key_idintYesThe ID of the encryption key used for encrypting the card details.
merchant_user_idstrNoThe ID assigned to the user by the merchant.
Note:
– merchantUserId length should be less than 36 characters
– No Special characters allowed except underscore “_” and hyphen “-“
redirect_urlstrNoThe UI URL to redirect the user after a successful payment.
redirect_modestrNoThe mode of redirection after payment completion.
callback_urlstrNoThe S2S callback URL to which status notifications will be sent.
callback_modestrNoThe mode of callback handling.
merchant_order_idstrNoThe ID of the order assigned by the merchant.
device_osstrNoThe operating system of the device used for the payment. Possible values: ANDROID or IOS.

Example (Custom – Saved Card)

import uuid
from phonepe.sdk.pg.payments.v1.models.request.pg_pay_request import PgPayRequest
from phonepe.sdk.pg.payments.v1.payment_client import PhonePePaymentClient
from phonepe.sdk.pg.env import Env

merchant_id = "<YOUR_MERCHANT_ID>"
salt_key = "<YOUR_SALT_KEY>"
salt_index = 1 # insert your salt index
env = Env.UAT
should_publish_events = True
phonepe_client = PhonePePaymentClient(merchant_id, salt_key, salt_index, env, should_publish_events)

unique_transaction_id = str(uuid.uuid4())[:-2]
s2s_callback_url = "https://www.merchant.com/callback"
amount = 100
id_assigned_to_user_by_merchant = '<YOUR_USER_ID>'
saved_card_id_from_response = "<CARD_ID>"
encryption_key_id = 2 # Insert your encryption key id
encrypted_cvv = "<ENCRYPTED_CVV>"  # can use encrypt_data function
saved_card = PgPayRequest.saved_card_pay_request_builder(merchant_transaction_id=unique_transaction_id,
                                                         amount=amount,
                                                         auth_mode="3DS",
                                                         card_id=saved_card_id_from_response,
                                                         encrypted_cvv=encrypted_cvv,
                                                         encryption_key_id=encryption_key_id)
pay_page_response = phonepe_client.pay(saved_card)

Returns

The pay function returns a PgPayResponse object. With SavedCardInstrumentResponse object in data.