Custom – Card

  • RSA Encrypt Data
  • Custom – 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 Java SDK Version <= 1.0.1, the imports should be:
from phonepe.sdk.pg.payments

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

Example – RSA Encrypt Data

import com.phonepe.sdk.pg.Env;
import com.phonepe.sdk.pg.common.http.PhonePeResponse;
import com.phonepe.sdk.pg.payments.v1.PhonePePaymentClient;

String merchantId = "<merchantId>";
String saltKey = "<saltKey>";
Integer saltIndex = "<saltIndex>";
Env env = Env.UAT;
boolean shouldPublishEvents = true;
PhonePePaymentClient phonepeClient = new PhonePePaymentClient(merchantId, saltKey, saltIndex, env, shouldPublishEvents);

String data= "105";
String publicKey = "<publicKey>";
String encryptedData = phonepeClient.encryptData(data, publicKey);

Returns

The encrypted data.

Custom – Card

This method is used to initiate a 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.
save_cardboolYesIndicates whether to save the card details for future use.
encrypted_card_numberstrYesThe encrypted card number.
encryption_key_idintYesThe ID of the encryption key used for encrypting the card details.
card_holder_namestrYesThe name of the card holder.
expiry_monthstrYesThe expiration month of the card.
expiry_yearstrYesThe expiration year of the card.
encrypted_cvvstrYesThe encrypted CVV (Card Verification Value) of the card.
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.
address_line1strNoThe first line of the cardholder’s billing address.
address_line2strNoThe second line of the cardholder’s billing address.
address_citystrNoThe city of the cardholder’s billing address.
address_statestrNoThe state of the cardholder’s billing address.
address_zipstrNoThe ZIP or postal code of the cardholder’s billing address.
address_countrystrNoThe country of the cardholder’s billing address.

Example (Custom – Card)

import com.phonepe.sdk.pg.Env;
import com.phonepe.sdk.pg.common.http.PhonePeResponse;
import com.phonepe.sdk.pg.payments.v1.PhonePePaymentClient;
import com.phonepe.sdk.pg.payments.v1.models.request.PgPayRequest;
import com.phonepe.sdk.pg.payments.v1.models.response.CardInstrumentResponse;
import com.phonepe.sdk.pg.payments.v1.models.response.PgPayResponse;
import java.util.UUID;

String merchantId = "<merchantId>";
String saltKey = "<saltKey>";
Integer saltIndex = "<saltIndex>";
Env env = Env.UAT;
boolean shouldPublishEvents = true;
PhonePePaymentClient phonepeClient = new PhonePePaymentClient(merchantId, saltKey, saltIndex, env, shouldPublishEvents);

long amount = 100;
String merchantTransactionId = UUID.randomUUID().toString().substring(0,34);
String redirecturl = "https://merchant.com/redirectUrl";
String callbackurl = "https://www.merchant.com/callback";
String merchantUserId = "merchantUserId";

String authMode = "3DS";
boolean saveCard = true;
String encryptedCvv = "encryptedCvv";
String encryptedCard = "encryptedCard";
String expiryMonth = "12";
String expiryYear = "2099";
Long encryptionKeyId = 1L;
String cardHolderName = "cardHolderName";

PgPayRequest pgPayRequest = PgPayRequest.CardPayRequestBuilder()
        .amount(amount)
        .merchantId(merchantId)
        .merchantTransactionId(merchantTransactionId2)
        .callbackUrl(callbackurl)
        .redirectUrl(redirecturl)
        .merchantUserId(merchantUserId)
        .encryptedCvv(encryptedCvv)
        .expiryMonth(expiryMonth)
        .expiryYear(expiryYear)
        .encryptionKeyId(encryptionKeyId)
        .cardHolderName(cardHolderName)
        .encryptedCardNumber(encryptedCard)
        .saveCard(saveCard)
        .authMode(authMode)
        .build();

PhonePeResponse<PgPayResponse> payResponse = phonepeClient.pay(pgPayRequest);
CardInstrumentResponse cardInstrumentResponse = (CardInstrumentResponse) payResponse.getData().getInstrumentResponse();
String url = cardInstrumentResponse.getRedirectInfo().getUrl();

Returns

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