Beispiel #1
0
        async public Task <bool> CreatPayer(int roomId, string payerName)
        {
            var bill = await Get(roomId);

            int payerId = 0;

            foreach (var item in bill.PayerInfo)
            {
                if (item.PayerId > payerId)
                {
                    payerId = item.PayerId;
                }
                if (item.PayerName == payerName)
                {
                    return(false);
                }
            }
            payerId++;
            var newPayer = new PayerInfo()
            {
                PayerId = payerId, PayerName = payerName
            };
            var update = Builders <Bill> .Update.Push(b => b.PayerInfo, newPayer);

            await _bills.UpdateOneAsync(b => b.RoomId == roomId, update);

            return(true);
        }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (PayerInfo != null)
     {
         PayerInfo.Validate();
     }
     if (ContributionType != null)
     {
         if (ContributionType.Length > 1)
         {
             throw new ValidationException(ValidationRules.MaxLength, "ContributionType", 1);
         }
     }
     if (PeriodId != null)
     {
         if (PeriodId.Length > 2)
         {
             throw new ValidationException(ValidationRules.MaxLength, "PeriodId", 2);
         }
     }
     if (PaymentTypeId != null)
     {
         if (PaymentTypeId.Length > 1)
         {
             throw new ValidationException(ValidationRules.MaxLength, "PaymentTypeId", 1);
         }
     }
 }
        private static string GetTableRefund(string externalId, string summary, PayerInfo payer)
        {
            var table = new StringBuilder();

            table.Append("<tr>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"font-size: 14px; color:#444;margin-top: 10px;\">{externalId}</h5>");
            table.Append("</td>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"margin-top: 15px; \">{summary}</h5>");
            table.Append("</td>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"font-size: 14px; color:#444;margin-top: 10px;\">{payer.email}</h5>");
            table.Append("</td>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"font-size: 14px; color:#444;margin-top:15px\"><b>{payer.first_name}</b></h5>");
            table.Append("</td>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"font-size: 14px; color:#444;margin-top:15px\"><b>{payer.phone}</b></h5>");
            table.Append("</td>");

            table.Append("<td valign=\"top\" style=\"padding-left: 15px; \">");
            table.Append($"<h5 style=\"font-size: 14px; color:#444;margin-top:15px\"><b>{payer.country_code}</b></h5>");
            table.Append("</td>");

            table.Append("</tr>");

            return(table.ToString());
        }
        public static string GetRefundBody(string externalId, string summary, PayerInfo payer)
        {
            var template = GetTemplateAsync("Orders.Domain.Messaging.Email.Templates.RefundTemplate.html");

            template = template.Replace("#{{tableOrders}}", GetTableRefund(externalId, summary, payer));

            return(template);
        }
Beispiel #5
0
        public static PayerInfo GetPayerInfoBasic()
        {
            PayerInfo info = new PayerInfo();

            info.first_name = "Joe";
            info.last_name  = "Shopper";
            info.payer_id   = "100";
            return(info);
        }
        public static PayerInfo GetPayerInfoBasic()
        {
            PayerInfo info = new PayerInfo();

            info.first_name       = "Joe";
            info.last_name        = "Shopper";
            info.payer_id         = "100";
            info.shipping_address = ShippingAddressTest.GetShippingAddress();
            return(info);
        }
Beispiel #7
0
        public static PayerInfo GetPayerInfoBasic()
        {
            PayerInfo info = new PayerInfo
            {
                first_name = "Joe",
                last_name  = "Shopper",
                payer_id   = "100"
            };

            return(info);
        }
Beispiel #8
0
        private PayerInfo GetPayerInfo()
        {
            PayerInfo info = new PayerInfo();

            info.first_name       = "Joe";
            info.last_name        = "Shopper";
            info.email            = "*****@*****.**";
            info.payer_id         = "100";
            info.phone            = "12345";
            info.shipping_address = GetShippingAddress();
            return(info);
        }
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (PayerInfo == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "PayerInfo");
     }
     if (FormCode == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "FormCode");
     }
     if (PeriodId == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "PeriodId");
     }
     if (PeriodType == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "PeriodType");
     }
     if (PayerInfo != null)
     {
         PayerInfo.Validate();
     }
     if (FormCode != null)
     {
         if (FormCode.Length > 7)
         {
             throw new ValidationException(ValidationRules.MaxLength, "FormCode", 7);
         }
     }
     if (PeriodId != null)
     {
         if (PeriodId.Length > 7)
         {
             throw new ValidationException(ValidationRules.MaxLength, "PeriodId", 7);
         }
     }
     if (PeriodType != null)
     {
         if (PeriodType.Length > 7)
         {
             throw new ValidationException(ValidationRules.MaxLength, "PeriodType", 7);
         }
     }
     if (ObligationId != null)
     {
         if (ObligationId.Length > 40)
         {
             throw new ValidationException(ValidationRules.MaxLength, "ObligationId", 40);
         }
     }
 }
Beispiel #10
0
        private AccountTypePayerInfo GetPayerInfo(PayerInfo payer)
        {
            switch (payer.Type)
            {
            case PayerType.Indv:
                return(new AccountTypePayerInfo {
                    Item = new AccountIndType {
                        Item = payer.SNILS
                    }
                });

            case PayerType.Legal:
                return(new AccountTypePayerInfo {
                    Item = new RegOrgVersionType {
                        orgVersionGUID = payer.OrgVersionGuid
                    }
                });

            default:
                return(new AccountTypePayerInfo {
                });
            }
        }
Beispiel #11
0
        //舊版
        public static PmchSslRequest setPaymentInfo(ProductModel prod, OrderModel orderModel, string orderMid)
        {
            PmchSslRequest pmch = new PmchSslRequest();

            pmch.apiKey    = "kkdayapi";
            pmch.userOid   = "1";
            pmch.ver       = "1.0.1";
            pmch.ipaddress = "127.0.0.1";

            CallJsonPay json = new CallJsonPay();

            json.pmchOid       = orderModel.payPmchOid;
            json.is3D          = "0";
            json.payCurrency   = orderModel.currency;
            json.payAmount     = Convert.ToDouble(orderModel.currPriceTotal);
            json.returnURL     = "https://*****:*****@kkday.com";

            json.payerInfo = payer;

            PayProductInfo prodInfo = new PayProductInfo();

            prodInfo.prodName = prod.prod_name;
            prodInfo.prodOid  = prod.prod_no.ToString();

            json.productInfo = prodInfo;

            PayMember member = new PayMember();

            member.memberUuid = orderModel.memberUuid;
            member.riskStatus = "01";

            json.member = member;
            pmch.json   = json;

            return(pmch);// JsonConvert.SerializeObject(pmch);
        }
        private PayerInfo GetPayerInfo(string token, string payerId)
        {
            var payer   = new PayerInfo();
            var req     = new GetExpressCheckoutDetailsReq();
            var request = new GetExpressCheckoutDetailsRequestType();

            req.GetExpressCheckoutDetailsRequest = request;
            request.Token   = token;
            request.Version = Settings.Version;
            // System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            var credentials = PaypalSecurityHeader();
            GetExpressCheckoutDetailsResponseType response = _paypalService2.GetExpressCheckoutDetails(ref credentials, req);

            if (response.Ack == AckCodeType.Success)
            {
                try
                {
                    payer.Email = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Payer;
                }
                catch (Exception)
                {
                    payer.Email = "";
                }

                payer.FirstName = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.FirstName;
                payer.LastName  = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.LastName;

                if (response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerStatusSpecified == true)
                {
                    if (response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerStatus == PayPalUserStatusCodeType.verified)
                    {
                        payer.IsVerify = true;
                    }
                    payer.AccountVerifyCode = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerStatus.ToString();
                }


                payer.Address1    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1;
                payer.Address2    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street2;
                payer.City        = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CityName;
                payer.State       = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.StateOrProvince;
                payer.PostCode    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.PostalCode;
                payer.PhoneNo     = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.ContactPhone;
                payer.Country     = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CountryName;
                payer.CountryCode = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Country.ToString();
                payer.PayerId     = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerID;
                payer.Token       = response.GetExpressCheckoutDetailsResponseDetails.Token;

                //if (response.GetExpressCheckoutDetailsResponseDetails.Note > "")
                //{
                //    payer.note = payer.note + response.GetExpressCheckoutDetailsResponseDetails.Note;
                //}
                //payer.OrderTotal = response.GetExpressCheckoutDetailsResponseDetails.PaymentDetails(0).OrderTotal.Value;
                //payer.IsValid = true;
                if (response.GetExpressCheckoutDetailsResponseDetails.BillingAddress == null)
                {
                    payer.Address1 = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1;
                    payer.Address2 = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street2;
                    payer.City     = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CityName;
                    payer.State    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.StateOrProvince;
                    payer.PostCode = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.PostalCode;
                    payer.Country  = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CountryName;

                    if (response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.AddressStatusSpecified == true)
                    {
                        if (response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.AddressStatus == AddressStatusCodeType.Confirmed)
                        {
                            payer.IsValidAddress = true;
                        }
                        payer.AddressVerifyCode = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.AddressStatus.ToString();
                    }
                }
                else
                {
                    payer.Address1 = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.Street1;
                    payer.Address2 = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.Street2;
                    payer.City     = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.CityName;
                    payer.State    = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.StateOrProvince;
                    payer.PostCode = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.PostalCode;
                    payer.Country  = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.CountryName;
                    if (response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.AddressStatusSpecified == true)
                    {
                        if (response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.AddressStatus == AddressStatusCodeType.Confirmed)
                        {
                            payer.IsValidAddress = true;
                        }
                        payer.AddressVerifyCode = response.GetExpressCheckoutDetailsResponseDetails.BillingAddress.AddressStatus.ToString();
                    }
                }

                //Shipping addd-----------------------------

                if (response.GetExpressCheckoutDetailsResponseDetails.PayerInfo == null)
                {
                    payer.Address1    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1;
                    payer.Address2    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street2;
                    payer.City        = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CityName;
                    payer.State       = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.StateOrProvince;
                    payer.PostCode    = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.PostalCode;
                    payer.CountryCode = response.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Country.ToString();
                }
            }
            return(payer);
        }
Beispiel #13
0
        public async Task <Payment> RunSample(PaymentInformation paymentInformation)
        {
            APIContext  apiContext   = Configuration.GetAPIContext("");
            Transaction transaction  = new Transaction();
            Transaction transaction2 = transaction;

            Amount amount = new Amount();

            amount.currency = "USD";
            amount.total    = paymentInformation.Total;

            Amount  amount2 = amount;
            Details details = new Details();

            details.shipping = paymentInformation.Shipping;
            details.subtotal = paymentInformation.SubTotal;
            details.tax      = paymentInformation.Tax;

            Details details2 = details;

            amount2.details = details2;

            Amount amount3 = amount;

            ((CartBase)transaction2).amount     = amount3;
            ((CartBase)transaction).description = paymentInformation.Description;

            Transaction     transaction3    = transaction;
            ItemList        itemList        = new ItemList();
            ItemList        itemList2       = itemList;
            ShippingAddress shippingAddress = new ShippingAddress();

            ((BaseAddress)shippingAddress).city         = paymentInformation.SCity;
            ((BaseAddress)shippingAddress).country_code = paymentInformation.SCountryCode;
            ((BaseAddress)shippingAddress).line1        = paymentInformation.SAddress;
            ((BaseAddress)shippingAddress).postal_code  = paymentInformation.SCountryCode;
            ((BaseAddress)shippingAddress).state        = paymentInformation.SState;
            shippingAddress.recipient_name = paymentInformation.SReceiverName;

            ShippingAddress shippingAddress2 = shippingAddress;

            itemList2.shipping_address = shippingAddress2;

            ItemList itemList3 = itemList;

            ((CartBase)transaction3).item_list     = itemList3;
            ((CartBase)transaction).invoice_number = Common.GetRandomInvoiceNumber();

            Transaction transaction4 = transaction;
            Payer       payer        = new Payer();

            payer.payment_method = "credit_card";

            Payer payer2 = payer;
            List <FundingInstrument> list               = new List <FundingInstrument>();
            List <FundingInstrument> list2              = list;
            FundingInstrument        fundingInstrument  = new FundingInstrument();
            FundingInstrument        fundingInstrument2 = fundingInstrument;
            CreditCard creditCard  = new CreditCard();
            CreditCard creditCard2 = creditCard;
            Address    address     = new Address();

            ((BaseAddress)address).city         = paymentInformation.BCity;
            ((BaseAddress)address).country_code = paymentInformation.BCountry;
            ((BaseAddress)address).line1        = paymentInformation.BAddress;
            ((BaseAddress)address).postal_code  = paymentInformation.BPostal;
            ((BaseAddress)address).state        = paymentInformation.SState;

            Address address2 = address;

            creditCard2.billing_address = address2;
            creditCard.cvv2             = paymentInformation.CVV2;
            creditCard.expire_month     = paymentInformation.expire_month;
            creditCard.expire_year      = paymentInformation.expire_year;
            creditCard.first_name       = paymentInformation.first_name;
            creditCard.last_name        = paymentInformation.last_name;
            creditCard.number           = paymentInformation.number;
            creditCard.type             = paymentInformation.type;

            CreditCard creditCard3 = creditCard;

            fundingInstrument2.credit_card = creditCard3;

            FundingInstrument fundingInstrument3 = fundingInstrument;

            list2.Add(fundingInstrument3);

            List <FundingInstrument> list3 = list;

            payer2.funding_instruments = list3;

            Payer     payer3    = payer;
            PayerInfo payerInfo = new PayerInfo();

            payerInfo.email = paymentInformation.EmailID;

            PayerInfo payerInfo2 = payerInfo;

            payer3.payer_info = payerInfo2;

            Payer   payer4  = payer;
            Payment payment = new Payment();

            payment.intent = "sale";
            payment.payer  = payer4;

            Payment            payment2 = payment;
            List <Transaction> list4    = new List <Transaction>();

            list4.Add(transaction4);

            List <Transaction> list5 = list4;

            payment2.transactions = list5;

            Payment payment3 = payment;

            try
            {
                return(payment3.Create(apiContext));
            }
            catch (PaymentsException ex)
            {
                Payment payment4 = new Payment();
                payment4.state = ex.Details.message;

                return(payment4);
            }
        }
Beispiel #14
0
        public ActionResult Test()
        {
            //decimal subtotal = priceItem - priceItem * tax;
            string sPriceItem = Helpers.Tools.PriceFormat(priceItem);
            string sTax       = Helpers.Tools.PriceFormat(priceItem * tax);
            string sSubtotal  = Helpers.Tools.PriceFormat(decimal.Parse(sPriceItem) - decimal.Parse(sTax));

            // Get a reference to the config
            var config = ConfigManager.Instance.GetProperties();

            // Use OAuthTokenCredential to request an access token from PayPal
            var accessToken = new OAuthTokenCredential(config).GetAccessToken();

            Session["accesstoken"] = accessToken;

            APIContext apiContext = new APIContext(accessToken);

            apiContext.Config = config;

            Details dtl = new Details()
            {
                tax      = sTax,
                subtotal = sSubtotal,
                shipping = "0",
            };

            //contact infor
            Address addr = new Address()
            {
                city         = sCity,
                country_code = sCountryCode,
                line1        = sAddressLine1,
                line2        = sAddressLine2,
                phone        = sPhone,
                postal_code  = sPostalCode,
                state        = sProvince,
            };

            PayerInfo payInfo = new PayerInfo()
            {
                //billing_address = addr,
                //country_code= sCountryCode,
                first_name = sFirstName,
                last_name  = sLastName,
                //middle_name ="",
                email = sEmail,
                //phone =sPhone,
            };

            Amount amnt = new Amount()
            {
                currency = currency,
                total    = sPriceItem,
                details  = dtl,
            };

            List <Transaction> transactionList = new List <Transaction>();
            Transaction        tran            = new Transaction()
            {
                description = sItemName,
                custom      = sItemName + " some additional information",
                amount      = amnt
            };

            transactionList.Add(tran);

            Payer payr = new Payer();

            payr.payment_method = "paypal";
            payr.payer_info     = payInfo;

            RedirectUrls redirUrls = new RedirectUrls();

            redirUrls.cancel_url = "https://devtools-paypal.com/guide/pay_paypal/dotnet?cancel=true";
            //redirUrls.return_url = "https://devtools-paypal.com/guide/pay_paypal/dotnet?success=true";
            redirUrls.return_url = "https://localhost:44320/PayPal/ReturnTest";

            Payment pymnt = new Payment();

            pymnt.intent        = "sale";
            pymnt.payer         = payr;
            pymnt.transactions  = transactionList;
            pymnt.redirect_urls = redirUrls;

            Payment createdPayment = pymnt.Create(apiContext);
            string  ApprovalURL    = createdPayment.GetApprovalUrl();

            // saving the paymentID in the key guid
            //Session.Add(guid, createdPayment.id);

            Response.Redirect(ApprovalURL);

            return(View());
        }
Beispiel #15
0
        public async Task <TransactionResponse> ProcessTransactionAsync(TransactionRequest transDef)
        {
            if (transDef == null)
            {
                throw (new ArgumentNullException("transDef"));
            }

            if (!await InitializeAsync())
            {
                return(new TransactionResponse(BaseResponse.ResultCodesEnum.NotReady, _errorList));
            }

            if (!IsValidTransaction(transDef, out var errorList))
            {
                return(new TransactionResponse(TransactionResponse.ResultCodesEnum.InvalidParametersError, errorList));
            }

            var cardType = await _repo.Get(transDef.CardCode);

            if (cardType is null || !cardType.MerchantNumber.HasValue)
            {
                return(new TransactionResponse(BaseResponse.ResultCodesEnum.InvalidParametersError, "El cardCode [" + transDef.CardCode + "] no tiene un 'Código de Comercio' asignado."));
            }

            //Map TransDef to SellRequest, then ProcessSell
            var commandResponse = await _commLayer.ProcessTransaction(
                new SellRequest
            {
                Amount              = transDef.Amount,
                Installments        = transDef.Installments,
                CardCode            = transDef.CardCode,
                IsOnlineTransaction = true,
                InvoiceNumber       = transDef.InvoiceNumber,
                MerchantNumber      = cardType.MerchantNumber.Value,
                MerchantCuit        = _merchantCuit,
                MerchantName        = _merchantName,
                TipAmount           = transDef.TipAmount,
                PlanCode            = 0
            }
                );

            //Map result back to TransResponse
            switch (commandResponse.ResultCode)
            {
            case CommandResponse.ResultCodesEnum.Error:
                return(new TransactionResponse(BaseResponse.ResultCodesEnum.ProcessorError, commandResponse.ResultText));

            case CommandResponse.ResultCodesEnum.Timeout:
                return(new TransactionResponse(BaseResponse.ResultCodesEnum.Timeout, commandResponse.ResultText));

            case CommandResponse.ResultCodesEnum.UserCancel:
                return(new TransactionResponse(BaseResponse.ResultCodesEnum.UserCancel, commandResponse.ResultText));

            case CommandResponse.ResultCodesEnum.Success:
                var sellResponse = (SellResponse)commandResponse.Content;
                var retVal       = new TransactionResponse()
                {
                    AuthCode  = sellResponse.AuthCode.ToString(),
                    PayerInfo = new PayerInfo
                    {
                        FirstName = sellResponse.CustomerName
                    },
                    ProcessorResponse = sellResponse.ResponseMessage,
                    ResultDescription = sellResponse.ResponseText,
                    ResultCode        = sellResponse.ResponseCode switch
                    {
                        "00" => BaseResponse.ResultCodesEnum.Approved,
                        "08" => BaseResponse.ResultCodesEnum.Approved,
                        "85" => BaseResponse.ResultCodesEnum.Approved,
                        "88" => BaseResponse.ResultCodesEnum.Approved,
                        _ => BaseResponse.ResultCodesEnum.Rejected
                    },
                    CardInfo = new CardInfo
                    {
                        CardType = cardType.Name,
                        FirstSix = sellResponse.CardFirst6.ToString(),
                        LastFour = sellResponse.CardLast4.ToString()
                    },
                    VoucherCode = sellResponse.VoucherCode.ToString(),
                    TerminalId  = sellResponse.TerminalId.ToString()
                };
                retVal.TotalPaid   = retVal.ResultCode == BaseResponse.ResultCodesEnum.Approved ? transDef.Amount : 0;
                retVal.NetReceived = retVal.TotalPaid;
                return(retVal);
            }
Beispiel #16
0
        public void ToStringTest()
        {
            PayerInfo info = CreatePayerInfo();

            Assert.IsFalse(info.ToString().Length == 0);
        }
Beispiel #17
0
        public void ConvertToJsonTest()
        {
            PayerInfo info = CreatePayerInfo();

            Assert.IsFalse(info.ConvertToJson().Length == 0);
        }
        private Payment CreatePayment(APIContext apiContext, string redirectUrl)
        {
            //similar to credit card create itemlist and add item objects to it
            var itemList = new ItemList()
            {
                items = new List <Item>()
            };

            itemList.items.Add(new Item()
            {
                name     = "SharePoint Easy Nav",
                currency = "USD",
                price    = Convert.ToString(500),
                quantity = "1",
                sku      = "sku"
            });

            Address billingAddress = new Address();

            billingAddress.city         = "Juneau";
            billingAddress.country_code = "US";
            billingAddress.line1        = "Street 1";
            billingAddress.postal_code  = "99801";
            billingAddress.state        = "NY";
            billingAddress.phone        = "95666666666";

            PayerInfo payerinfo = new PayerInfo();

            payerinfo.billing_address = billingAddress;
            payerinfo.email           = "*****@*****.**";

            var payer = new Payer()
            {
                payment_method = "paypal", payer_info = payerinfo
            };

            // Configure Redirect Urls here with RedirectUrls object
            var redirUrls = new RedirectUrls()
            {
                cancel_url = redirectUrl,
                return_url = redirectUrl
            };

            // similar as we did for credit card, do here and create details object
            var details = new Details()
            {
                tax = Convert.ToString(200),
                //shipping = "1",
                subtotal = Convert.ToString(500)
            };

            // similar as we did for credit card, do here and create amount object
            var amount = new Amount()
            {
                currency = "USD",
                total    = Convert.ToString(700), // Total must be equal to sum of shipping, tax and subtotal.
                details  = details
            };

            var transactionList = new List <Transaction>();

            transactionList.Add(new Transaction()
            {
                //description = "Transaction description.",
                invoice_number = "BR000011111",
                amount         = amount,
                item_list      = itemList
            });

            this.payment = new Payment()
            {
                intent        = "sale",
                payer         = payer,
                transactions  = transactionList,
                redirect_urls = redirUrls
            };

            // Create a payment using a APIContext
            return(this.payment.Create(apiContext));
        }