Supported Payment Types

Lists various payment types supported by SDK and additional parameters supported.

  • Credit Card/Debit Card/Stored Card(Use PayuConstants.CC)

  • NetBanking (Use PayUConstants.NB)

  • NEFT/RTGS(Use PayUConstants.NEFT_RTGS)

  • EMI (Use PayUConstants.EMI)

  • No Cost EMI (Use PayUConstants.EMI)

  • Cash Cards/Wallets (Use PayUConstants.CASH)

  • PayU Money (Use PayUConstants.PAYU_MONEY)

  • Intent (Use PayUConstants.UPI_INTENT)

  • UPI (Use PayUConstants.UPI)

  • Google Pay (Use PayUConstants.TEZ)

  • PhonePe (Use PayUConstants.PHONEPE_INTENT)

  • LazyPay (Use PayUConstants.LAZYPAY)

  • TwidPay (Use PayUConstants.PAY_BY_REWARDS)

  • Sodexo (Use PayUConstants.SODEXO)

Below are the additional parameters that can be configured in PaymentParams object created earlier for various PaymentTypes.

Credit Card/Debit Card

  mPaymentParams.setCardNumber(cardNumber);
  mPaymentParams.setCardName(cardName);
  mPaymentParams.setNameOnCard(cardholderName);
  mPaymentParams.setExpiryMonth(expiryMonth);// MM
  mPaymentParams.setExpiryYear(expiryYear);// YYYY  
  mPaymentParams.setCvv(cvv);

For Recurring Payments in Credit/Debit Card

For Recurring payment in CC/DC, merchant need to collect below details

 SIParams siParams = new SIParams();
 siParams.setCcCardType("CC"); //This will be DC for Debit Card
 siParams.setCcCategory("MAST"); //Card scheme

Set this siParams in Payment Params created here

Stored Cards

mPaymentParams.setCardToken(cardToken);
mPaymentParams.setCvv(cvv);
mPaymentParams.setNameOnCard(cardName);
mPaymentParams.setExpiryMonth(expiryMonth);// MM
mPaymentParams.setExpiryYear(expiryYear);// YYYY  
mPaymentParams.setCardName(storedCard.getCardName());

Tokenisation

For cards tokenised outside PayU platform merchant needs to pass below parameters.

  1. mPaymentParams.setCardTokenType(1); //it should be passed as 1
    TokenizedCardAdditionalParam additionalParam = new TokenizedCardAdditionalParam();
    additionalParam.setLast4Digits("1234"); //last 4 digits of card
    additionalParam.setTavv("1234"); //tavv -> will be given by tokenisation partner
    additionalParam.setTrid("1234"); //trid -> will be given by tokenisation partner
    additionalParam.setTokenRefNo("1234"); //tokenRefNo -> will be given by tokenisation partner
    mPaymentParams.setTokenizedCardAdditionalParam(additionalParam);

NetBanking

Get the bankCode (String) of selected bank from your spinner/list view adapter and add it to the mPaymentParams created above

  mPaymentParams.setBankCode(bankCode);

For Recurring Payments in NetBanking

For Recurring payment in NB, merchant need to collect below details

  BeneficiaryDetails beneficiaryDetails = new BeneficiaryDetails();
  beneficiaryDetails.setBeneficiaryName("John Doe");
  beneficiaryDetails.setBeneficiaryAccountNumber("51234567890");
  beneficiaryDetails.setBeneficiaryAccountType(BeneficiaryAccountType.SAVINGS);
  beneficiaryDetails.setBeneficiaryIfsc("ICIC0006621")
  beneficiaryDetails.setVerificationMode("Net Banking"); // It can be either Net Banking or Debit Card  

  SIParams siParams = new SIParams();
  siParams.setBeneficiarydetail(beneficiaryDetails);

Beneficiary Details Params Definition

Parameter

Type

Description

Beneficiary Name

String

Account Holder Beneficiary name

Beneficiary Account Number

String

Account number of Beneficiary

Beneficiary Account Type

Enum of BeneficiaryAccountType

Accepted values are BeneficiaryAccountType.SAVINGS, BeneficiaryAccountType.CURRENT

Beneficiary IFSC

String

Valid IFSC

Set this siParams in Payment Params created here . For SI, NetBanking list can be get by consuming the getSiBankList() from payuResponse received in onPaymentRelatedDetailsResponse() callback as mentioned here. Set the NB bankCode as received in this list in payment params as below

mPaymentParams.setBankCode("HDFCENCC");

EMI

Get the bankCode (String) of selected bank from your spinner/list view adapter and add it to the mPaymentParamsalong with card details as below

mPaymentParams.setCardNumber(“5123456789012346”);  
mPaymentParams.setNameOnCard(“test”); 
mPaymentParams.setExpiryMonth(“06”); 
mPaymentParams.setExpiryYear(“2023”); 
mPaymentParams.setCvv(“123”);  
mPaymentParams.setBankCode(“EMI03”); 

CardLess EMI

For doing CardLess EMI transactions, setCardLess should be set to true along with setting BankCode in payment params as below

  mPaymentParams.setBankCode("ZESTMON"); //For Zestmoney CardLess EMI 
  mPaymentParams.setCardlessEMI(true);

For doing Zestmoney CardLess EMI transactions, phone number should also be set in payment params as below

mPaymentParams.setPhone("9000000000");

No Cost EMI

For making no cost EMI transactions, subvention amount needs to be sent along with above EMI params

mPaymentParams.setSubventionAmount(“4000”); 

To get list of No Cost EMI supporting banks, pass var2 as "all" in Merchant Web Service for GetPaymentRelatedDetailsTask. More details on Merchant Web Service is here.

Hash Formula

If subventionAmount is passed than hash formula for payment hash will be

sha512(key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5||||||SALT|SubventionAmount)

Otherwise, it will remain the same as earlier.

Cash Card

mPaymentParams.setBankCode(bankCode);

UPI

mPaymentParams.setVpa(virtualPaymentAddress)

Validations for virtual payment address

  • Vpa length should be less than or equal to 50

  • Regex for VPA : value.match(/^([A-Za-z0-9.])+@[A-Za-z0-9]+$/)

LazyPay

Notify(Callback) URL of merchant where notification of transaction status will be sent on completion of transaction. It should be HTTPS.

mPaymentParams.setNotifyURL(<Merchant Callback Url>);

TwidPay

To Pay using TwidPay, create the postdata with PayuConstants.PAY_BY_REWARDS.

After a successful payment, you would get the Twid customer hash in field5 params of PayuResponse, which would use it for the next transaction to skip authentication.

mPaymentParams.setTwidCustomerHash("Twid customer hash");

Sodexo

To Pay using Sodexo, create the post data with PAYMENT_PG_SODEXO :

mPaymentParams.setCardNumber(cardNumber);
  mPaymentParams.setCardName(cardName);
  mPaymentParams.setNameOnCard(cardholderName);
  mPaymentParams.setExpiryMonth(expiryMonth);// MM
  mPaymentParams.setExpiryYear(expiryYear);// YYYY  
  mPaymentParams.setCvv(cvv);

After a successful payment, you would get the Sodexo source id in the field3 param of PayuResponse, which can be used to show and get stored Sodexo card details and also can be used for initiate payment.

mPaymentParams.setsodexoSourceId("srcid123")

Last updated