Take payment
Once initialization is completed, you can start using the myPOS SDK Android to accept card payments.
Variant 1. Payment via internal SDK activity: Amount and transaction reference are optional parameters and can be set as null.
mPOSHandler.openPaymentActivity(
MainActivity.this /*activity*/,
REQUEST_CODE_MAKE_PAYMENT /*requestCode*/,
"10.50" /*amount*/,
UUID.randomUUID().toString()/*transaction reference*/
);
Variant 2. Payment via direct SDK method: Transaction reference is an optional parameter and can be set as null.
POSHandler.getInstance().purchase(PaymentParams.builder()
.productAmount("13.37")
.currency("EUR")
.tipAmount("1.55")
.receiptConfiguration(POSHandler.RECEIPT_PRINT_AUTOMATICALLY)
.operatorCode("1234")
.reference("asd123asd", ReferenceType.REFERENCE_NUMBER)
.preauthTransaction(false)
.motoTransaction(false)
.build());
Handle payment result
Variant 1. Payment via internal SDK activity:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if( requestCode == REQUEST_CODE_MAKE_PAYMENT && resultCode == RESULT_OK) {
TransactionData transactionData = data.getParcelableExtra(POSHandler.INTENT_EXTRA_TRANSACTION_DATA);
// Handle the response here
}
}
Variant 2. Payment via direct SDK method:
mPOSHandler.setPOSInfoListener(new POSInfoListener() {
@Override
public void onPOSInfoReceived(final int command, final int status, final String description) {
// Handle the response here
}
@Override
public void onTransactionComplete(final TransactionData transactionData) {
// Handle the response here
}
});
POSHandler.getInstance().setTransactionClearedListener(new PosTransactionClearedListener() {
@Override
public void onComplete(int phStatus) {
// transaction is cleared and fully completed, terminal is ready for new operations
}
});
See POS Info statuses for more information
Refund
With Refund, the host application could initiate a refund transaction to the customers’ card account with the specified amount.
Variant 1. Refund via internal SDK activity: Amount and transaction reference are optional parameters and can be set as null.
mPOSHandler.openRefundActivity(
MainActivity.this /*activity*/,
REQUEST_CODE_MAKE_REFUND /*requestCode*/,
"10.50" /*amount*/,
UUID.randomUUID().toString()/*transaction reference*/
);
Variant 2. Refund via direct SDK method: Transaction reference is an optional parameter and can be set as null.
POSHandler.getInstance().refund(RefundParams.builder()
.refundAmount("13.37")
.currency("EUR")
.receiptConfiguration(POSHandler.RECEIPT_PRINT_AUTOMATICALLY)
.motoTransaction(false)
.build());
Handle refund result
Variant 1. Refund via internal SDK activity:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if( requestCode == REQUEST_CODE_MAKE_REFUND && resultCode == RESULT_OK) {
TransactionData transactionData = data.getParcelableExtra(POSHandler.INTENT_EXTRA_TRANSACTION_DATA);
// Handle the response here
}
}
Variant 2. Refund via direct SDK method:
mPOSHandler.setPOSInfoListener(new POSInfoListener() {
@Override
public void onPOSInfoReceived(final int command, final int status, final String description) {
// Handle the response here
}
@Override
public void onTransactionComplete(final TransactionData transactionData) {
// Handle the response here
}
});
POSHandler.getInstance().setTransactionClearedListener(new PosTransactionClearedListener() {
@Override
public void onComplete(int phStatus) {
// transaction is cleared and fully completed, terminal is ready for new operations
}
});
See POS Info statuses for more information
Pre-authorization
Make a Pre-authorization via direct SDK method. This will lock the funds from the client's account until the pre-authorization is completed or cancelled.
POSHandler.getInstance().purchase(PaymentParams.builder()
.productAmount("13.37")
.receiptConfiguration(POSHandler.RECEIPT_PRINT_AUTOMATICALLY)
.reference("asd123asd", ReferenceType.REFERENCE_NUMBER)
.preauthTransaction(true)
.motoTransaction(false)
.build());
Pre-authorization completion
Make a Pre-authorization completion via direct SDK method. This will take the funds from the client's account.
POSHandler.getInstance().preAuthCompletion(PreauthorizationCompletionParams.builder()
.preauthorizationCode("1111")
.productAmount("13.37")
.build());
Pre-authorization cancellation
Make a Pre-authorization cancellation via direct SDK method. This will unlock the funds from the client's account and they can no longer be received with a Completion transaction.
POSHandler.getInstance().preAuthCancellation(PreauthorizationCancellationParams.builder()
.preauthorizationCode("1111")
.build());
MO/TO payment
Make a MO/TO payment via direct SDK method.
POSHandler.getInstance().purchase(PaymentParams.builder()
.productAmount("13.37")
.currency("EUR")
.tipAmount("1.55")
.receiptConfiguration(POSHandler.RECEIPT_PRINT_AUTOMATICALLY)
.operatorCode("1234")
.reference("asd123asd", ReferenceType.REFERENCE_NUMBER)
.preauthTransaction(false)
.motoTransaction(true)
.PAN("1234123412341234")
.expDate("1022")
.build());
MO/TO refund
Make a MO/TO refund via direct SDK method.
POSHandler.getInstance().refund(RefundParams.builder()
.refundAmount("13.37")
.currency("EUR")
.receiptConfiguration(POSHandler.RECEIPT_PRINT_AUTOMATICALLY)
.motoTransaction(true)
.PAN("1234123412341234")
.expDate("1022")
.build());
Void
Void and reverse the last transaction via direct SDK method.
POSHandler.getInstance().reversal(ReversalParams.builder()
.reason("enter reason text")
.build());
Reprint last receipt
With this method, the host application could request a reprint of the last transaction slip.
mPOSHandler.reprintReceipt();
Print random receipt
Check if the connected myPOS device has a printer hardware:
mPOSHandler.hasPrinter()
Printing an external receipt is performed by passing a ReceiptData object to the printReceipt() method
ReceiptData receiptData = new ReceiptData();
receiptData.addLogo(1 /*Logo index*/);
receiptData.addEmptyRow();
receiptData.addRow(
"HEAD" /*text*/,
ReceiptData.Align.CENTER, /* Enum align setting (LEFT, CENTER, RIGHT) */
ReceiptData.FontSize.DOUBLE /* Enum font size setting (SINGLE, DOUBLE) */
);
mPOSHandler.printReceipt(receiptData);