Пример #1
0
        public void IncludesFields()
        {
            string xml = "<paypal-details>" +
                         "<payer-email>[email protected]</payer-email>" +
                         "<payment-id>1234567890</payment-id>" +
                         "<authorization-id>12345</authorization-id>" +
                         "<token>token</token>" +
                         "<image-url>www.image-url.com</image-url>" +
                         "<debug-id>12345</debug-id>" +
                         "<payee-id>6789</payee-id>" +
                         "<payee-email>[email protected]</payee-email>" +
                         "<custom-field>so custom much wow</custom-field>" +
                         "<payer-id>1357</payer-id>" +
                         "<payer-first-name>Grace</payer-first-name>" +
                         "<payer-last-name>Hopper</payer-last-name>" +
                         "<payer-status>status</payer-status>" +
                         "<seller-protection-status>12345</seller-protection-status>" +
                         "<refund-id>8675309</refund-id>" +
                         "<capture-id>2468</capture-id>" +
                         "<transaction-fee-amount>10.00</transaction-fee-amount>" +
                         "<transaction-fee-currency-iso-code>123</transaction-fee-currency-iso-code>" +
                         "<refund-from-transaction-fee-amount>2.00</refund-from-transaction-fee-amount>" +
                         "<refund-from-transaction-fee-currency-iso-code>123</refund-from-transaction-fee-currency-iso-code>" +
                         "<description>item</description>" +
                         "<implicitly-vaulted-payment-method-token>implicittoken</implicitly-vaulted-payment-method-token>" +
                         "<implicitly-vaulted-payment-method-global-id>implicitglobalid</implicitly-vaulted-payment-method-global-id>" +
                         "<billing-agreement-id>billingagreementid</billing-agreement-id>" +
                         "</paypal-details>";
            var node = nodeFromXml(xml);

            PayPalDetails details = new PayPalDetails(node);

            Assert.AreEqual("*****@*****.**", details.PayerEmail);
            Assert.AreEqual("1234567890", details.PaymentId);
            Assert.AreEqual("12345", details.AuthorizationId);
            Assert.AreEqual("token", details.Token);
            Assert.AreEqual("www.image-url.com", details.ImageUrl);
            Assert.AreEqual("12345", details.DebugId);
            Assert.AreEqual("6789", details.PayeeId);
            Assert.AreEqual("*****@*****.**", details.PayeeEmail);
            Assert.AreEqual("so custom much wow", details.CustomField);
            Assert.AreEqual("1357", details.PayerId);
            Assert.AreEqual("Grace", details.PayerFirstName);
            Assert.AreEqual("Hopper", details.PayerLastName);
            Assert.AreEqual("status", details.PayerStatus);
            Assert.AreEqual("12345", details.SellerProtectionStatus);
            Assert.AreEqual("8675309", details.RefundId);
            Assert.AreEqual("2468", details.CaptureId);
            Assert.AreEqual("10.00", details.TransactionFeeAmount);
            Assert.AreEqual("123", details.TransactionFeeCurrencyIsoCode);
            Assert.AreEqual("2.00", details.RefundFromTransactionFeeAmount);
            Assert.AreEqual("123", details.RefundFromTransactionFeeCurrencyIsoCode);
            Assert.AreEqual("item", details.Description);
            Assert.AreEqual("implicittoken", details.ImplicitlyVaultedPaymentMethodToken);
            Assert.AreEqual("implicitglobalid", details.ImplicitlyVaultedPaymentMethodGlobalId);
            Assert.AreEqual("billingagreementid", details.BillingAgreementId);
        }
Пример #2
0
        private PayPalToken GetAuthorizationToken()
        {
            PayPalDetails details = db.PayPalDetails.First();
            PayPalToken   token   = null;

            if (details.Expires < DateTime.Now)
            {
                token = GetSetPayPalToken();
            }
            else
            {
                token = new PayPalToken()
                {
                    Access_Token = details.Token
                };
            }

            return(token);
        }
Пример #3
0
        public PayPalToken GetSetPayPalToken()
        {
            PayPalDetails details = db.PayPalDetails.First();

            string ClientID = details.ClientID;
            string Secret   = details.Secret;

            HttpClient    client  = new HttpClient();
            StringContent content = new StringContent("grant_type=client_credentials", Encoding.UTF8, "application/x-www-form-urlencoded");

            var bytes = Encoding.UTF8.GetBytes(ClientID + ":" + Secret);

            client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(bytes));

            HttpResponseMessage response = client.PostAsync("https://api.paypal.com/v1/oauth2/token", content).Result;

            if (response.IsSuccessStatusCode)
            {
                string      json  = response.Content.ReadAsStringAsync().Result;
                PayPalToken token = JsonConvert.DeserializeObject <PayPalToken>(json);

                int seconds = int.Parse(token.Expires_In);

                details.Token   = token.Access_Token;
                details.Expires = DateTime.Now.AddSeconds(seconds);
                db.SaveChanges();

                return(token);
            }
            else
            {
                return(new PayPalToken()
                {
                    Access_Token = "Failed"
                });
            }
        }
Пример #4
0
 public BillingSource(PayPalDetails paypal)
 {
     Type        = PaymentMethodType.PayPal;
     Description = paypal.PayerEmail;
 }
Пример #5
0
        public override object ReadJson(JsonReader reader,
                                        Type objectType, object existingValue,
                                        JsonSerializer serializer)
        {
            var jsonObject           = JObject.Load(reader);
            var paymentMethodDetails = default(IPaymentMethodDetails);

            switch (jsonObject["type"].ToString())
            {
            case AchDetails.Ach:
                paymentMethodDetails = new AchDetails();
                break;

            case AmazonPayDetails.AmazonPay:
                paymentMethodDetails = new AmazonPayDetails();
                break;

            case AndroidPayDetails.AndroidPay:
                paymentMethodDetails = new AndroidPayDetails();
                break;

            case ApplePayDetails.ApplePay:
                paymentMethodDetails = new ApplePayDetails();
                break;

            case BacsDirectDebitDetails.Directdebit_GB:
                paymentMethodDetails = new BacsDirectDebitDetails();
                break;

            case BilldeskOnlineDetails.BilldeskOnline:
                paymentMethodDetails = new BilldeskOnlineDetails();
                break;

            case BilldeskWalletDetails.BilldeskWallet:
                paymentMethodDetails = new BilldeskWalletDetails();
                break;

            case BlikDetails.Blik:
                paymentMethodDetails = new BlikDetails();
                break;

            case CellulantDetails.Cellulant:
                paymentMethodDetails = new CellulantDetails();
                break;

            case DokuDetails.Alfamart:
            case DokuDetails.Bcava:
            case DokuDetails.Bniva:
            case DokuDetails.Briva:
            case DokuDetails.Cimbva:
            case DokuDetails.Danamonva:
            case DokuDetails.Permataliteatm:
            case DokuDetails.Permatatm:
            case DokuDetails.Sinarmasva:
            case DokuDetails.Indomaret:
            case DokuDetails.Mandiriva:
                paymentMethodDetails = new DokuDetails();
                break;

            case DotpayDetails.Dotpay:
                paymentMethodDetails = new DotpayDetails();
                break;

            case DragonpayDetails.EBanking:
            case DragonpayDetails.OTCBanking:
            case DragonpayDetails.OTCNonBanking:
            case DragonpayDetails.OTCPhilippines:
                paymentMethodDetails = new DragonpayDetails();
                break;

            case EcontextVoucherDetails.Stores:
            case EcontextVoucherDetails.Seveneleven:
                paymentMethodDetails = new EcontextVoucherDetails();
                break;

            case EntercashDetails.Entercash:
                paymentMethodDetails = new EntercashDetails();
                break;

            case GiropayDetails.Giropay:
                paymentMethodDetails = new GiropayDetails();
                break;

            case GooglePayDetails.GooglePay:
                paymentMethodDetails = new GooglePayDetails();
                break;

            case IdealDetails.Ideal:
                paymentMethodDetails = new IdealDetails();
                break;

            case KlarnaDetails.Klarna:
            case KlarnaDetails.KlarnaAccount:
            case KlarnaDetails.KlarnaB2B:
            case KlarnaDetails.KlarnaPayNow:
            case KlarnaDetails.KlarnaPayments:
            case KlarnaDetails.KlarnaPaymentsAccount:
            case KlarnaDetails.KlarnaPaymentsB2B:
                paymentMethodDetails = new KlarnaDetails();
                break;

            case LianLianPayDetails.EbankingCredit:
            case LianLianPayDetails.EbankingDebit:
            case LianLianPayDetails.EbankingEnterprise:
                paymentMethodDetails = new LianLianPayDetails();
                break;

            case MasterpassDetails.Masterpass:
                paymentMethodDetails = new MasterpassDetails();
                break;

            case MbwayDetails.Mbway:
                paymentMethodDetails = new MbwayDetails();
                break;

            case MolPayDetails.EBankingDirectMY:
            case MolPayDetails.EBankingFPXMy:
            case MolPayDetails.EBankingMY:
            case MolPayDetails.EBankingTH:
            case MolPayDetails.EBankingVN:
            case MolPayDetails.FPX:
                paymentMethodDetails = new MolPayDetails();
                break;

            case MobilePayDetails.Mobilepay:
                paymentMethodDetails = new MobilePayDetails();
                break;

            case PayPalDetails.PayPal:
                paymentMethodDetails = new PayPalDetails();
                break;

            case PayUUpiDetails.PayUinUPI:
                paymentMethodDetails = new PayUUpiDetails();
                break;

            case QiwiWalletDetails.QiwiWallet:
                paymentMethodDetails = new QiwiWalletDetails();
                break;

            case SamsungPayDetails.SamsungPay:
                paymentMethodDetails = new SamsungPayDetails();
                break;

            case SepaDirectDebitDetails.Sepadirectdebit:
                paymentMethodDetails = new SepaDirectDebitDetails();
                break;

            case UpiDetails.Upi:
                paymentMethodDetails = new UpiDetails();
                break;

            case VippsDetails.Vipps:
                paymentMethodDetails = new VippsDetails();
                break;

            case VisaCheckoutDetails.VisaCheckout:
                paymentMethodDetails = new VisaCheckoutDetails();
                break;

            case WeChatPayDetails.Wechatpay:
                paymentMethodDetails = new WeChatPayDetails();
                break;

            case WeChatPayMiniProgramDetails.WechatpayMiniProgram:
                paymentMethodDetails = new WeChatPayMiniProgramDetails();
                break;

            default:
                paymentMethodDetails = new DefaultPaymentMethodDetails();
                break;
            }
            serializer.Populate(jsonObject.CreateReader(), paymentMethodDetails);
            return(paymentMethodDetails);
        }
Пример #6
0
        public async Task <ActionResult> BookFilm(int id)
        {
            var mf = db.MemberFilms.Where(m => m.FilmID == id && m.MemberID == CurrentMember.MemberID && m.Token != null).Any();

            if (mf)
            {
                return(RedirectToAction("AlreadyBooked", "Members"));
            }

            bool blocked = await IsBlocked(id);

            if (blocked)
            {
                return(RedirectToAction("GeoBlocked"));
            }

            Film film = db.Films.Find(id);

            PayPalToken       authToken   = GetAuthorizationToken();
            PayPalClientToken clientToken = null;

            PayPalDetails details = db.PayPalDetails.First();

            if (authToken.Access_Token == "Failed")
            {
                clientToken = new PayPalClientToken()
                {
                    client_id = details.ClientID, client_token = "FailedAuthorization"
                };
            }
            else
            {
                clientToken           = GetClientToken(authToken.Access_Token);
                clientToken.client_id = details.ClientID;
            }

            BookFilmViewModel vm = new BookFilmViewModel()
            {
                FilmID      = id,
                ClientID    = clientToken.client_id,
                ClientToken = clientToken.client_token
            };

            if (film != null)
            {
                ViewBag.ShowingTime = film.Showing;
            }

            ViewBag.CurrentTime = await GetLocationTime();

            if (film.FilmID == 242 || film.FilmID == 244 || film.FilmID == 245 || film.FilmID == 248)
            {
                ViewBag.Fiver = true;
            }
            else
            {
                ViewBag.Fiver = false;
            }

            return(View(vm));
        }