示例#1
0
    /// <summary>
    /// Shows the appropriate payment control based on the option selected
    /// </summary>
    public void SetPaymentControl()
    {
        int paymentTypeID = 0;
         //show credit card panel
         pnlCreditCard.Visible = false;

         if (int.TryParse(lstPaymentType.SelectedValue, out paymentTypeID))
         {
             PaymentSettingService _pmtServ = new PaymentSettingService();
             ZNode.Libraries.DataAccess.Entities.PaymentSetting pmtSetting = _pmtServ.DeepLoadByPaymentSettingID(int.Parse(lstPaymentType.SelectedValue), true, DeepLoadType.IncludeChildren, typeof(ZNode.Libraries.DataAccess.Entities.PaymentType));

             int paymentTypeId = pmtSetting.PaymentTypeID;

             if (paymentTypeId == (int)ZNode.Libraries.Payment.PaymentType.CREDIT_CARD)
             {
                 //Hide purchase order panel
                 pnlPurchaseOrder.Visible = false;
                 //show credit card panel
                 pnlCreditCard.Visible = true;
             }
             else if (paymentTypeId == (int)ZNode.Libraries.Payment.PaymentType.PURCHASE_ORDER)
             {
                 //hide credit card panel
                 pnlCreditCard.Visible = false;
                 //show purchase order panel
                 pnlPurchaseOrder.Visible = true;
             }
             else if (paymentTypeId == (int)ZNode.Libraries.Payment.PaymentType.COD)
             {
                 //Hide credit card panel
                 pnlCreditCard.Visible = false;
                 //hide purchase order panel
                 pnlPurchaseOrder.Visible = false;
             }
         }
    }
示例#2
0
    /// <summary>
    /// Refund button clicked
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Refund_Click(object sender, EventArgs e)
    {
        //retrieve order
        ZNode.Libraries.Admin.OrderAdmin orderAdmin = new ZNode.Libraries.Admin.OrderAdmin();
        Order order = orderAdmin.GetOrderByOrderID(OrderID);
        ZNode.Libraries.Framework.Business.ZNodeEncryption enc = new ZNode.Libraries.Framework.Business.ZNodeEncryption();

        //get payment settings
        int paymentSettingID = (int)order.PaymentSettingID;
        PaymentSettingService pss = new PaymentSettingService();
        PaymentSetting ps = pss.GetByPaymentSettingID(paymentSettingID);

        //set gateway info
        GatewayInfo gi = new GatewayInfo();
        gi.GatewayLoginID = enc.DecryptData(ps.GatewayUsername);
        gi.GatewayPassword = enc.DecryptData(ps.GatewayPassword);
        gi.TransactionKey = enc.DecryptData(ps.TransactionKey);
        gi.Vendor = ps.Vendor;
        gi.Partner = ps.Partner;
        //gi.CurrencyCode = CurrencyCode;
        gi.TestMode = ps.TestMode;
        gi.gateway = (GatewayType)ps.GatewayTypeID ;

        string creditCardExp = Convert.ToString(order.CardExp);
        if (creditCardExp == null)
        {
            creditCardExp = "";
        }

        //set credit card
        CreditCard cc = new CreditCard();
        cc.Amount = Decimal.Parse(txtAmount.Text);
        cc.CardNumber = txtCardNumber.Text.Trim();
        cc.CreditCardExp = creditCardExp;
        cc.OrderID = order.OrderID;
        cc.TransactionID = order.CardTransactionID;

        GatewayResponse resp = new GatewayResponse();

        if ((GatewayType)ps.GatewayTypeID == GatewayType.AUTHORIZE)
        {
            GatewayAuthorize auth = new GatewayAuthorize();
            resp = auth.RefundPayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.VERISIGN)
        {
            GatewayPayFlowPro pp = new GatewayPayFlowPro();
            resp = pp.RefundPayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.PAYMENTECH)
        {
            GatewayOrbital pmt = new GatewayOrbital();
            resp = pmt.ReversePayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.IPCOMMERCE)
        {
            GatewayIPCommerce ipc = new GatewayIPCommerce();
            resp = ipc.RefundPayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.NOVA)
        {
            GatewayNova nova = new GatewayNova();
            cc.CreditCardExp = lstMonth.SelectedValue + "/" + lstYear.SelectedValue;
            cc.CardSecurityCode = txtSecurityCode.Text.Trim();
            gi.TransactionType = "CCCredit";
            resp = nova.RefundPayment(gi, cc);
        }
        else
        {
            lblError.Text = "Error: Credit card refunds and not supported for your gateway.";
            return;
        }

        if (resp.IsSuccess)
        {
            //update order status
            order.OrderStateID = 30; //returned status
            order.PaymentStatusID = 3; //refund status

            OrderService os = new OrderService();
            os.Update(order);

            pnlEdit.Visible = false;
            pnlConfirm.Visible = true;
        }
        else
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("Could not complete request. The following response was returned by the gateway: ");
            sb.Append(resp.ResponseText);
            lblError.Text = sb.ToString();
        }
    }
示例#3
0
    /// <summary>
    /// Binds the payment types
    /// </summary>
    public void BindPaymentTypeData()
    {
        Account userAccount = UserAccount;

        if (lstPaymentType.Items.Count == 0)
        {
            PaymentSettingService _pmtServ = new PaymentSettingService();
            ZNode.Libraries.DataAccess.Entities.TList<PaymentSetting> _pmtSetting = _pmtServ.GetAll();
            int profileID = 0;

            //Check user Session
            if (userAccount.ProfileID.HasValue)
            {
                profileID = userAccount.ProfileID.Value;
            }

            if (profileID > 0)
            {
                _pmtSetting.ApplyFilter(delegate(ZNode.Libraries.DataAccess.Entities.PaymentSetting pmt) { return (pmt.ProfileID == null || pmt.ProfileID == profileID) && (pmt.PaymentTypeID != 2 && pmt.PaymentTypeID != 3) && pmt.ActiveInd == true; });
            }
            else
            {
                _pmtSetting.ApplyFilter(delegate(ZNode.Libraries.DataAccess.Entities.PaymentSetting pmt) { return (pmt.ProfileID == null) && (pmt.PaymentTypeID != 2 && pmt.PaymentTypeID != 3)  && pmt.ActiveInd == true; });
            }
            _pmtServ.DeepLoad(_pmtSetting, true, DeepLoadType.IncludeChildren, typeof(ZNode.Libraries.DataAccess.Entities.PaymentType));
            _pmtSetting.Sort("DisplayOrder");

            foreach (PaymentSetting _pmt in _pmtSetting)
            {
                ListItem li = new ListItem();
                li.Text = _pmt.PaymentTypeIDSource.Name;
                li.Value = _pmt.PaymentSettingID.ToString();

                if (_pmt.PaymentTypeID != (int)ZNode.Libraries.Payment.PaymentType.GOOGLE_CHECKOUT || _pmt.PaymentTypeID != (int)ZNode.Libraries.Payment.PaymentType.PAYPAL)
                {
                    lstPaymentType.Items.Add(li);
                }

                if (_pmt.PaymentTypeID == (int)ZNode.Libraries.Payment.PaymentType.CREDIT_CARD)
                {
                    imgAmex.Visible = (bool)_pmt.EnableAmex;
                    imgMastercard.Visible = (bool)_pmt.EnableMasterCard;
                    imgVisa.Visible = (bool)_pmt.EnableVisa;
                    imgDiscover.Visible = (bool)_pmt.EnableDiscover;
                }
            }

            //select first item
            if (lstPaymentType.Items.Count > 0) { lstPaymentType.Items[0].Selected = true; }

            //show appropriate payment control
            SetPaymentControl();
        }
    }
示例#4
0
    /// <summary>
    /// Refund button clicked
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Capture_Click(object sender, EventArgs e)
    {
        //retrieve order
        ZNode.Libraries.Admin.OrderAdmin orderAdmin = new ZNode.Libraries.Admin.OrderAdmin();
        Order order = orderAdmin.GetOrderByOrderID(OrderID);
        ZNode.Libraries.Framework.Business.ZNodeEncryption enc = new ZNode.Libraries.Framework.Business.ZNodeEncryption();

        //get payment settings
        int paymentSettingID = (int)order.PaymentSettingID;
        PaymentSettingService pss = new PaymentSettingService();
        PaymentSetting ps = pss.GetByPaymentSettingID(paymentSettingID);

        //set gateway info
        GatewayInfo gi = new GatewayInfo();
        gi.GatewayLoginID = enc.DecryptData(ps.GatewayUsername);
        gi.GatewayPassword = enc.DecryptData(ps.GatewayPassword);
        gi.TransactionKey = enc.DecryptData(ps.TransactionKey);
        gi.Vendor = ps.Vendor;
        gi.Partner = ps.Partner;
        gi.TestMode = ps.TestMode;
        gi.gateway = (GatewayType)ps.GatewayTypeID ;

        string creditCardExp = Convert.ToString(order.CardExp);
        if (creditCardExp == null)
        {
            creditCardExp = "";
        }

        //set credit card
        CreditCard cc = new CreditCard();
        cc.CreditCardExp = creditCardExp;
        cc.OrderID = order.OrderID;
        cc.TransactionID = order.CardTransactionID;

        GatewayResponse resp = new GatewayResponse();

        if ((GatewayType)ps.GatewayTypeID == GatewayType.AUTHORIZE)
        {
            GatewayAuthorize auth = new GatewayAuthorize();
            resp = auth.CapturePayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.VERISIGN)
        {
            GatewayPayFlowPro pp = new GatewayPayFlowPro();
            resp = pp.CapturePayment(gi, cc);
        }
        else if ((GatewayType)ps.GatewayTypeID == GatewayType.PAYMENTECH)
        {
            GatewayOrbital pmt = new GatewayOrbital();
            resp = pmt.CapturePayment(gi, cc);
        }
        else
        {
            lblError.Text = "Error: Credit card payment capture is not supported for your gateway.";

        }

        if (resp.IsSuccess)
        {
            //update order status
            order.PaymentStatusID = 1; //refund status

            OrderService os = new OrderService();
            os.Update(order);

            pnlEdit.Visible = false;
            pnlConfirm.Visible = true;
        }
        else
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("Could not complete request. The following response was returned by the gateway: ");
            sb.Append(resp.ResponseText);
            lblError.Text = sb.ToString();
        }
    }