private CreditCardReceipt singlePurchaseHelper(String orderId, Object creditCardSpecifier,
            long amount, VerificationRequest verificationRequest, PurchaseCardRequest purchaseCard,
            boolean isActualCreditCard, boolean addToStorage, String secureTokenId) {
        if (orderId == null) {
            return new CreditCardReceipt(REQ_INVALID_REQUEST, "orderId is required", null);
        }
        // create the request string
        final StringBuilder req = new StringBuilder();
        try {
            this.appendHeader(req, "singlePurchase");
            this.appendOrderId(req, orderId);
            // real CC, or using storage token
            if (isActualCreditCard) {
                if (addToStorage) {
                    this.appendStorageFlag(req, true);
                    this.appendStorageTokenId(req, secureTokenId);
                }

                this.appendCreditCard(req, (CreditCard) creditCardSpecifier);
            } else {
                this.appendStorageTokenId(req, creditCardSpecifier.toString());
            }
            this.appendAmount(req, amount);
            this.appendVerificationRequest(req, verificationRequest);
            this.appendPurchaseCard(req, purchaseCard);

            // render indicator
            for (CreditCardIndicator indicator : super.indicatorList) {
                this.appendIndicator(req, indicator);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return new CreditCardReceipt(REQ_INVALID_REQUEST, e.toString(), null);
        }
        return this.send(req);
    }