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);