Exemplo n.º 1
0
        /// <summary>
        /// Gets the scheduled payment status.
        /// </summary>
        /// <param name="transaction">The transaction.</param>
        /// <param name="errorMessage">The error message.</param>
        /// <returns></returns>
        public override bool GetScheduledPaymentStatus(FinancialScheduledTransaction transaction, out string errorMessage)
        {
            errorMessage = string.Empty;

            var financialGateway = GetFinancialGateway(transaction);

            var ppTransaction = new RecurringInquiryTransaction(GetUserInfo(financialGateway), GetConnection(financialGateway), GetRecurring(transaction), PayflowUtility.RequestId);
            var ppResponse    = ppTransaction.SubmitTransaction();

            if (ppResponse != null)
            {
                TransactionResponse txnResponse = ppResponse.TransactionResponse;
                if (txnResponse != null)
                {
                    if (txnResponse.Result == 0)   // Success
                    {
                        RecurringResponse recurringResponse = ppResponse.RecurringResponse;
                        if (recurringResponse != null)
                        {
                            transaction.IsActive                 = recurringResponse.Status.ToUpper() == "ACTIVE";
                            transaction.StartDate                = GetDate(recurringResponse.Start) ?? transaction.StartDate;
                            transaction.NextPaymentDate          = GetDate(recurringResponse.NextPayment) ?? transaction.NextPaymentDate;
                            transaction.NumberOfPayments         = recurringResponse.Term.AsIntegerOrNull() ?? transaction.NumberOfPayments;
                            transaction.LastStatusUpdateDateTime = RockDateTime.Now;
                            transaction.StatusMessage            = recurringResponse.Status;
                            transaction.Status = GetFinancialScheduledTransactionStatus(recurringResponse);
                            return(true);
                        }
                        return(true);
                    }
                    else
                    {
                        errorMessage = string.Format("[{0}] {1}", txnResponse.Result, txnResponse.RespMsg);
                    }
                }
                else
                {
                    errorMessage = "Invalid transaction response from the financial gateway";
                }
            }
            else
            {
                errorMessage = "Invalid response from the financial gateway.";
            }

            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the scheduled payment status.
        /// </summary>
        /// <param name="transaction">The transaction.</param>
        /// <param name="errorMessage">The error message.</param>
        /// <returns></returns>
        public override bool GetScheduledPaymentStatus( FinancialScheduledTransaction transaction, out string errorMessage )
        {
            errorMessage = string.Empty;

            var ppTransaction = new RecurringInquiryTransaction( GetUserInfo(), GetConnection(), GetRecurring( transaction ), PayflowUtility.RequestId );
            var ppResponse = ppTransaction.SubmitTransaction();

            if ( ppResponse != null )
            {
                TransactionResponse txnResponse = ppResponse.TransactionResponse;
                if ( txnResponse != null )
                {
                    if ( txnResponse.Result == 0 ) // Success
                    {
                        RecurringResponse recurringResponse = ppResponse.RecurringResponse;
                        if ( recurringResponse != null )
                        {
                            transaction.IsActive = recurringResponse.Status.ToUpper() == "ACTIVE";
                            transaction.StartDate = GetDate( recurringResponse.Start ) ?? transaction.StartDate;
                            transaction.NextPaymentDate = GetDate( recurringResponse.NextPayment ) ?? transaction.NextPaymentDate;
                            transaction.NumberOfPayments = recurringResponse.Term.AsIntegerOrNull() ?? transaction.NumberOfPayments;
                            transaction.LastStatusUpdateDateTime = RockDateTime.Now;
                            return true;
                        }
                        return true;
                    }
                    else
                    {
                        errorMessage = string.Format( "[{0}] {1}", txnResponse.Result, txnResponse.RespMsg );
                    }
                }
                else
                {
                    errorMessage = "Invalid transaction response from the financial gateway";
                }
            }
            else
            {
                errorMessage = "Invalid response from the financial gateway.";
            }

            return false;
        }
        public static void Main(string[] Args)
        {
            Console.WriteLine("------------------------------------------------------");
            Console.WriteLine("Executing Sample from File: DORecurringInquiry.cs");
            Console.WriteLine("------------------------------------------------------");

            // Create the Data Objects.
            // Create the User data object with the required user details.
            UserInfo User = new UserInfo("<user>", "<vendor>", "<partner>", "<password>");

            // Create the Payflow  Connection data object with the required connection details.
            // The PAYFLOW_HOST property is defined in the App config file.
            PayflowConnectionData Connection = new PayflowConnectionData();

            RecurringInfo RecurInfo = new RecurringInfo();

            RecurInfo.OrigProfileId = "<PROFILE_ID>";              // RT0000001350
            // To show payment history instead of Profile details, change to "Y".
            // To view "Optional Transactions", use 'O'.
            RecurInfo.PaymentHistory = "N";

            ///////////////////////////////////////////////////////////////////

            // Create a new Recurring Inquiry Transaction.
            RecurringInquiryTransaction Trans = new RecurringInquiryTransaction(
                User, Connection, RecurInfo, PayflowUtility.RequestId);

            // Submit the Transaction
            Response Resp = Trans.SubmitTransaction();

            // Display the transaction response parameters.
            if (Resp != null)
            {
                // Get the Transaction Response parameters.
                TransactionResponse TrxnResponse = Resp.TransactionResponse;

                if (TrxnResponse != null)
                {
                    Console.WriteLine("RESULT = " + TrxnResponse.Result);
                    Console.WriteLine("RESPMSG = " + TrxnResponse.RespMsg);
                }

                // Get the Recurring Response parameters.
                RecurringResponse RecurResponse = Resp.RecurringResponse;
                if (RecurResponse != null)
                {
                    Console.WriteLine("RPREF = " + RecurResponse.RPRef);
                    Console.WriteLine("PROFILEID = " + RecurResponse.ProfileId);
                    // Show Profile Details.
                    if (RecurResponse.InquiryParams.Count == 0)
                    {
                        Console.WriteLine("STATUS = " + RecurResponse.Status);
                        Console.WriteLine("PROFILENAME = " + RecurResponse.ProfileName);
                        Console.WriteLine("START = " + RecurResponse.Start);
                        Console.WriteLine("TERM = " + RecurResponse.Term);
                        Console.WriteLine("PAYMENTSLEFT = " + RecurResponse.PaymentsLeft);
                        Console.WriteLine("NEXTPAYMENT = " + RecurResponse.NextPayment);
                        Console.WriteLine("PAYPERIOD = " + RecurResponse.PayPeriod);
                        Console.WriteLine("TENDER = " + RecurResponse.Tender);
                        Console.WriteLine("AMT = " + RecurResponse.Amt);
                        Console.WriteLine("ACCT = " + RecurResponse.Acct);
                        Console.WriteLine("EXPDATE = " + RecurResponse.ExpDate);
                        Console.WriteLine("AGGREGATEAMT = " + RecurResponse.AggregateAmt);
                        Console.WriteLine("AGGREGATEOPTIONALAMT = " + RecurResponse.AggregateOptionalAmt);
                        Console.WriteLine("MAXFAILPAYMENTS = " + RecurResponse.MaxFailPayments);
                        Console.WriteLine("NUMFAILPAYMENTS = " + RecurResponse.NumFailPayments);
                        Console.WriteLine("RETRYNUMDAYS = " + RecurResponse.RetryNumDays);
                        Console.WriteLine("END = " + RecurResponse.End);
                        Console.WriteLine("FIRSTNAME = " + RecurResponse.Name);
                        Console.WriteLine("LASTNAME = " + RecurResponse.LastName);
                        Console.WriteLine("STREET = " + RecurResponse.Street);
                        Console.WriteLine("ZIP = " + RecurResponse.Zip);
                    }
                    else
                    {
                        // Display the Payment History instead of Profile data.
                        // Payment History is stored in the HASHTABLE RecurResponse.InquiryParams.
                        // PAYMENTHISTORY = Y or O
                        Console.WriteLine("INQUIRY PARAMS");
                        int  x   = 0;
                        char Tab = (char)9;
                        while (true)
                        {
                            x++;
                            if (RecurResponse.InquiryParams["P_PNREF" + x.ToString()] == null)
                            {
                                break;
                            }
                            Console.WriteLine("PAYMENT: {0}" + Tab
                                              + "RESULT: {1}" + Tab
                                              + "PNREF: " + "{2}" + Tab
                                              + "AMOUNT: " + "{3}" + Tab
                                              + "TRANSTIME: " + "{4}" + Tab
                                              + "TRANSTATE: " + "{5}" + Tab
                                              + "TENDER: " + "{6}" + Tab,
                                              x,
                                              RecurResponse.InquiryParams["P_RESULT" + x.ToString()],
                                              RecurResponse.InquiryParams["P_PNREF" + x.ToString()],
                                              RecurResponse.InquiryParams["P_AMT" + x.ToString()],
                                              RecurResponse.InquiryParams["P_TRANSTIME" + x.ToString()],
                                              RecurResponse.InquiryParams["P_TRANSTATE" + x.ToString()],
                                              RecurResponse.InquiryParams["P_TENDER" + x.ToString()]);
                        }
                    }
                }

                Console.WriteLine(Environment.NewLine + PayflowUtility.GetStatus(Resp));

                // Get the Transaction Context and check for any contained SDK specific errors (optional code).
                Context TransCtx = Resp.TransactionContext;
                if (TransCtx != null && TransCtx.getErrorCount() > 0)
                {
                    Console.WriteLine(Environment.NewLine + "Transaction Errors = " + TransCtx.ToString());
                }
            }

            Console.WriteLine("Press Enter to Exit ...");
            Console.ReadLine();
        }