code: TransactionReceipt executeTransaction(
              String data, BigInteger weiValue, String funcName)
              throws TransactionException, IOException {
  
          TransactionReceipt receipt = send(contractAddress, data, weiValue,
                  gasProvider.getGasPrice(funcName),
                  gasProvider.getGasLimit(funcName));
  
          if (!receipt.isStatusOK()) {
              throw new TransactionException(
                      String.format(
                              "Transaction has failed with status: %s. "
                                      + "Gas used: %d. (not-enough gas?)",
                              receipt.getStatus(),
                              receipt.getGasUsed()));
          }
  
          return receipt;
      }
docs: Given the duration required to execute a transaction.
  
  @param data  to send in transaction
  @param weiValue in Wei to send in transaction
  @return {@link Optional} containing our transaction receipt
  @throws IOException                 if the call to the node fails
  @throws TransactionException if the transaction was not mined while waiting