Ejemplo n.º 1
0
        public PostProcessPaymentResponse PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var resp               = new PostProcessPaymentResponse {
            };
            var     payment        = postProcessPaymentRequest.Payment;
            var     mcard          = new MasterCardApi(Settings);
            Billing billingAddress = new Billing();

            billingAddress.address = new Address()
            {
            };
            billingAddress.address.country = Utils.GetThreeChracterCountryCode(postProcessPaymentRequest.Order.BillingAddress.CountryCode); // "GBR";//orderDetail.Result.BillingAddress.CountryCode;
            if (string.IsNullOrEmpty(billingAddress.address.country) == true)
            {
                billingAddress.address.country = "GBR";
            }
            billingAddress.address.postcodeZip = postProcessPaymentRequest.Order.BillingAddress.PostCode;
            billingAddress.address.street      = postProcessPaymentRequest.Order.BillingAddress.Address1;
            billingAddress.address.city        = postProcessPaymentRequest.Order.BillingAddress.City;
            if (!string.IsNullOrEmpty(postProcessPaymentRequest.Order.BillingAddress.Address2))
            {
                billingAddress.address.street2 = postProcessPaymentRequest.Order.BillingAddress.Address2;
            }
            billingAddress.address.stateProvince = postProcessPaymentRequest.Order.BillingAddress.State;
            var boolResonse = mcard.CaptureNotification(ref payment, billingAddress);

            resp.Payment = payment;
            resp.Order   = postProcessPaymentRequest.Order;
            if (!boolResonse.IsValid)
            {
                resp.AddError(boolResonse.Message);
            }
            return(resp);
        }
Ejemplo n.º 2
0
        public static PostProcessPaymentResponse PostProcessPayment(this PaymentMethodModel paymentMethod, PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var            resp           = new PostProcessPaymentResponse();
            IPaymentMethod paymentProcess = null;

            paymentProcess = GetPaymentProcessor(paymentMethod.SystemName);
            if (paymentProcess != null)
            {
                paymentProcess.Settings = paymentMethod;
                resp = paymentProcess.PostProcessPayment(postProcessPaymentRequest);
            }
            return(resp);
        }
        public PostProcessPaymentResponse PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var resp = new PostProcessPaymentResponse();

            return(resp);
        }
        public PostProcessPaymentResponse PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var paymentResponse = new PostProcessPaymentResponse();
            var req             = new DoExpressCheckoutPaymentReq();
            var request         = new DoExpressCheckoutPaymentRequestType();
            var payment         = postProcessPaymentRequest.Payment;
            var order           = postProcessPaymentRequest.Order;

            req.DoExpressCheckoutPaymentRequest = request;
            request.Version = Settings.Version;
            var details = new DoExpressCheckoutPaymentRequestDetailsType();

            request.DoExpressCheckoutPaymentRequestDetails = details;
            details.PaymentAction = PaymentActionCodeType.Authorization;

            details.PaymentActionSpecified = true;
            details.Token   = postProcessPaymentRequest.Token;
            details.PayerID = postProcessPaymentRequest.PayerId;
            var payer = GetPayerInfo(postProcessPaymentRequest.Token, postProcessPaymentRequest.PayerId);

            var paymentDetail = new PaymentDetailsType();

            paymentDetail.OrderTotal       = new BasicAmountType();
            paymentDetail.OrderTotal.Value = order.GrandTotal.Raw.WithTax.ToString("N", new CultureInfo("en-us"));
            var currencyCode = (CurrencyCodeType)Utils.GetEnumValueByName(typeof(CurrencyCodeType), order.CurrencyCode);

            paymentDetail.OrderTotal.currencyID  = currencyCode;
            paymentDetail.ButtonSource           = "";
            paymentDetail.PaymentAction          = PaymentActionCodeType.Authorization;
            paymentDetail.PaymentActionSpecified = true;

            PaymentDetailsType[] paymentDetails = { paymentDetail };
            details.PaymentDetails = paymentDetails;
            //  System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            var credentials = PaypalSecurityHeader();
            DoExpressCheckoutPaymentResponseType response = _paypalService2.DoExpressCheckoutPayment(ref credentials, req);

            if (response.Ack == AckCodeType.Success)
            {
                payment.PaymentMethod  = "ExpressCheckout";
                payment.CvcResult      = payer.AccountVerifyCode;
                payment.AvsResult      = payer.AddressVerifyCode;
                payment.Secure3DResult = "";
                payment.CardHolderName = payer.Email;
                payment.IssuerCountry  = payer.CountryCode;
                payment.CardNo         = payer.PayerId;
                payment.IsVerify       = payer.IsVerify;
                payment.IsValidAddress = payer.IsValidAddress;
                payment.Info1          = "";
                if (!string.IsNullOrEmpty(payer.Address1))
                {
                    payment.Info1 = payer.Address1 + ", ";
                }
                if (!string.IsNullOrEmpty(payer.Address2))
                {
                    payment.Info1 = payment.Info1 + payer.Address2 + ", ";
                }
                if (!string.IsNullOrEmpty(payer.City))
                {
                    payment.Info1 = payment.Info1 + payer.City + ", ";
                }
                if (!string.IsNullOrEmpty(payer.State))
                {
                    payment.Info1 = payment.Info1 + payer.State + ", ";
                }
                if (!string.IsNullOrEmpty(payer.PostCode))
                {
                    payment.Info1 = payment.Info1 + payer.PostCode + ", ";
                }
                if (!string.IsNullOrEmpty(payer.CountryCode))
                {
                    payment.Info1 = payment.Info1 + payer.CountryCode;
                }
                var billAddress = new AddressModel
                {
                    FirstName   = payer.FirstName,
                    LastName    = payer.LastName,
                    Address1    = payer.Address1,
                    Address2    = payer.Address2,
                    City        = payer.City,
                    State       = payer.State,
                    PostCode    = payer.PostCode,
                    Country     = payer.Country,
                    CountryCode = payer.CountryCode,
                    PhoneNo     = payer.CountryCode
                };
                order.BillingAddress             = billAddress;//Mapper.Map<PayerInfo, Address>(payer);
                paymentResponse.Payment          = payment;
                paymentResponse.Order            = order;
                paymentResponse.Payment.AuthCode = response.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID;
                paymentResponse.Payment.Status   = PaymentStatus.Authorized.GetHashCode();
            }
            else
            {
                paymentResponse.Order   = order;
                payment.Status          = PaymentStatus.Declined.GetHashCode();
                payment.IsValid         = false;
                paymentResponse.Payment = payment;
                paymentResponse.AddError("decline");
                foreach (var er in response.Errors)
                {
                    paymentResponse.AddError(er.ErrorCode + " : " + er.ShortMessage);
                }
            }
            //if (Settings.IsImmediateCapture)
            //{
            //    var capturePaymentRequest = new CapturePaymentRequest();
            //    var pRes = new CapturePaymentResult();
            //    capturePaymentRequest.CurrencyCode = order.CurrencyCode;
            //    capturePaymentRequest.CaptureTransactionId = Convert.ToString(paymentResponse.Payment.AuthCode);
            //    capturePaymentRequest.OrderTotal = paymentResponse.Payment.OrderAmount;

            //    pRes = Capture(capturePaymentRequest);
            //    if (pRes.Success && string.IsNullOrEmpty(pRes.CaptureTransactionCode) == false)
            //    {
            //        paymentResponse.Payment.AuthCode = pRes.CaptureTransactionCode;
            //        paymentResponse.Payment.Status = PaymentStatus.Paid.GetHashCode();
            //        paymentResponse.Payment.PaidAmount = capturePaymentRequest.OrderTotal;
            //        paymentResponse.Order.PaymentStatus = PaymentStatus.Paid;
            //    }
            //    else
            //    {
            //        paymentResponse.Payment.PSPResponseMessage = pRes.CaptureTransactionResult;
            //    }

            //}
            return(paymentResponse);
        }