/// <summary> /// This method submits the transaction /// to the PayPal Payment Gateway. /// The response is obtained from the gateway /// and response object is populated with the /// response values along with the sdk specific /// errors in context, if any. /// </summary> /// <returns>Returns response object for Strong assembly transactions</returns> /// <example> /// <code lang="C#" escaped="false"> /// ............ /// //Trans is the transaction object. /// ............ /// /// //Submit the transaction. /// Trans.SubmitTransaction(); /// /// // Get the Response. /// Response Resp = Trans.Response; /// if (Resp != null) /// { /// // Get the Transaction Response parameters. /// TransactionResponse TrxnResponse = Resp.TransactionResponse; /// if (TrxnResponse != null) /// { /// Console.WriteLine("RESULT = " + TrxnResponse.Result); /// Console.WriteLine("PNREF = " + TrxnResponse.Pnref); /// Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); /// Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); /// Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); /// Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); /// Console.WriteLine("IAVS = " + TrxnResponse.IAVS); /// } /// // Get the Fraud Response parameters. /// FraudResponse FraudResp = Resp.FraudResponse; /// if (FraudResp != null) /// { /// Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); /// Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); /// } /// } /// // Get the Context and check for any contained SDK specific errors. /// Context Ctx = Resp.TransactionContext; /// if (Ctx != null && Ctx.getErrorCount() > 0) /// { /// Console.WriteLine(Environment.NewLine + "Errors = " + Ctx.ToString()); /// } ///</code> /// <code lang="Visual Basic" escaped="false"> /// ............ /// 'Trans is the transaction object. /// ............ /// ' Submit the transaction. /// Trans.SubmitTransaction() /// /// ' Get the Response. /// Dim Resp As Response = Trans.Response /// /// If Not Resp Is Nothing Then /// ' Get the Transaction Response parameters. /// /// Dim TrxnResponse As TransactionResponse = Resp.TransactionResponse /// /// If Not TrxnResponse Is Nothing Then /// Console.WriteLine("RESULT = " + TrxnResponse.Result) /// Console.WriteLine("PNREF = " + TrxnResponse.Pnref) /// Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg) /// Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode) /// Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr) /// Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip) /// Console.WriteLine("IAVS = " + TrxnResponse.IAVS) /// End If /// /// ' Get the Fraud Response parameters. /// Dim FraudResp As FraudResponse = Resp.FraudResponse /// If Not FraudResp Is Nothing Then /// Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg) /// Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg) /// End If /// End If /// /// ' Get the Context and check for any contained SDK specific errors. /// Dim Ctx As Context = Resp.TransactionContext /// /// If Not Ctx Is Nothing AndAlso Ctx.getErrorCount() > 0 Then /// Console.WriteLine(Constants.vbLf + "Errors = " + Ctx.ToString()) /// End If /// </code> /// </example> public virtual Response SubmitTransaction() { PayflowNETAPI PfProNetApi = null; String ResponseValue = null; bool Fatal = false; Logger.Instance.Log("##### BEGIN TRANSACTION ##### -- " + mRequestId, PayflowConstants.SEVERITY_INFO); Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Entered", PayflowConstants.SEVERITY_DEBUG); try { if (mClientInfo == null) { mClientInfo = new ClientInfo(); } //Check for the errors in the context now. ArrayList Errors = PayflowUtility.AlignContext(mContext, false); mContext.LoadLoggerErrs = false; mContext.ClearErrors(); mContext.AddErrors(Errors); if (mContext.HighestErrorLvl == PayflowConstants.SEVERITY_FATAL) { Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Exiting", PayflowConstants.SEVERITY_DEBUG); Fatal = true; } if (!Fatal) { GenerateRequest(); mRequest = RequestBuffer.ToString(); //Remove the trailing PayflowConstants.DELIMITER_NVP; int ParmListLen = mRequest.Length; if (ParmListLen > 0 && mRequest[ParmListLen - 1] == '&') { mRequest = mRequest.Substring(0, ParmListLen - 1); } //Call the api from here and submit transaction if (mPayflowConnectionData != null) { PfProNetApi = new PayflowNETAPI(mPayflowConnectionData.HostAddress, mPayflowConnectionData.HostPort, mPayflowConnectionData.TimeOut, mPayflowConnectionData.ProxyAddress, mPayflowConnectionData.ProxyPort, mPayflowConnectionData.ProxyLogon, mPayflowConnectionData.ProxyPassword); } else { PfProNetApi = new PayflowNETAPI(); } PfProNetApi.IsStrongAssemblyTransaction = true; PfProNetApi.ClientInfo = mClientInfo; ResponseValue = PfProNetApi.SubmitTransaction(mRequest, mRequestId); Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Exiting", PayflowConstants.SEVERITY_DEBUG); Logger.Instance.Log("##### END TRANSACTION ##### -- " + mRequestId, PayflowConstants.SEVERITY_INFO); } } catch (BaseException BaseEx) { ErrorObject Error = BaseEx.GetFirstErrorInExceptionContext(); //ErrorObject Error = PayflowUtility.PopulateCommError(PayflowConstants.E_UNKNOWN_STATE,BaseEx,PayflowConstants.SEVERITY_FATAL,false, null); mContext.AddError(Error); } catch (Exception Ex) { TransactionException TransEx = new TransactionException(Ex); ErrorObject Error = PayflowUtility.PopulateCommError(PayflowConstants.E_UNKNOWN_STATE, TransEx, PayflowConstants.SEVERITY_FATAL, false, null); mContext.AddError(Error); } finally { if (PfProNetApi != null) { mRequest = PfProNetApi.TransactionRequest; mContext.AddErrors(PfProNetApi.TransactionContext.GetErrors()); mRequestId = PfProNetApi.RequestId; mClientInfo = PfProNetApi.ClientInfo; } else { //There is some error due to which the return //is called even before pfpronetapi object is //created. //Check the first fatal error in context and //put its response value to string. if (mRequest != null && mRequest.Length > 0) { mRequest = PayflowUtility.MaskSensitiveFields(mRequest); } ArrayList ErrorList = mContext.GetErrors(PayflowConstants.SEVERITY_FATAL); ErrorObject FirstFatalError = (ErrorObject)ErrorList[0]; ResponseValue = FirstFatalError.ToString(); } mResponse = new Response(mRequestId, mContext); mResponse.setRequestString(mRequest); mResponse.SetParams(ResponseValue); //Log the context if (mContext.IsErrorContained()) { mContext.LogErrors(); } PfProNetApi = null; } return(mResponse); }
/// <summary> /// This method submits the transaction /// to the PayPal Payment Gateway. /// The response is obtained from the gateway /// and response object is populated with the /// response values along with the sdk specific /// errors in context, if any. /// </summary> /// <returns>Returns response object for Strong assembly transactions</returns> /// <example> /// <code lang="C#" escaped="false"> /// ............ /// //Trans is the transaction object. /// ............ /// /// //Submit the transaction. /// Trans.SubmitTransaction(); /// /// // Get the Response. /// Response Resp = Trans.Response; /// if (Resp != null) /// { /// // Get the Transaction Response parameters. /// TransactionResponse TrxnResponse = Resp.TransactionResponse; /// if (TrxnResponse != null) /// { /// Console.WriteLine("RESULT = " + TrxnResponse.Result); /// Console.WriteLine("PNREF = " + TrxnResponse.Pnref); /// Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg); /// Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode); /// Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr); /// Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip); /// Console.WriteLine("IAVS = " + TrxnResponse.IAVS); /// } /// // Get the Fraud Response parameters. /// FraudResponse FraudResp = Resp.FraudResponse; /// if (FraudResp != null) /// { /// Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg); /// Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg); /// } /// } /// // Get the Context and check for any contained SDK specific errors. /// Context Ctx = Resp.TransactionContext; /// if (Ctx != null && Ctx.getErrorCount() > 0) /// { /// Console.WriteLine(Environment.NewLine + "Errors = " + Ctx.ToString()); /// } /// </code> /// <code lang="Visual Basic" escaped="false"> /// ............ /// 'Trans is the transaction object. /// ............ /// ' Submit the transaction. /// Trans.SubmitTransaction() /// ' Get the Response. /// Dim Resp As Response = Trans.Response /// /// If Not Resp Is Nothing Then /// ' Get the Transaction Response parameters. /// /// Dim TrxnResponse As TransactionResponse = Resp.TransactionResponse /// /// If Not TrxnResponse Is Nothing Then /// Console.WriteLine("RESULT = " + TrxnResponse.Result) /// Console.WriteLine("PNREF = " + TrxnResponse.Pnref) /// Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg) /// Console.WriteLine("AUTHCODE = " + TrxnResponse.AuthCode) /// Console.WriteLine("AVSADDR = " + TrxnResponse.AVSAddr) /// Console.WriteLine("AVSZIP = " + TrxnResponse.AVSZip) /// Console.WriteLine("IAVS = " + TrxnResponse.IAVS) /// End If /// ' Get the Fraud Response parameters. /// Dim FraudResp As FraudResponse = Resp.FraudResponse /// If Not FraudResp Is Nothing Then /// Console.WriteLine("PREFPSMSG = " + FraudResp.PreFpsMsg) /// Console.WriteLine("POSTFPSMSG = " + FraudResp.PostFpsMsg) /// End If /// End If /// ' Get the Context and check for any contained SDK specific errors. /// Dim Ctx As Context = Resp.TransactionContext /// /// If Not Ctx Is Nothing AndAlso Ctx.getErrorCount() > 0 Then /// Console.WriteLine(Constants.vbLf + "Errors = " + Ctx.ToString()) /// End If /// </code> /// </example> public virtual async Task <Response> SubmitTransactionAsync() { PayflowNetapi pfProNetApi = null; string responseValue = null; var fatal = false; Logger.Instance.Log("##### BEGIN TRANSACTION ##### -- " + RequestId, PayflowConstants.SeverityInfo); Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Entered", PayflowConstants.SeverityDebug); try { if (ClientInfo == null) { ClientInfo = new ClientInfo(); } //Check for the errors in the context now. var errors = PayflowUtility.AlignContext(Context, false); Context.LoadLoggerErrs = false; Context.ClearErrors(); Context.AddErrors(errors); if (Context.HighestErrorLvl == PayflowConstants.SeverityFatal) { Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Exiting", PayflowConstants.SeverityDebug); fatal = true; } if (!fatal) { GenerateRequest(); _mRequest = RequestBuffer.ToString(); //Remove the trailing PayflowConstants.DELIMITER_NVP; var parmListLen = _mRequest.Length; if (parmListLen > 0 && _mRequest[parmListLen - 1] == '&') { _mRequest = _mRequest.Substring(0, parmListLen - 1); } //Call the api from here and submit transaction if (_mPayflowConnectionData != null) { pfProNetApi = new PayflowNetapi(_mPayflowConnectionData.HostAddress, _mPayflowConnectionData.HostPort, _mPayflowConnectionData.TimeOut, _mPayflowConnectionData.ProxyAddress, _mPayflowConnectionData.ProxyPort, _mPayflowConnectionData.ProxyLogon, _mPayflowConnectionData.ProxyPassword); } else { pfProNetApi = new PayflowNetapi(); } pfProNetApi.IsStrongAssemblyTransaction = true; pfProNetApi.ClientInfo = ClientInfo; responseValue = await pfProNetApi.SubmitTransactionAsync(_mRequest, RequestId); Logger.Instance.Log("PayPal.Payments.Transactions.BaseTransaction.SubmitTransaction(): Exiting", PayflowConstants.SeverityDebug); Logger.Instance.Log("##### END TRANSACTION ##### -- " + RequestId, PayflowConstants.SeverityInfo); } } catch (BaseException baseEx) { var error = baseEx.GetFirstErrorInExceptionContext(); //ErrorObject Error = PayflowUtility.PopulateCommError(PayflowConstants.E_UNKNOWN_STATE,BaseEx,PayflowConstants.SEVERITY_FATAL,false, null); Context.AddError(error); } catch (Exception ex) { var transEx = new TransactionException(ex); var error = PayflowUtility.PopulateCommError(PayflowConstants.EUnknownState, transEx, PayflowConstants.SeverityFatal, false, null); Context.AddError(error); } finally { if (pfProNetApi != null) { _mRequest = pfProNetApi.TransactionRequest; Context.AddErrors(pfProNetApi.TransactionContext.GetErrors()); RequestId = pfProNetApi.RequestId; ClientInfo = pfProNetApi.ClientInfo; } else { //There is some error due to which the return //is called even before pfpronetapi object is //created. //Check the first fatal error in context and //put its response value to string. if (_mRequest != null && _mRequest.Length > 0) { _mRequest = PayflowUtility.MaskSensitiveFields(_mRequest); } var errorList = Context.GetErrors(PayflowConstants.SeverityFatal); var firstFatalError = (ErrorObject)errorList[0]; responseValue = firstFatalError.ToString(); } _mResponse = new Response(RequestId, Context); _mResponse.SetRequestString(_mRequest); _mResponse.SetParams(responseValue); //Log the context if (Context.IsErrorContained()) { Context.LogErrors(); } pfProNetApi = null; } return(_mResponse); }