コード例 #1
0
    private CustomerTransactionRequest Batch_createCustomRequest(SAPbobsCOM.Documents doc)
    {
        CustomerTransactionRequest req = new CustomerTransactionRequest();

        try
        {
            req.ClientIP    = getIP();
            req.CustReceipt = cfgsendCustomerEmail == "Y" ? true : false;
            //true;
            req.MerchReceipt = true;
            //true;
            req.MerchReceiptEmail        = cfgmerchantEmail;
            req.Details                  = new TransactionDetail();
            req.Details.Clerk            = oCompany.UserName;
            req.Details.AllowPartialAuth = true;

            req.Details.Amount = Math.Round(doc.DocTotal, 2);

            req.Details.Discount = Math.Round(doc.TotalDiscount, 2);

            req.Details.Shipping = getShipping(doc);

            req.Details.Tax = doc.VatSum;

            req.Details.Invoice = doc.DocNum.ToString();
            req.Details.OrderID = GetSalesOrderDocNum(req.Details.Invoice);
            req.Details.PONum   = doc.NumAtCard;
            if (req.Details.PONum == "" || req.Details.PONum == null)
            {
                req.Details.PONum = doc.DocNum.ToString();
            }
            req.Details.ShipFromZip = getZipFromAddr(doc.Address2);
            req.Details.Description = doc.Comments;
            req.Details.Subtotal    = 0; // req.Details.Subtotal = Math.Round(req.Details.Amount - (req.Details.Shipping + req.Details.Tax - req.Details.Discount), 2);

            SAPbobsCOM.Document_Lines olines = doc.Lines;
            req.LineItems = new LineItem[olines.Count];

            for (int i = 0; i < olines.Count; i++)
            {
                olines.SetCurrentLine(i);
                req.LineItems[i] = new LineItem();
                req.LineItems[i].CommodityCode = merchantData.ItemCommodityCode == null ? olines.ItemCode : merchantData.ItemCommodityCode;
                req.LineItems[i].Qty           = olines.Quantity.ToString();
                req.LineItems[i].UnitPrice     = olines.Price.ToString();
                req.LineItems[i].ProductName   = olines.ItemDescription;
                req.LineItems[i].UnitOfMeasure = "EACH";
                req.LineItems[i].SKU           = olines.ItemCode;
                req.LineItems[i].CommodityCode = olines.ItemCode;
                req.LineItems[i].Taxable       = true;
                //req.LineItems[i].TaxableSpecified = true;
                req.LineItems[i].TaxRate = olines.TaxPercentagePerRow.ToString();
            }
        }
        catch (Exception ex)
        {
            errorLog(ex);
        }
        return(req);
    }
コード例 #2
0
        private CustomerTransactionRequest GenerateCustomerTransactionRequest(string command)
        {
            CustomerTransactionRequest ctr = new CustomerTransactionRequest();

            ctr.CardCode  = Card.CVVData;
            ctr.Command   = command;
            ctr.Details   = GenerateTransactionDetail();
            ctr.LineItems = GenerateLineItems(ctr.Details.Amount);
            return(ctr);
        }
コード例 #3
0
    private bool Batch_runCustomRequest(CustomerTransactionRequest req, SAPCust sapcust, string orderid, string invoiceid, ref string refNum)
    {
        try
        {
            req.CustReceipt      = cfgsendCustomerEmail == "Y" ? true : false;
            req.CustReceiptName  = "vterm_customer";
            req.CustReceiptEmail = sapcust.custObj.Email;
            //form.Freeze(true);
            req.Details.Subtotal = 0;
            trace("Batch_runCustomRequest: command=" + req.Command + ", amount = " + req.Details.Amount + ", tax=" + req.Details.Tax + ",Subtotal=" + req.Details.Subtotal + ",shipping=" + req.Details.Shipping + ",Discount=" + req.Details.Discount);

            SecurityToken       token = getToken(sapcust.cccust.CCAccountID);
            TransactionResponse resp  = new TransactionResponse();

            resp = ebiz.runCustomerTransaction(token, sapcust.custObj.CustomerToken, sapcust.custObj.PaymentMethodProfiles[0].MethodID, req);
            trace("Batch_runCustomRequest: refNum = " + resp.RefNum + ", error=" + resp.Error);


            if (sapcust != null)
            {
                refNum = resp.RefNum;
                try
                {
                    if (resp.ResultCode == "D")
                    {
                        updateCustDeclined(sapcust.cccust.recID, "Y");
                    }
                    if (resp.ResultCode == "A")
                    {
                        updateCustDeclined(sapcust.cccust.recID, "N");
                    }
                }
                catch (Exception ex)
                {
                    errorLog(ex);
                }
            }

            logCustomTransaction(req, resp, sapcust, orderid, invoiceid);
            return(Batch_HandleResponse(resp, sapcust, ref refNum));
        }
        catch (Exception ex)
        {
            errorLog(ex);
            SBO_Application.MessageBox(ex.Message);
        }
        return(false);
    }
コード例 #4
0
    public bool BatchPreauth_PreAuthCustomer(SAPbobsCOM.Documents doc, SAPCust sapcust)
    {
        try
        {
            CustomerTransactionRequest req = Batch_createCustomRequest(doc);
            req.CustReceipt      = cfgsendCustomerEmail == "Y" ? true : false;
            req.CustReceiptName  = "vterm_customer";
            req.CustReceiptEmail = sapcust.custObj.Email;

            req.Command = "cc:authonly";
            if (req.Command == "cc:authonly" && cfgPreAuthEmail != "Y")
            {
                req.CustReceipt = false;
            }
            if (req.CustReceiptEmail == "")
            {
                req.CustReceipt = false;
            }
            string refNum = "";
            if (Batch_runCustomRequest(req, sapcust, doc.DocEntry.ToString(), "", ref refNum))
            {
                confirmNum = refNum;
                BatchPreAuthUpdateTrans(doc.DocEntry, doc.CardCode, refNum);
                SBO_Application.SetStatusBarMessage("eBizCharge Batch pre-auth sales order : " + doc.DocNum + " approved. Approval Code:" + refNum + ", Amount:" + doc.DocTotal.ToString(), SAPbouiCOM.BoMessageTime.bmt_Medium, false);
            }
            else
            {
                return(false);
            }
        }
        catch (Exception ex)
        {
            errorLog(ex);
        }
        return(true);
    }
コード例 #5
0
        public async Task <IActionResult> Index()
        {
            //Live
            var           client        = new PaymentGateway.IeBizServiceClient();
            SecurityToken securityToken = new SecurityToken();

            //CreditCardData customer = new CreditCardData();
            //securityToken.UserId = "virtualterm";
            //securityToken.SecurityId = "8U5NF2nZQAm3G3Gw57oB8g7BObK7bzKP";
            //securityToken.Password = "******";
            securityToken.SecurityId = "99359f03-b254-4adf-b446-24957fcb46cb";
            securityToken.UserId     = "qbouser";
            securityToken.Password   = "******";
            SearchFilter[] searchFilters = new SearchFilter[0];

            dynamic dsd = await client.SearchInvoicesAsync(securityToken, "", "", "", "", searchFilters, 0, 200, "", false);

            PaymentMethodProfile payMethod = new PaymentMethodProfile();

            payMethod.CardExpiration = "0922";
            payMethod.CardNumber     = "4000100011112224";
            payMethod.AvsStreet      = "123 Main st.";
            payMethod.AvsZip         = "90046";
            payMethod.MethodName     = "My Visa";
            TransactionRequestObject transaction = new TransactionRequestObject();

            transaction.CreditCardData.CardNumber     = "4000100011112224";
            transaction.CreditCardData.CardExpiration = "0922";
            transaction.CreditCardData.AvsStreet      = "123 Main st.";
            transaction.CreditCardData.AvsZip         = "90046";
            transaction.CustomerID     = "";
            transaction.BillingAddress = new GwAddress {
                FirstName = "naqi", LastName = "ali"
            };
            transaction.Command         = "AuthOnly";
            transaction.CustReceipt     = true;
            transaction.CustReceiptName = "";
            transaction.AuthCode        = "";
            var dd = await client.runTransactionAsync(securityToken, transaction);

            CustomerTransactionRequest customerTransaction = new CustomerTransactionRequest();
            var ss = await client.runCustomerTransactionAsync(securityToken, "C-ABC530", "1186", customerTransaction);

            //PaymentMethodProfile payMethod = new PaymentMethodProfile();
            //payMethod.CardExpiration = "1212";
            //payMethod.CardNumber = "4000100011112224";
            //payMethod.AvsStreet = "123 Main st.";
            //payMethod.AvsZip = "90046";
            //payMethod.MethodName = "My Visa";
            // dynamic data = await client.GetCustomerAsync(securityToken, "C-ABC527", "7c944faf-a409-460d-a55d-1a2220c455cd");
            //if (data!=null)
            //{

            //}
            //else
            //{
            //Customer customer = new Customer();
            //    customer.CompanyName = "Naqi101";
            //    customer.FirstName = "Naqi";
            //    customer.LastName = "Ali";
            //    customer.Email = "*****@*****.**";
            //    customer.SoftwareId = ".Net API";
            //    customer.CustomerId = "C-ABC530";
            //    Address address = new Address();
            //    address.FirstName = "Naqi";
            //    address.LastName = "Testing";
            //    address.CompanyName = "Naqi101";
            //    address.Address1 = "123 main st.";
            //    address.City = "Hollywood";
            //    address.State = "ca";
            //    address.ZipCode = "91607";
            //    address.Country = "USA";
            //    customer.BillingAddress = address;
            //    PaymentMethodProfile[] payMethod = new PaymentMethodProfile[1];
            //    payMethod[0] = new PaymentMethodProfile();
            //    //payMethod[0].MethodType = "1212";
            //    payMethod[0].CardNumber = "4000100011112224";
            //    payMethod[0].CardExpiration = "0922";
            //    payMethod[0].AccountHolderName = "Ali";
            //    payMethod[0].AvsStreet = "abc";
            //    payMethod[0].CardCode = "123";
            //    payMethod[0].AvsZip = "54000";
            //    payMethod[0].MethodName = "My Visa";
            //    customer.PaymentMethodProfiles = payMethod;
            //}

            try
            {
                var sdt = await client.AddCustomerPaymentMethodProfileAsync(securityToken, "4b9fab71-9b3c-4d77-bff3-fc6c4cf54ec0", payMethod);

                //dynamic response = await client.AddCustomerAsync(securityToken, customer);
                //dynamic response = await client.UpdateCustomerAsync(securityToken, customer, "C-ABC527", "7c944faf-a409-460d-a55d-1a2220c455cd");
                //MessageBox.Show(string.Concat(response));
            }

            catch (Exception err)
            {
                //MessageBox.Show(err.Message);
            }
            return(View());
        }
コード例 #6
0
    private void job_logCustomTransaction(CustomerTransactionRequest req, TransactionResponse resp, SAPCust sapcust, CCJOB job, string InvoiceID = "")
    {
        CCTRAN cctran = new CCTRAN();

        try
        {
            if (job.OrderID == null)
                job.OrderID = 0;
            if (job.InvoiceID == null)
                job.InvoiceID = 0;

            cctran.customerID = sapcust.cccust.CustomerID;
            cctran.CCAccountID = 0;
            cctran.jobID = (int)job.jobID;
            cctran.OrderID = job.OrderID.ToString();
            cctran.InvoiceID = InvoiceID;
            cctran.CreditMemoID = "";
            cctran.DownPaymentInvoiceID = "";
            if (sapcust != null)
            {
                try
                {
                    cctran.CCAccountID = int.Parse(sapcust.cccust.CCAccountID);
                    cctran.customerID = sapcust.cccust.CustomerID;
                    cctran.MethodID = sapcust.custObj.PaymentMethodProfiles[0].MethodID;
                    cctran.custNum = sapcust.cccust.CustNum;
                    cctran.crCardNum = sapcust.custObj.PaymentMethodProfiles[0].CardNumber;
                    cctran.CardHolder = sapcust.custObj.BillingAddress.FirstName + " " + sapcust.custObj.BillingAddress.LastName;
                }catch(Exception ex)
                {
                    errorLog(ex);
                }
            }
            cctran.Description = req.Details.Description;
            cctran.recID = req.Details.Invoice;
            cctran.acsUrl = resp.AcsUrl;
            cctran.authAmount = resp.AuthAmount.ToString();
            cctran.authCode = resp.AuthCode;
            cctran.avsResult = resp.AvsResult;
            cctran.avsResultCode = resp.AvsResultCode;
            cctran.batchNum = resp.BatchNum;
            cctran.batchRef = resp.BatchRefNum;
            cctran.cardCodeResult = resp.CardCodeResult;
            cctran.cardCodeResultCode = resp.CardCodeResultCode;
            cctran.cardLevelResult = resp.CardLevelResult;
            cctran.cardLevelResultCode = resp.CardLevelResultCode;
            cctran.conversionRate = resp.ConversionRate.ToString();
            cctran.convertedAmount = resp.ConvertedAmount.ToString();
            cctran.convertedAmountCurrency = resp.ConvertedAmountCurrency.ToString();
            cctran.custNum = resp.CustNum;
            cctran.error = resp.Error;
            cctran.errorCode = resp.ErrorCode;
            cctran.isDuplicate = resp.isDuplicate.ToString();
            cctran.payload = resp.Payload;
            cctran.profilerScore = resp.ProfilerScore;
            cctran.profilerResponse = resp.ProfilerResponse;
            cctran.profilerReason = resp.ProfilerReason;
            cctran.refNum = resp.RefNum;
            cctran.remainingBalance = resp.RemainingBalance.ToString();
            cctran.result = resp.Result;
            cctran.resultCode = resp.ResultCode;
            cctran.status = resp.Status;
            cctran.statusCode = resp.StatusCode;
            cctran.vpasResultCode = resp.VpasResultCode;
            cctran.recDate = DateTime.Now;//Use local time not server time
            cctran.command = req.Command;
            cctran.amount = req.Details.Amount.ToString();
            insert(cctran);
        }
        catch (Exception ex)
        {

            errorLog(ex);
        }
    }
コード例 #7
0
    private CustomerTransactionRequest job_createCustomRequest(CCJOB job, SAPbobsCOM.Documents oDoc, string amt ="")
    {
        CustomerTransactionRequest req = new CustomerTransactionRequest();
        try
        {
            req.CustReceipt = cfgsendCustomerEmail == "Y" ? true : false;
            // req.CustReceiptSpecified = false;  //true;
            req.MerchReceipt = true;
            //  req.MerchReceiptSpecified = false; //true;
            req.MerchReceiptEmail = cfgmerchantEmail;
            req.CustReceiptName = "vterm_customer";
            req.MerchReceiptName = cfgMerchantReceipt;
            req.ClientIP = getIP();

            req.Details = new TransactionDetail();
            req.Details.AllowPartialAuth = true;

            if(amt == "" && oDoc != null)
                req.Details.Amount = oDoc.DocTotal;
            else
                req.Details.Amount = getDoubleValue(amt);

            req.Details.Discount = 0;

            req.Details.Shipping = 0;

            req.Details.Tax = 0;

            string invID = "RB000";
            if(oDoc!= null)
                invID = oDoc.DocNum.ToString();
            req.Details.Invoice = invID;
            req.Details.OrderID = invID;
            req.Details.PONum = invID;
            req.Details.Description =job.Description;
            req.Details.Subtotal = 0; // req.Details.Amount;

            if (oDoc != null)
            {
                SAPbobsCOM.Document_Lines olines = oDoc.Lines;
                req.LineItems = new LineItem[olines.Count];
                for (int i = 0; i < olines.Count; i++)
                {
                    olines.SetCurrentLine(i);
                    req.LineItems[i] = new LineItem();
                    req.LineItems[i].CommodityCode = olines.ItemCode;
                    req.LineItems[i].SKU = olines.ItemCode;
                    req.LineItems[i].Qty = olines.Quantity.ToString();
                    req.LineItems[i].UnitPrice = olines.UnitPrice.ToString();
                    req.LineItems[i].TaxRate = olines.TaxCode;
                    req.LineItems[i].ProductName = olines.ItemDescription;
                    req.LineItems[i].DiscountRate = "";
                    req.LineItems[i].UnitOfMeasure = "EACH";
                }
            }else
            {
                req.LineItems = new LineItem[1];
                req.LineItems[0] = new LineItem();
                req.LineItems[0].CommodityCode = "000";
                req.LineItems[0].Qty = "1";
                req.LineItems[0].UnitPrice = amt;
                req.LineItems[0].TaxRate = "";
                req.LineItems[0].ProductName = "eBizCharge SAP Recurring Billing On Account";
                req.LineItems[0].DiscountRate = "";
                req.LineItems[0].UnitOfMeasure = "EACH";
                req.LineItems[0].SKU = "SKU1";

            }
        }
        catch (Exception ex)
        {
            errorLog(ex);
        }
        return req;
    }
コード例 #8
0
    public bool job_runCustomerTrans(SAPCust sapcust, SAPbobsCOM.Documents oDoc, CCJOB job, string amt ="")
    {
        try
        {
            string cmd = "cc:sale";
            if (sapcust.custObj.PaymentMethodProfiles[0].MethodType == "check")
                cmd = "check";
            confirmNum = "";

            CustomerTransactionRequest req = job_createCustomRequest(job, oDoc, amt);
            req.Command = cmd;
            trace("Job_runCustomRequest: amount = " + req.Details.Amount + ", tax=" + req.Details.Tax + ",Subtotal=" + req.Details.Subtotal + ",shipping=" + req.Details.Shipping + ",Discount=" + req.Details.Discount +
             string.Format("runCustomerTrans, token={0}, method={1}:{2}", sapcust.custObj.CustomerToken, sapcust.custObj.PaymentMethodProfiles[0].MethodID, sapcust.custObj.PaymentMethodProfiles[0].CardNumber));
            req.CustReceipt = cfgsendCustomerEmail == "Y" ? true : false;
            req.CustReceiptName = "vterm_customer";
            req.CustReceiptEmail = sapcust.custObj.Email;
            if (req.Command == "cc:authonly" && cfgPreAuthEmail != "Y")
                req.CustReceipt = false;
            if (req.CustReceiptEmail == "")
                req.CustReceipt = false;
            SecurityToken token = getToken(sapcust.cccust.CCAccountID);
            TransactionResponse resp = new TransactionResponse();
            resp = ebiz.runCustomerTransaction(token, sapcust.custObj.CustomerToken, sapcust.custObj.PaymentMethodProfiles[0].MethodID, req);
            confirmNum = resp.RefNum;
            sendReceipt(token, sapcust, resp);
            int invoiceID = 0;
            if (oDoc != null)
                invoiceID = oDoc.DocEntry;
            job_logCustomTransaction(req, resp, sapcust, job, invoiceID.ToString());
            if (resp.Error.ToLower() == "approved")
            {
                job.Result = "Success";
                job.LastRunDate = DateTime.Today;
                update(job);
                return true;
            }
            else
            {
                if (resp.ResultCode == "D")
                {
                    if (req.CustReceiptEmail != "" && req.CustReceiptEmail != null && cfgCustomerReceipt != "")
                    {

                        try
                        {
                            EmailReceiptResponse emresp = ebiz.EmailReceipt(token, resp.RefNum, resp.RefNum, cfgCustomerReceipt, req.CustReceiptEmail);

                            if (emresp.ErrorCode == 0)
                            {
                                showStatus("Declined receipt sent.", SAPbouiCOM.BoMessageTime.bmt_Medium,false);
                            }
                            else
                                showStatus("Failed to send declined receipt.\r\n" + resp.Error, SAPbouiCOM.BoMessageTime.bmt_Medium,true);

                        }
                        catch (Exception ex2)
                        {
                            showStatus("Failed to send receipt.\r\n" + ex2.Message, SAPbouiCOM.BoMessageTime.bmt_Medium, false);
                        }

                    }
                }
                string err = "Job Failed. ID:" + job.jobID + "\r\n" + resp.Error;
                job.Result = err;
                job.LastRunDate = DateTime.Today;
                update(job);
                errorLog(err);
                return false;
            }

        }
        catch (Exception ex)
        {
            string err = "Job Failed. ID:" + job.jobID + "\r\n" + ex.Message;
            job.Result = err;
            job.LastRunDate = DateTime.Today;
            update(job);
            errorLog(ex);

            return false;
        }
    }