Make a Pre-authorization with a previously stored card token. This will lock the funds from the client's account until the pre-authorization is completed or cancelled.

public void onPreAuthSBtnClick(View view) {
...
  Intent intent = new Intent(this, PreAuthorizationActivity.class);
  intent.putExtra(MyPos.INTENT_EXTRA_AMOUNT   , amount);
  intent.putExtra(MyPos.INTENT_EXTRA_ORDER_ID , "12345678");
  intent.putExtra(MyPos.INTENT_EXTRA_CARD_TOKEN,      cardToken);
  startActivityForResult(intent, MyPos.REQUEST_CODE_PRE_AUTHORIZATION);
...
}

 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( resultCode == RESULT_OK  && requestCode == MyPos.REQUEST_CODE_PRE_AUTHORIZATION ) {
      int status = data.getIntExtra(MyPos.INTENT_EXTRA_STATUS, MyPos.STATUS_INTERNAL_API_ERROR);

      if( status == MyPos.STATUS_SUCCESS) {
        ...
      }
}