Ejemplo n.º 1
0
        protected PayfirmaTransactionResponse ProcessTransaction(String type, PayfirmaCredentials credentials, PayfirmaCreditCard cc, PayfirmaMetaData metaData, Double amount, Boolean isTest)
        {
            PayfirmaTransactionResponse payfirmaResponse = new PayfirmaTransactionResponse();
            var webClient = new WebClient();

            NameValueCollection requestData = new NameValueCollection();
            this.GenerateMetaData(metaData, requestData);
            requestData.Add("key", credentials.APIKey);
            requestData.Add("merchant_id", credentials.MerchantID);
            requestData.Add("amount", amount.ToString());
            requestData.Add("card_number", cc.Number);
            requestData.Add("card_expiry_month", cc.ExpMonth.ToString());
            requestData.Add("card_expiry_year", cc.ExpYear.ToString());
            requestData.Add("cvv2", cc.CVV2);
            if (isTest) { requestData.Add("test_mode", "true"); }

            requestData.Add("do_not_store", "true");

            if (type.ToLower() != "sale" && type.ToLower() != "authorize")
            {
                // Default to sale transaction type.
                type = "sale";
            }
            String url = this.GetPayfirmaURL() + "/" + type.ToLower(); ;

            try
            {
                var webResponseByte = webClient.UploadValues(url, "POST", requestData);
                var webResponse = Encoding.ASCII.GetString(webResponseByte);

                if (!String.IsNullOrEmpty(webResponse))
                {
                    payfirmaResponse = this.HandleTransacitonResponse(webResponse);
                }
                else
                {
                    payfirmaResponse.Error = "Payfirma unknown error";
                }
            }
            catch (Exception e)
            {
                payfirmaResponse.Error = "Payfirma Error: " + e.Message;
            }

            return payfirmaResponse;
        }
Ejemplo n.º 2
0
 public PayfirmaTransactionResponse ProcessAuthorize(PayfirmaCredentials credentials, PayfirmaCreditCard cc, PayfirmaMetaData metaData, Double amount, Boolean isTest)
 {
     return(base.ProcessTransaction("authorize", credentials, cc, metaData, amount, isTest));
 }
Ejemplo n.º 3
0
        protected PayfirmaTransactionResponse ProcessTransaction(String type, PayfirmaCredentials credentials, PayfirmaCreditCard cc, PayfirmaMetaData metaData, Double amount, Boolean isTest)
        {
            PayfirmaTransactionResponse payfirmaResponse = new PayfirmaTransactionResponse();
            var webClient = new WebClient();

            NameValueCollection requestData = new NameValueCollection();

            this.GenerateMetaData(metaData, requestData);
            requestData.Add("key", credentials.APIKey);
            requestData.Add("merchant_id", credentials.MerchantID);
            requestData.Add("amount", amount.ToString());
            requestData.Add("card_number", cc.Number);
            requestData.Add("card_expiry_month", cc.ExpMonth.ToString());
            requestData.Add("card_expiry_year", cc.ExpYear.ToString());
            requestData.Add("cvv2", cc.CVV2);
            if (isTest)
            {
                requestData.Add("test_mode", "true");
            }

            requestData.Add("do_not_store", "true");

            if (type.ToLower() != "sale" && type.ToLower() != "authorize")
            {
                // Default to sale transaction type.
                type = "sale";
            }
            String url = this.GetPayfirmaURL() + "/" + type.ToLower();;

            try
            {
                var webResponseByte = webClient.UploadValues(url, "POST", requestData);
                var webResponse     = Encoding.ASCII.GetString(webResponseByte);

                if (!String.IsNullOrEmpty(webResponse))
                {
                    payfirmaResponse = this.HandleTransacitonResponse(webResponse);
                }
                else
                {
                    payfirmaResponse.Error = "Payfirma unknown error";
                }
            }
            catch (Exception e)
            {
                payfirmaResponse.Error = "Payfirma Error: " + e.Message;
            }

            return(payfirmaResponse);
        }
Ejemplo n.º 4
0
        protected NameValueCollection GenerateMetaData(PayfirmaMetaData metaData, NameValueCollection data)
        {
            if (data == null)
            {
                data = new NameValueCollection();
            }

            if (!String.IsNullOrEmpty(metaData.Firstname))
            {
                data.Add("first_name", metaData.Firstname);
            }
            if (!String.IsNullOrEmpty(metaData.Lastname))
            {
                data.Add("last_name", metaData.Lastname);
            }
            if (!String.IsNullOrEmpty(metaData.Company))
            {
                data.Add("company", metaData.Company);
            }
            if (!String.IsNullOrEmpty(metaData.Address1))
            {
                data.Add("address1", metaData.Address1);
            }
            if (!String.IsNullOrEmpty(metaData.Address2))
            {
                data.Add("address2", metaData.Address2);
            }
            if (!String.IsNullOrEmpty(metaData.City))
            {
                data.Add("city", metaData.City);
            }
            if (!String.IsNullOrEmpty(metaData.Province))
            {
                data.Add("province", metaData.Province);
            }
            if (!String.IsNullOrEmpty(metaData.PostalCode))
            {
                data.Add("postal_code", metaData.PostalCode);
            }
            if (!String.IsNullOrEmpty(metaData.Telephone))
            {
                data.Add("telephone", metaData.Telephone);
            }
            if (!String.IsNullOrEmpty(metaData.Country))
            {
                data.Add("country", metaData.Country);
            }
            if (!String.IsNullOrEmpty(metaData.Email))
            {
                data.Add("email", metaData.Email);
            }
            if (!String.IsNullOrEmpty(metaData.Currency))
            {
                if (metaData.Currency == "CA$" || metaData.Currency == "US$")
                {
                    data.Add("currency", metaData.Currency);
                }
            }
            if (!String.IsNullOrEmpty(metaData.AmountTax))
            {
                data.Add("amount_tax", metaData.AmountTax);
            }
            if (!String.IsNullOrEmpty(metaData.AmountTip))
            {
                data.Add("amount_tip", metaData.AmountTip);
            }
            if (!String.IsNullOrEmpty(metaData.Description))
            {
                data.Add("description", metaData.Description);
            }
            if (!String.IsNullOrEmpty(metaData.OrderId))
            {
                data.Add("order_id", metaData.OrderId);
            }
            if (!String.IsNullOrEmpty(metaData.InvoiceId))
            {
                data.Add("invoice_id", metaData.InvoiceId);
            }
            if (!String.IsNullOrEmpty(metaData.BCCEmails))
            {
                data.Add("bcc_emails", metaData.BCCEmails);
            }
            return(data);
        }
 public PayfirmaTransactionResponse ProcessAuthorize(PayfirmaCredentials credentials, PayfirmaCreditCard cc, PayfirmaMetaData metaData, Double amount, Boolean isTest)
 {
     return base.ProcessTransaction("authorize", credentials, cc, metaData, amount, isTest);
 }
        protected NameValueCollection GenerateMetaData(PayfirmaMetaData metaData, NameValueCollection data)
        {
            if (data == null) { data = new NameValueCollection();  }

            if (!String.IsNullOrEmpty(metaData.Firstname)) { data.Add("first_name", metaData.Firstname); }
            if (!String.IsNullOrEmpty(metaData.Lastname)) { data.Add("last_name", metaData.Lastname); }
            if (!String.IsNullOrEmpty(metaData.Company)) { data.Add("company", metaData.Company); }
            if (!String.IsNullOrEmpty(metaData.Address1)) { data.Add("address1", metaData.Address1); }
            if (!String.IsNullOrEmpty(metaData.Address2)) { data.Add("address2", metaData.Address2); }
            if (!String.IsNullOrEmpty(metaData.City)) { data.Add("city", metaData.City); }
            if (!String.IsNullOrEmpty(metaData.Province)) { data.Add("province", metaData.Province); }
            if (!String.IsNullOrEmpty(metaData.PostalCode)) { data.Add("postal_code", metaData.PostalCode); }
            if (!String.IsNullOrEmpty(metaData.Telephone)) { data.Add("telephone", metaData.Telephone); }
            if (!String.IsNullOrEmpty(metaData.Country)) { data.Add("country", metaData.Country); }
            if (!String.IsNullOrEmpty(metaData.Email)) { data.Add("email", metaData.Email); }
            if (!String.IsNullOrEmpty(metaData.Currency))
            {
                if (metaData.Currency == "CA$" || metaData.Currency == "US$")
                {
                    data.Add("currency", metaData.Currency);
                }
            }
            if (!String.IsNullOrEmpty(metaData.AmountTax)) { data.Add("amount_tax", metaData.AmountTax); }
            if (!String.IsNullOrEmpty(metaData.AmountTip)) { data.Add("amount_tip", metaData.AmountTip); }
            if (!String.IsNullOrEmpty(metaData.Description)) { data.Add("description", metaData.Description); }
            if (!String.IsNullOrEmpty(metaData.OrderId)) { data.Add("order_id", metaData.OrderId); }
            if (!String.IsNullOrEmpty(metaData.InvoiceId)) { data.Add("invoice_id", metaData.InvoiceId); }
            if (!String.IsNullOrEmpty(metaData.BCCEmails)) { data.Add("bcc_emails", metaData.BCCEmails); }            
            return data;
        }
        public ProcessPaymentResult ProcessPayment(ProcessPaymentRequest processPaymentRequest)
        {
            var result = new ProcessPaymentResult();

            var customer = _customerService.GetCustomerById(processPaymentRequest.CustomerId);

            // Credit Card Info
            PayfirmaCreditCard cc = new PayfirmaCreditCard()
            {
                Number = processPaymentRequest.CreditCardNumber,
                ExpMonth = processPaymentRequest.CreditCardExpireMonth,
                ExpYear = processPaymentRequest.CreditCardExpireYear,
                CVV2 = processPaymentRequest.CreditCardCvv2
            };

            // Extra Meta Data
            PayfirmaMetaData payfirmaMeta = new PayfirmaMetaData();
            payfirmaMeta.Firstname = customer.BillingAddress.FirstName;
            payfirmaMeta.Lastname = customer.BillingAddress.LastName;
            if (!String.IsNullOrEmpty(customer.BillingAddress.Company)) { payfirmaMeta.Company = customer.BillingAddress.Company; }
            payfirmaMeta.Address1 = customer.BillingAddress.Address1;
            if (!String.IsNullOrEmpty(customer.BillingAddress.Address2)) { payfirmaMeta.Address2 = customer.BillingAddress.Address2; }
            payfirmaMeta.City = customer.BillingAddress.City;
            if (customer.BillingAddress.StateProvince != null)
            {
                payfirmaMeta.Province = customer.BillingAddress.StateProvince.Name;
            }
            payfirmaMeta.PostalCode = customer.BillingAddress.ZipPostalCode;
            if (customer.BillingAddress.Country != null)
            {
                payfirmaMeta.Country = customer.BillingAddress.Country.Name;
            }
            payfirmaMeta.Email = customer.BillingAddress.Email;

            String currencyCode = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId).CurrencyCode;
            payfirmaMeta.Currency = "CA$";
            if (currencyCode == "USD") { payfirmaMeta.Currency = "US$"; }
            payfirmaMeta.OrderId = processPaymentRequest.OrderGuid.ToString();
            if (!String.IsNullOrEmpty(customer.BillingAddress.PhoneNumber)) { payfirmaMeta.Telephone = customer.BillingAddress.PhoneNumber;  }
            payfirmaMeta.Description = "Payment via nopCommerce.";

            PayfirmaTransaction payfirma = new PayfirmaTransaction();
            PayfirmaTransactionResponse payfirmaResponse;
            if (_payfirmaPaymentSettings.TransactMode == TransactMode.Authorize)
            {
                payfirmaResponse = payfirma.ProcessAuthorize(this.PopulateMerchantCredentials(), cc, payfirmaMeta,
                    Convert.ToDouble(processPaymentRequest.OrderTotal), _payfirmaPaymentSettings.IsTest);
            }
            else
            {
                payfirmaResponse = payfirma.ProcessSale(this.PopulateMerchantCredentials(), cc, payfirmaMeta,
                   Convert.ToDouble(processPaymentRequest.OrderTotal), _payfirmaPaymentSettings.IsTest);
            }

            if (!String.IsNullOrEmpty(payfirmaResponse.Error))
            {
                result.AddError(payfirmaResponse.Error);
            }
            else if (!payfirmaResponse.Result)
            {
                result.AddError(payfirmaResponse.ResultMessage);
            } else {
                result.AvsResult = payfirmaResponse.AVS;
                result.AuthorizationTransactionCode = payfirmaResponse.AuthCode;
                result.AuthorizationTransactionId = payfirmaResponse.TransactionId;
                result.AuthorizationTransactionResult = payfirmaResponse.ResultMessage;

                if (_payfirmaPaymentSettings.TransactMode == TransactMode.Authorize)
                {
                    result.NewPaymentStatus = PaymentStatus.Authorized;
                }
                else
                {
                    result.NewPaymentStatus = PaymentStatus.Paid;
                }
            }

            return result;
        }