コード例 #1
0
        private SetExpressCheckoutReq GetSetExpressCheckoutRequest(CustomerOrder order, Store store, PaymentIn payment)
        {
            var ecDetails = new SetExpressCheckoutRequestDetailsType
            {
                CallbackTimeout = "3",
                ReturnURL       = string.Format("{0}/{1}?cancel=false&orderId={2}", store.Url, PaypalPaymentRedirectRelativePath, order.Id),
                CancelURL       = string.Format("{0}/{1}?cancel=true&orderId={2}", store.Url, PaypalPaymentRedirectRelativePath, order.Id)
            };

            if (PaymentMode.Equals("BankCard"))
            {
                ecDetails.SolutionType = SolutionTypeType.SOLE;
                ecDetails.LandingPage  = LandingPageType.BILLING;
            }
            else
            {
                ecDetails.SolutionType = SolutionTypeType.MARK;
                ecDetails.LandingPage  = LandingPageType.LOGIN;
            }

            var billingAddress = order.Addresses.FirstOrDefault(s => s.AddressType == VirtoCommerce.Domain.Commerce.Model.AddressType.Billing);

            if (billingAddress == null)
            {
                billingAddress = order.Addresses.FirstOrDefault();
            }

            if (billingAddress != null && !string.IsNullOrEmpty(billingAddress.Email))
            {
                ecDetails.BuyerEmail = billingAddress.Email;
            }

            ecDetails.PaymentDetails.Add(GetPaypalPaymentDetail(order.Currency.ToString(), PaypalPaymentActionType, payment));

            return(new SetExpressCheckoutReq
            {
                SetExpressCheckoutRequest = new SetExpressCheckoutRequestType
                {
                    SetExpressCheckoutRequestDetails = ecDetails
                }
            });
        }