The EMI Transaction API is used to initiate an EMI transaction for transactions on Android POs. Pass the parameters mentioned in the request parameters table with this method to initiate an EMI Transaction.
Method: POST
Request parameters
Parameter | Description | Example |
---|---|---|
Handler
mandatory | handler Handlers are used for sending and receiving the data within the two classes. | handler |
Device type
mandatory | string The name of the bluetooth of the respective device | DeviceType.ME30S |
Address
mandatory | string The bluetooth address incase of MAC devices. | |
Amountmandatory | string The amount that is being transacted. | 11.00 |
Transaction type
mandatory | string The type of the transaction. | PaymentTransactionConst ants.SALE/EMI |
Payment Type
mandatory | string Type of payment is POS for Mobile POS devices.(PayU have multiple payment types like POS,Wallet,qr.) | PaymentTransactionConst ants.POS |
Mobile NumberOptional | string The mobile number of the customer. | 9000000000 |
Name Optional | string The name of the customer. | |
LatitudeOptional | double Geolocation where the transaction took place. | 71.000001 |
LongitudeOptional | double Geolocation where the transaction took place. | 17.0000001 |
Merchant reference number
mandatory | string Merchant Invoice Reference Number or pass current date time stamp. [Max upto 40 characters ] | 123456 |
Cash back amount
Optional | string Pass cash back amount only for SALE WITH CASH BACK transaction type otherwise pass null value. | null |
deviceCommMode
Optional | int Select device communication mode. It’s only applicable for QPOS device rest all devices can be ‘N’. | DeviceCommunicationMode.BLUETOOTHCOMMUNICATION |
orderReferenceNo
Optional | string Order reference no (only for PayUs internal apps) | |
appName
Optional | string The name of the app. | |
appVersionOptional | string The version of the app. | |
EMImandatory | objectComplete details about EMItransaction. | REFER SECTION8.5 |
Sample request
initialization.getSelectedBankEMITenureList(selectedbankhandler, amount,
selectedBankDetails);
Response parameters
Parameter | Description | Example |
---|---|---|
ICCTransactionRes ponse | objectICCTransactionRespons returns a list of transaction details such as transactionStatus , responseMessaege etc. | Refer to ICCTransactionResponse payload objects. |
Sample response
Use this code to fetch the response of this API.
@SuppressLint("HandlerLeak")
private final Handler handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
checkFlag = true;
if (msg.what == SOCKET_NOT_CONNECTED)
{
alertMessage((String) msg.obj);
}
else if (msg.what == QPOS_ID)
{
Toast.makeText(PaymentTransactionActivity.this, (String) msg.obj,
Toast.LENGTH_LONG).show();
}
else if (msg.what == CHIP_TRANSACTION_APPROVED ||
msg.what == SWIP_TRANSACTION_APPROVED)
{
ICCTransactionResponse iCCTransactionResponse = (ICCTransactionResponse)
msg.obj;
if (iCCTransactionResponse.isSignatureRequired())
{
Intent i = new Intent(PaymentTransactionActivity.this,
SignatureCaptureActivity.class);
i.putExtra("vo", iCCTransactionResponse);
//mpaysdk 2.0
i.putExtra("paymentType", paymentType);
finish();
PaymentTransactionActivity.this.startActivity(i);
}
else
{
Intent i = new Intent(PaymentTransactionActivity.this,
TransactionDetails.class);
i.putExtra("vo", iCCTransactionResponse);
//mpaysdk 2.0
i.putExtra("paymentType", paymentType);;
f
inish();
PaymentTransactionActivity.this.startActivity(i);
}
}
else if (msg.what == CHIP_TRANSACTION_DECLINED ||
msg.what == SWIP_TRANSACTION_DECLINED)
{
ICCTransactionResponse vo = (ICCTransactionResponse) msg.obj;
Intent i = new Intent(PaymentTransactionActivity.this,
TransactionDetails.class);
i.putExtra("vo", vo);
i.putExtra("paymentType", paymentType);
PaymentTransactionActivity.this.startActivity(i);
Toast.makeText(PaymentTransactionActivity.this, "Transaction Status : " +
vo.getResponseCode() + ":" + vo.getResponseMessage(), Toast.LENGTH_LONG).show();
finish();
}
else if (msg.what == QPOS_DEVICE)
{
alertMessage((String) msg.obj);
}
else if (msg.what == TRANSACTION_FAILED)
{
ICCTransactionResponse vo = (ICCTransactionResponse) msg.obj;
if (paymentType.equalsIgnoreCase(EMI))
{
Intent i = new Intent(PaymentTransactionActivity.this,
TransactionDetails.class);
i.putExtra("vo", vo);
i.putExtra("paymentType", paymentType);
PaymentTransactionActivity.this.startActivity(i);
Toast.makeText(PaymentTransactionActivity.this, "Transaction Status :
" + vo.getResponseCode() + ": " + vo.getResponseMessage(), Toast.LENGTH_LONG).show();
finish();
}
else
{
Toast.makeText(PaymentTransactionActivity.this, "Transaction Status :
" + vo.getResponseCode() + ": " + vo.getResponseMessage(), Toast.LENGTH_LONG).show();
finish();
}
}
else if (msg.what == TRANSACTION_INITIATED)
{
Toast.makeText(PaymentTransactionActivity.this, msg.obj.toString(),
Toast.LENGTH_LONG).show();
}
else if (msg.what == ERROR_MESSAGE)
{
alertMessage((String) msg.obj);
}
else if (msg.what == TRANSACTION_PENDING)
{
Toast.makeText(PaymentTransactionActivity.this,
(String) msg.obj + "Pending status", Toast.LENGTH_SHORT).show();
finish();
}
else if (msg.what == DISPLAY_STATUS)
{
Toast.makeText(PaymentTransactionActivity.this,
(String) msg.obj, Toast.LENGTH_SHORT).show();
}
else if (msg.what == QPOS_EMV_MULITPLE_APPLICATION)
{
ArrayList<String> applicationList = (ArrayList < String>) msg.obj;
emvList = (ListView) findViewById(R.id.application_list);
emvList.setVisibility(View.VISIBLE);
ArrayAdapter<String> adapter = new
ArrayAdapter<String> (PaymentTransactionActivity.this,
android.R.layout.simple_list_item_1, applicationList);
emvList.setAdapter(adapter);
emvList.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<? > parent, View view,
int position, long id)
{
if (initialization != null)
{
initialization.getQposListener().executeSelectedEMVApplication(position);
emvList.setVisibility(View.GONE);
}
} });
}
else if (msg.what == SUCCESS)
{
Toast.makeText(PaymentTransactionActivity.this,
(String) msg.obj, Toast.LENGTH_SHORT).show();
Intent i = new Intent(PaymentTransactionActivity.this,
MainActivity.class);
finish();
PaymentTransactionActivity.this.startActivity(i);
}
}