示例#1
0
        protected PaymentState GetPaymentStateFromTransaction(transactionDetailsType transaction)
        {
            var paymentState = PaymentState.Initialized;

            switch (transaction.transactionStatus)
            {
            case "authorizedPendingCapture":
                paymentState = PaymentState.Authorized;
                break;

            case "capturedPendingSettlement":
            case "settledSuccessfully":
                paymentState = PaymentState.Captured;
                break;

            case "voided":
                paymentState = PaymentState.Cancelled;
                break;

            case "refundSettledSuccessfully":
            case "refundPendingSettlement":
                paymentState = PaymentState.Refunded;
                break;
            }

            return(paymentState);
        }
示例#2
0
 public static void transactionDetailsType(transactionDetailsType request)
 {
     if (null != request)
     {
         if (0 <= request.requestedAmount)
         {
             request.requestedAmountSpecified = true;
         }
         if (0 <= request.prepaidBalanceRemaining)
         {
             request.prepaidBalanceRemainingSpecified = true;
         }
         if (request.taxExempt)
         {
             request.taxExemptSpecified = true;
         }
         if (request.recurringBilling)
         {
             request.recurringBillingSpecified = true;
         }
         lineItemType(request.lineItems);
     }
 }
        public void MockgetTransactionDetailsTest()
        {
            //define all mocked objects as final
            var mockController = GetMockController <getTransactionDetailsRequest, getTransactionDetailsResponse>();
            var mockRequest    = new getTransactionDetailsRequest
            {
                merchantAuthentication = new merchantAuthenticationType {
                    name = "mocktest", Item = "mockKey", ItemElementName = ItemChoiceType.transactionKey
                },
            };
            var transactionDetailsType = new transactionDetailsType
            {
                AVSResponse = "avs",
            };
            var mockResponse = new getTransactionDetailsResponse
            {
                refId        = "1234",
                sessionToken = "sessiontoken",
                transaction  = transactionDetailsType,
            };

            var errorResponse = new ANetApiResponse();
            var results       = new List <String>();
            const messageTypeEnum messageTypeOk = messageTypeEnum.Ok;

            SetMockControllerExpectations <getTransactionDetailsRequest, getTransactionDetailsResponse, getTransactionDetailsController>(
                mockController.MockObject, mockRequest, mockResponse, errorResponse, results, messageTypeOk);
            mockController.MockObject.Execute(AuthorizeNet.Environment.CUSTOM);
            //mockController.MockObject.Execute();
            // or var controllerResponse = mockController.MockObject.ExecuteWithApiResponse(AuthorizeNet.Environment.CUSTOM);
            var controllerResponse = mockController.MockObject.GetApiResponse();

            Assert.IsNotNull(controllerResponse);

            Assert.IsNotNull(controllerResponse.transaction);
            LogHelper.info(Logger, "getTransactionDetails: Details:{0}", controllerResponse.transaction);
        }
示例#4
0
        /// <summary>
        /// Creates a Transaction directly from the API Response
        /// </summary>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        public static Transaction NewFromResponse(transactionDetailsType trans)
        {
            var result = new Transaction();

            result.TransactionID   = trans.transId;
            result.DateSubmitted   = trans.submitTimeUTC;
            result.TransactionType = trans.transactionType;
            result.Status          = trans.transactionStatus;
            result.ResponseCode    = trans.responseCode;
            result.ResponseReason  = trans.responseReasonDescription;

            result.AuthorizationCode = trans.authCode;
            result.AVSCode           = trans.AVSResponse;
            result.CardResponseCode  = trans.cardCodeResponse;
            result.CAVVCode          = trans.CAVVResponse;

            if (trans.FDSFilters != null)
            {
                for (int i = 0; i < trans.FDSFilters.Length; i++)
                {
                    var filter = (FDSFilterType)trans.FDSFilters[i];
                    result.FraudFilters.Add(filter.name);
                }
            }

            if (trans.batch != null)
            {
                result.BatchSettlementID    = trans.batch.batchId;
                result.BatchSettlementState = trans.batch.settlementState;
                result.BatchSettledOn       = trans.batch.settlementTimeUTC;
            }

            if (trans.order != null)
            {
                result.InvoiceNumber    = trans.order.invoiceNumber;
                result.PONumber         = trans.order.purchaseOrderNumber;
                result.OrderDescription = trans.order.description;
            }

            result.RequestedAmount     = trans.requestedAmount;
            result.AuthorizationAmount = trans.authAmount;
            result.SettleAmount        = trans.settleAmount;

            if (trans.tax != null)
            {
                result.Tax            = trans.tax.amount;
                result.TaxDescription = trans.tax.description;
            }

            if (trans.shipping != null)
            {
                result.Shipping            = trans.shipping.amount;
                result.ShippingDescription = trans.shipping.description;
            }

            if (trans.duty != null)
            {
                result.Duty            = trans.duty.amount;
                result.DutyDescription = trans.duty.description;
            }

            if (trans.lineItems != null)
            {
                for (int i = 0; i < trans.lineItems.Length; i++)
                {
                    var item = (lineItemType)trans.lineItems[i];
                    var line = new LineItem();
                    line.Description = item.description;
                    line.ID          = item.itemId;
                    line.Name        = item.name;
                    line.Quantity    = item.quantity;
                    line.Taxable     = item.taxable;
                    line.UnitPrice   = item.unitPrice;
                    result._lineItems.Add(line);
                }
            }
            if (trans.payment != null)
            {
                if (trans.payment.Item.GetType() == typeof(creditCardMaskedType))
                {
                    var cc = (creditCardMaskedType)trans.payment.Item;
                    result.CardNumber     = cc.cardNumber;
                    result.CardExpiration = cc.expirationDate;
                    result.CardType       = cc.cardType;
                }
                if (trans.payment.Item.GetType() == typeof(bankAccountMaskedType))
                {
                    var ba = (bankAccountMaskedType)trans.payment.Item;
                    result.eCheckBankAccount = new BankAccount()
                    {
                        accountTypeSpecified = ba.accountTypeSpecified,
                        accountType          = (BankAccountType)Enum.Parse(typeof(BankAccountType), ba.accountType.ToString(), true),
                        routingNumber        = ba.routingNumber,
                        nameOnAccount        = ba.nameOnAccount,
                        echeckTypeSpecified  = ba.echeckTypeSpecified,
                        echeckType           = (EcheckType)Enum.Parse(typeof(EcheckType), ba.echeckType.ToString(), true),
                        bankName             = ba.bankName
                    };
                }
            }
            if (trans.customer != null)
            {
                result.CustomerID    = trans.customer.id;
                result.CustomerEmail = trans.customer.email;
            }

            if (trans.billTo != null)
            {
                result.BillingAddress = new Address(trans.billTo);
            }
            if (trans.shipTo != null)
            {
                result.ShippingAddress = new Address(trans.shipTo);
            }

            result.IsRecurring = trans.recurringBilling;
            result.TaxExempt   = trans.taxExempt;

            result.MarketType       = trans.marketType;
            result.Product          = trans.product;
            result.MobileDeviceID   = trans.mobileDeviceId;
            result.RefTransactionID = trans.refTransId;

            if ((trans.subscription != null) && (trans.subscription.id > 0))
            {
                result.Subscription        = new SubscriptionPayment();
                result.Subscription.ID     = trans.subscription.id;
                result.Subscription.PayNum = trans.subscription.payNum;
            }

            if ((trans.returnedItems != null) && (trans.returnedItems.Any()))
            {
                result.HasReturnedItems = NullableBooleanEnum.True;
                result.ReturnedItems    = new ReturnedItemType[trans.returnedItems.Count()];
                int iRI = 0;
                foreach (var ri in trans.returnedItems)
                {
                    result.ReturnedItems[iRI] = new ReturnedItemType()
                    {
                        id          = ri.id,
                        code        = ri.code,
                        dateLocal   = ri.dateLocal,
                        dateUTC     = ri.dateUTC,
                        description = ri.description
                    };
                    iRI++;
                }
            }

            if ((trans.solution != null) && (trans.solution.id.Length > 0))
            {
                result.Solution = new SolutionType()
                {
                    id   = trans.solution.id,
                    name = trans.solution.name
                };
            }

            return(result);
        }
示例#5
0
        /// <summary>
        /// Creates a Transaction directly from the API Response
        /// </summary>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        public static Transaction NewFromResponse(transactionDetailsType trans)
        {
            var result = new Transaction();

            result.TransactionID   = trans.transId;
            result.DateSubmitted   = trans.submitTimeUTC;
            result.TransactionType = trans.transactionType;
            result.Status          = trans.transactionStatus;
            result.ResponseCode    = trans.responseCode;
            result.ResponseReason  = trans.responseReasonDescription;

            result.AuthorizationCode = trans.authCode;
            result.AVSCode           = trans.AVSResponse;
            result.CardResponseCode  = trans.cardCodeResponse;
            result.CAVVCode          = trans.CAVVResponse;

            if (trans.FDSFilters != null)
            {
                for (int i = 0; i < trans.FDSFilters.Length; i++)
                {
                    var filter = (FDSFilterType)trans.FDSFilters[i];
                    result.FraudFilters.Add(filter.name);
                }
            }

            if (trans.batch != null)
            {
                result.BatchSettlementID    = trans.batch.batchId;
                result.BatchSettlementState = trans.batch.settlementState;
                result.BatchSettledOn       = trans.batch.settlementTimeUTC;
            }

            if (trans.order != null)
            {
                result.InvoiceNumber    = trans.order.invoiceNumber;
                result.PONumber         = trans.order.purchaseOrderNumber;
                result.OrderDescription = trans.order.description;
            }

            result.RequestedAmount     = trans.requestedAmount;
            result.AuthorizationAmount = trans.authAmount;
            result.SettleAmount        = trans.settleAmount;

            if (trans.tax != null)
            {
                result.Tax            = trans.tax.amount;
                result.TaxDescription = trans.tax.description;
            }

            if (trans.shipping != null)
            {
                result.Shipping            = trans.shipping.amount;
                result.ShippingDescription = trans.shipping.description;
            }

            if (trans.duty != null)
            {
                result.Duty            = trans.duty.amount;
                result.DutyDescription = trans.duty.description;
            }

            if (trans.lineItems != null)
            {
                for (int i = 0; i < trans.lineItems.Length; i++)
                {
                    var item = (lineItemType)trans.lineItems[i];
                    var line = new LineItem();
                    line.Description = item.description;
                    line.ID          = item.itemId;
                    line.Name        = item.name;
                    line.Quantity    = item.quantity;
                    line.Taxable     = item.taxable;
                    line.UnitPrice   = item.unitPrice;
                    result._lineItems.Add(line);
                }
            }
            if (trans.payment != null)
            {
                if (trans.payment.Item.GetType() == typeof(creditCardType))
                {
                    var cc = (creditCardType)trans.payment.Item;
                    result.CardNumber     = cc.cardNumber;
                    result.CardExpiration = cc.expirationDate;
                }
            }
            if (trans.customer != null)
            {
                result.CustomerID    = trans.customer.id;
                result.CustomerEmail = trans.customer.email;
            }

            if (trans.billTo != null)
            {
                result.BillingAddress = new Address(trans.billTo);
            }
            if (trans.shipTo != null)
            {
                result.ShippingAddress = new Address(trans.shipTo);
            }

            result.IsRecurring = trans.recurringBilling;
            result.TaxExempt   = trans.taxExempt;
            return(result);
        }