public PosResponseVer10 SubmitTransaction(PosRequestVer10Transaction transaction, long? clientTransactionId = null) {
            var rsp = DoTransaction(transaction, clientTransactionId).Ver10;
            HpsGatewayResponseValidation.CheckResponse(rsp, (ItemChoiceType2)transaction.ItemElementName);

            string rspCode = string.Empty, rspText = string.Empty;
            if (rsp.Transaction != null) {
                var trans = rsp.Transaction.Item;

                var rspCodeField = trans.GetType().GetProperty("RspCode");
                if (rspCodeField != null) {
                    rspCode = rspCodeField.GetValue(trans).ToString();
                }

                var rspTextField = transaction.GetType().GetProperty("RspText");
                if (rspTextField != null) {
                    rspText = rspTextField.GetValue(trans).ToString();
                }
            }
            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, rspCode, rspText);

            return rsp;
        }