@Test
    public void testQueryTransactions() {
        System.out.println("############################################################3");
        System.out.println("############################################################3");
        System.out.println("############################################################3");
        System.out.println("############################################################3");
        Gateway beanstream = new Gateway("v1", 300200578,
                "4BaD82D9197b4cc4b70a221911eE9f70", // payments API passcode
                "D97D3BE1EE964A6193D17A571D9FBC80", // profiles API passcode
                "4e6Ff318bee64EA391609de89aD4CF5d");// reporting API passcode

        String order = getRandomOrderId("q");
        CardPaymentRequest paymentRequest = new CardPaymentRequest();
        paymentRequest.setAmount(20.50)
                .setOrderNumber(order);
        paymentRequest.getCard().setName("Bob Doe")
                .setNumber("5100000010001004")
                .setExpiryMonth("12")
                .setExpiryYear("18")
                .setCvd("123");

        try {
            PaymentResponse response = beanstream.payments().makePayment(paymentRequest);
            if (response.isApproved()) {
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DAY_OF_MONTH, -1);
                Date startDate = cal.getTime(); // yesterday
                cal = Calendar.getInstance();
                cal.add(Calendar.DAY_OF_MONTH, 1);
                Date endDate = cal.getTime(); // tomorrow
                Criteria[] searchFilter = new Criteria[]{
                    new Criteria(QueryFields.OrderNumber, Operators.Equals, order)
                };
                List<TransactionRecord> query = beanstream.reports().query(startDate, endDate, 1, 2, searchFilter);
                Assert.assertNotNull(query);
                Assert.assertFalse(query.isEmpty());
                
                System.out.println("Queried " + query.size() + " items.");
                
                // print out the first 10 records
                int i = 0;
                for (TransactionRecord tr : query) {
                    System.out.println(tr.getTransactionId() + " from " + tr.getCardOwner() + " -> $" + tr.getAmount());
                    i++;
                    if (i > 10) {
                        break;
                    }
                }

            }
        } catch (BeanstreamApiException ex) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,"An error occurred: " + ex.toString(), ex);
            System.out.println("Error Details: " + ex.getCode() + ", " + ex.getCategory());
            Assert.fail(ex.getMessage());
        }

    }