public void ParsesNodeCorrectlyWithGooglePayDetails()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>AndroidPayCard</type>" +
                         "  <nonce>fake-android-pay-nonce</nonce>" +
                         "  <description></description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <details>" +
                         "    <is-network-tokenized>true</is-network-tokenized>" +
                         "  </details>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-android-pay-nonce", result.Target.Nonce);
            Assert.AreEqual("AndroidPayCard", result.Target.Type);
            Assert.IsNotNull(result.Target.Details);
            Assert.IsTrue(result.Target.Details.IsNetworkTokenized);
        }
        public void CreateForCurrency_HandlesInvalidCurrency()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> merchantResult = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "credit_card", "paypal" },
                CompanyName       = "Ziarog LTD"
            });

            Assert.IsTrue(merchantResult.IsSuccess());

            gateway = new BraintreeGateway(merchantResult.Target.Credentials.AccessToken);
            Result <MerchantAccount> result = gateway.MerchantAccount.CreateForCurrency(new MerchantAccountCreateForCurrencyRequest {
                Currency = "badCurrency",
            });

            Assert.IsFalse(result.IsSuccess());
            List <ValidationError> errors = result.Errors.ForObject("merchant").OnField("currency");

            Assert.AreEqual(1, errors.Count);
            Assert.AreEqual(ValidationErrorCode.MERCHANT_CURRENCY_IS_INVALID, errors[0].Code);
        }
        public async Task CreateForCurrencyAsync()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> merchantResult = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "credit_card", "paypal" },
                CompanyName       = "Ziarog LTD"
            });

            Assert.IsTrue(merchantResult.IsSuccess());

            gateway = new BraintreeGateway(merchantResult.Target.Credentials.AccessToken);
            Result <MerchantAccount> result = await gateway.MerchantAccount.CreateForCurrencyAsync(new MerchantAccountCreateForCurrencyRequest {
                Currency = "GBP",
                Id       = "testId",
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.AreEqual("testId", result.Target.Id);
            Assert.AreEqual("GBP", result.Target.CurrencyIsoCode);
        }
        public void ParsesNodeCorrectlyWithDetailsMissing()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>CreditCard</type>" +
                         "  <nonce>fake-valid-nonce</nonce>" +
                         "  <description>ending in 22</description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <three-d-secure-info nil=\"true\"/>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-valid-nonce", result.Target.Nonce);
            Assert.AreEqual("CreditCard", result.Target.Type);
            Assert.IsNull(result.Target.ThreeDSecureInfo);
            Assert.IsNull(result.Target.Details);
        }
Beispiel #5
0
        public void All_ReturnsAllMerchantAccounts()
        {
            gateway = new BraintreeGateway(
                "client_id$development$integration_client_id",
                "client_secret$development$integration_client_secret"
            );

            var code = OAuthTestHelper.CreateGrant(gateway, "integration_merchant_id", "read_write");
            ResultImpl<OAuthCredentials> accessTokenResult = gateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest
            {
                Code = code,
                Scope = "read_write"
            });

            BraintreeGateway OAuthGateway = new BraintreeGateway(accessTokenResult.Target.AccessToken);

            var merchantAccountResults = OAuthGateway.MerchantAccount.All();

            var merchantAccounts = new List<MerchantAccount>();
            foreach (var merchantAccount in merchantAccountResults)
            {
                merchantAccounts.Add(merchantAccount);
            }
            Assert.IsTrue(merchantAccounts.Count > 20);
        }
        public void ParsesNodeCorrectlyWithVenmoDetails()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>VenmoAccount</type>" +
                         "  <nonce>fake-venmo-account-nonce</nonce>" +
                         "  <description></description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <details>" +
                         "    <last-two>99</last-two>" +
                         "    <username>venmojoe</username>" +
                         "    <venmo-user-id>Venmo-Joe-1</venmo-user-id>" +
                         "  </details>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-venmo-account-nonce", result.Target.Nonce);
            Assert.AreEqual("VenmoAccount", result.Target.Type);
            Assert.IsNotNull(result.Target.Details);
            Assert.AreEqual("99", result.Target.Details.LastTwo);
            Assert.AreEqual("venmojoe", result.Target.Details.Username);
            Assert.AreEqual("Venmo-Joe-1", result.Target.Details.VenmoUserId);
        }
        public void ParsesNodeCorrectlyWithCreditCardDetails()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>CreditCard</type>" +
                         "  <nonce>fake-visa-nonce</nonce>" +
                         "  <description></description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <details>" +
                         "    <last-two>99</last-two>" +
                         "    <last-four>9999</last-four>" +
                         "    <expiration-month>12</expiration-month>" +
                         "    <expiration-year>2001</expiration-year>" +
                         "  </details>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-visa-nonce", result.Target.Nonce);
            Assert.AreEqual("CreditCard", result.Target.Type);
            Assert.IsNotNull(result.Target.Details);
            Assert.AreEqual("99", result.Target.Details.LastTwo);
            Assert.AreEqual("9999", result.Target.Details.LastFour);
            Assert.AreEqual("12", result.Target.Details.ExpirationMonth);
            Assert.AreEqual("2001", result.Target.Details.ExpirationYear);
        }
        public void GetAuthorizationHeader_ReturnsAccessToken()
        {
            BraintreeGateway oauthGateway = new BraintreeGateway(
                "client_id$development$integration_client_id",
                "client_secret$development$integration_client_secret"
                );

            string code = OAuthTestHelper.CreateGrant(oauthGateway, "integration_merchant_id", "read_write");

            ResultImpl <OAuthCredentials> accessTokenResult = oauthGateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest
            {
                Code  = code,
                Scope = "read_write"
            });

            BraintreeGateway gateway            = new BraintreeGateway(accessTokenResult.Target.AccessToken);
            Configuration    oauthConfiguration = gateway.Configuration;
            BraintreeService oauthService       = new BraintreeService(oauthConfiguration);
            var headers = oauthService.GetAuthorizationHeader();

#if netcore
            Assert.AreEqual(oauthConfiguration.AccessToken, headers);
#else
            Assert.AreEqual(oauthConfiguration.AccessToken, headers.Split(' ')[1]);
#endif
        }
        public void VerificationIsLatestVerification()
        {
            string xml = "<credit-card>"
                          + "<verifications>"
                          + "    <verification>"
                          + "        <created-at type=\"datetime\">2014-11-20T17:27:15Z</created-at>"
                          + "        <id>123</id>"
                          + "    </verification>"
                          + "    <verification>"
                          + "        <created-at type=\"datetime\">2014-11-20T17:27:18Z</created-at>"
                          + "        <id>932</id>"
                          + "    </verification>"
                          + "    <verification>"
                          + "        <created-at type=\"datetime\">2014-11-20T17:27:17Z</created-at>"
                          + "        <id>456</id>"
                          + "    </verification>"
                          + "</verifications>"
                        + "</credit-card>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl<CreditCard>(node, gateway);

            Assert.AreEqual("932", result.Target.Verification.Id);
        }
Beispiel #10
0
        public void All_ReturnsMerchantAccountWithCorrectAttributes()
        {
            gateway = new BraintreeGateway(
                "client_id$development$integration_client_id",
                "client_secret$development$integration_client_secret"
            );

            ResultImpl<Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods = new string[] {"credit_card", "paypal"},
                Scope = "read_write,shared_vault_transactions",
            });

            BraintreeGateway OAuthGateway = new BraintreeGateway(result.Target.Credentials.AccessToken);

            PaginatedCollection<MerchantAccount> merchantAccountResults = OAuthGateway.MerchantAccount.All();
            var merchantAccounts = new List<MerchantAccount>();
            foreach (var ma in merchantAccountResults)
            {
                merchantAccounts.Add(ma);
            }
            Assert.AreEqual(1, merchantAccounts.Count);

            MerchantAccount merchantAccount = merchantAccounts[0];
            Assert.AreEqual("USD", merchantAccount.CurrencyIsoCode);
            Assert.AreEqual(MerchantAccountStatus.ACTIVE, merchantAccount.Status);
            Assert.IsTrue(merchantAccount.IsDefault);
        }
        public void Create_IgnoresMultiCurrencyIfOnboardingApplicationIsNotInternal()
        {
            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "paypal" },
                Currencies        = new string[] { "GBP", "USD" },
                PayPalAccount     = new PayPalOnlyAccountRequest {
                    ClientId     = "paypal_client_id",
                    ClientSecret = "paypal_client_secret"
                }
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.IsFalse(string.IsNullOrEmpty(result.Target.Id));
            Assert.AreEqual("*****@*****.**", result.Target.Email);
            Assert.AreEqual("*****@*****.**", result.Target.CompanyName);
            Assert.AreEqual("USA", result.Target.CountryCodeAlpha3);
            Assert.AreEqual("US", result.Target.CountryCodeAlpha2);
            Assert.AreEqual("840", result.Target.CountryCodeNumeric);
            Assert.AreEqual("United States of America", result.Target.CountryName);

            Assert.IsTrue(result.Target.Credentials.AccessToken.StartsWith("access_token$"));
            Assert.IsTrue(result.Target.Credentials.RefreshToken.StartsWith("refresh_token$"));
            Assert.IsTrue(result.Target.Credentials.ExpiresAt > DateTime.Now);
            Assert.AreEqual("bearer", result.Target.Credentials.TokenType);

            Assert.AreEqual(1, result.Target.MerchantAccounts.Length);
        }
Beispiel #12
0
        public void VerificationIsLatestVerification()
        {
            string xml = "<credit-card>"
                         + "<verifications>"
                         + "    <verification>"
                         + "        <created-at type=\"datetime\">2014-11-20T17:27:15Z</created-at>"
                         + "        <id>123</id>"
                         + "    </verification>"
                         + "    <verification>"
                         + "        <created-at type=\"datetime\">2014-11-20T17:27:18Z</created-at>"
                         + "        <id>932</id>"
                         + "    </verification>"
                         + "    <verification>"
                         + "        <created-at type=\"datetime\">2014-11-20T17:27:17Z</created-at>"
                         + "        <id>456</id>"
                         + "    </verification>"
                         + "</verifications>"
                         + "</credit-card>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <CreditCard>(node, gateway);

            Assert.AreEqual("932", result.Target.Verification.Id);
        }
Beispiel #13
0
        internal static async Task <Result <TData> > GetResponse <TData>(this HttpResponseMessage responseMessage)
        {
            string rawResponse = await responseMessage.Content.ReadAsStringAsync();

            TData response = SerializerCache.Deserializer.Deserialize <TData>(new JsonTextReader(new StringReader(rawResponse)));

            Result <TData> result = new ResultImpl <TData>(responseMessage, response);

            return(result);
        }
Beispiel #14
0
        public void Constructor_documentUploadCanMapFileIsTooLongResponse()
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(FILE_IS_TOO_LONG_RESPONSE);

            var result = new ResultImpl <DocumentUpload>(new NodeWrapper(doc.DocumentElement), gateway);

            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(ValidationErrorCode.DOCUMENT_UPLOAD_FILE_IS_TOO_LONG, result.Errors.ForObject("DocumentUpload").OnField("File")[0].Code);
        }
Beispiel #15
0
        public void Create_FailsWithInvalidPaymentMethods()
        {
            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "fake_money" }
            });

            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(
                ValidationErrorCode.MERCHANT_PAYMENT_METHODS_ARE_INVALID,
                result.Errors.ForObject("merchant").OnField("payment-methods")[0].Code
                );
        }
Beispiel #16
0
        public void CreateTokenFromCode_ReturnsOAuthCredentials()
        {
            string code = OAuthTestHelper.CreateGrant(gateway, "integration_merchant_id", "read_write");

            ResultImpl <OAuthCredentials> result = gateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest {
                Code  = code,
                Scope = "read_write"
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.IsNotNull(result.Target.AccessToken);
            Assert.IsNotNull(result.Target.RefreshToken);
            Assert.IsNotNull(result.Target.ExpiresAt);
            Assert.AreEqual("bearer", result.Target.TokenType);
        }
        public void ParsesNodeCorrectlyWithBinData()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>CreditCard</type>" +
                         "  <nonce>fake-valid-nonce</nonce>" +
                         "  <description>ending in 22</description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <three-d-secure-info nil=\"true\"/>" +
                         "  <details nil=\"true\"/>" +
                         "  <bin-data>" +
                         "    <healthcare>Yes</healthcare>" +
                         "    <debit>No</debit>" +
                         "    <durbin-regulated>Unknown</durbin-regulated>" +
                         "    <commercial>Unknown</commercial>" +
                         "    <payroll>Unknown</payroll>" +
                         "    <prepaid>NO</prepaid>" +
                         "    <issuing-bank>Unknown</issuing-bank>" +
                         "    <country-of-issuance>Something</country-of-issuance>" +
                         "    <product-id>123</product-id>" +
                         "  </bin-data>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-valid-nonce", result.Target.Nonce);
            Assert.AreEqual("CreditCard", result.Target.Type);
            Assert.IsNull(result.Target.ThreeDSecureInfo);
            Assert.IsNull(result.Target.Details);
            Assert.IsNotNull(result.Target.BinData);
            Assert.AreEqual(Braintree.CreditCardCommercial.UNKNOWN, result.Target.BinData.Commercial);
            Assert.AreEqual(Braintree.CreditCardDebit.NO, result.Target.BinData.Debit);
            Assert.AreEqual(Braintree.CreditCardDurbinRegulated.UNKNOWN, result.Target.BinData.DurbinRegulated);
            Assert.AreEqual(Braintree.CreditCardHealthcare.YES, result.Target.BinData.Healthcare);
            Assert.AreEqual(Braintree.CreditCardPayroll.UNKNOWN, result.Target.BinData.Payroll);
            Assert.AreEqual(Braintree.CreditCardPrepaid.NO, result.Target.BinData.Prepaid);
            Assert.AreEqual("Something", result.Target.BinData.CountryOfIssuance);
            Assert.AreEqual("123", result.Target.BinData.ProductId);
            Assert.AreEqual("Unknown", result.Target.BinData.IssuingBank);
        }
Beispiel #18
0
        public void CreateTokenFromBadCode_ReturnsFailureCode()
        {
            ResultImpl <OAuthCredentials> result = gateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest {
                Code  = "bad_code",
                Scope = "read_write"
            });

            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(
                ValidationErrorCode.OAUTH_INVALID_GRANT,
                result.Errors.ForObject("Credentials").OnField("Code")[0].Code
                );
            Assert.AreEqual(
                "Invalid grant: code not found",
                result.Errors.ForObject("Credentials").OnField("Code")[0].Message
                );
        }
        public void Create_MultiCurrencyMerchant()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "paypal" },
                CompanyName       = "Ziarog LTD",
                Currencies        = new string[] { "GBP", "USD" },
                PayPalAccount     = new PayPalOnlyAccountRequest {
                    ClientId     = "paypal_client_id",
                    ClientSecret = "paypal_client_secret"
                }
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.IsFalse(string.IsNullOrEmpty(result.Target.Id));
            Assert.AreEqual("*****@*****.**", result.Target.Email);
            Assert.AreEqual("Ziarog LTD", result.Target.CompanyName);
            Assert.AreEqual("USA", result.Target.CountryCodeAlpha3);
            Assert.AreEqual("US", result.Target.CountryCodeAlpha2);
            Assert.AreEqual("840", result.Target.CountryCodeNumeric);
            Assert.AreEqual("United States of America", result.Target.CountryName);

            Assert.IsTrue(result.Target.Credentials.AccessToken.StartsWith("access_token$"));
            Assert.IsTrue(result.Target.Credentials.RefreshToken.StartsWith("refresh_token$"));
            Assert.IsTrue(result.Target.Credentials.ExpiresAt > DateTime.Now);
            Assert.AreEqual("bearer", result.Target.Credentials.TokenType);

            Assert.AreEqual(2, result.Target.MerchantAccounts.Length);

            var usdMerchantAccount = (from ma in result.Target.MerchantAccounts where ma.Id == "USD" select ma).ToArray()[0];

            Assert.AreEqual("USD", usdMerchantAccount.CurrencyIsoCode);
            Assert.IsTrue(usdMerchantAccount.IsDefault.Value);

            var gbpMerchantAccount = (from ma in result.Target.MerchantAccounts where ma.Id == "GBP" select ma).ToArray()[0];

            Assert.AreEqual("GBP", gbpMerchantAccount.CurrencyIsoCode);
            Assert.IsFalse(gbpMerchantAccount.IsDefault.Value);
        }
        public void ParseThreeDSecureInfo()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>CreditCard</type>" +
                         "  <nonce>fake-valid-nonce</nonce>" +
                         "  <description>ending in 22</description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <three-d-secure-info>" +
                         "    <enrolled>Y</enrolled>" +
                         "    <status>authenticate_successful</status>" +
                         "    <liability-shifted>true</liability-shifted>" +
                         "    <liability-shift-possible>true</liability-shift-possible>" +
                         "    <cavv>cavv-value</cavv>" +
                         "    <xid>xid-value</xid>" +
                         "    <ds-transaction-id>ds-trx-id-value</ds-transaction-id>" +
                         "    <eci-flag>06</eci-flag>" +
                         "    <three-d-secure-version>2.0.1</three-d-secure-version>" +
                         "  </three-d-secure-info>" +
                         "  <details nil=\"true\"/>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result           = new ResultImpl <PaymentMethodNonce>(node, gateway);
            var threeDSecureInfo = result.Target.ThreeDSecureInfo;

            Assert.IsNotNull(result.Target.ThreeDSecureInfo);
            Assert.AreEqual("Y", threeDSecureInfo.Enrolled);
            Assert.AreEqual("authenticate_successful", threeDSecureInfo.Status);
            Assert.IsTrue(threeDSecureInfo.LiabilityShifted);
            Assert.IsTrue(threeDSecureInfo.LiabilityShiftPossible);
            Assert.AreEqual("cavv-value", threeDSecureInfo.Cavv);
            Assert.AreEqual("xid-value", threeDSecureInfo.Xid);
            Assert.AreEqual("ds-trx-id-value", threeDSecureInfo.DsTransactionId);
            Assert.AreEqual("06", threeDSecureInfo.EciFlag);
            Assert.AreEqual("2.0.1", threeDSecureInfo.ThreeDSecureVersion);
        }
        public void ParsesNodeCorrectlyWithoutScaIndicator()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<authentication-insight>" +
                         "  <regulation-environment>bar</regulation-environment>" +
                         "</authentication-insight>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <AuthenticationInsightResponse>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual(null, result.Target.ScaIndicator);
            Assert.AreEqual("bar", result.Target.RegulationEnvironment);
        }
        public void ParsesNodeCorrectlyWithPayPalDetails()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <type>PayPalAccount</type>" +
                         "  <nonce>fake-paypal-account-nonce</nonce>" +
                         "  <description></description>" +
                         "  <consumed type=\"boolean\">false</consumed>" +
                         "  <details>" +
                         "    <payer-info>" +
                         "      <email>[email protected]</email>" +
                         "      <first-name>first</first-name>" +
                         "      <last-name>last</last-name>" +
                         "      <payer-id>pay-123</payer-id>" +
                         "      <country-code>US</country-code>" +
                         "    </payer-info>" +
                         "  </details>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("fake-paypal-account-nonce", result.Target.Nonce);
            Assert.AreEqual("PayPalAccount", result.Target.Type);
            Assert.IsNotNull(result.Target.Details);
            Assert.IsNotNull(result.Target.Details.PayerInfo);
            Assert.AreEqual("*****@*****.**", result.Target.Details.PayerInfo.Email);
            Assert.AreEqual("first", result.Target.Details.PayerInfo.FirstName);
            Assert.AreEqual("last", result.Target.Details.PayerInfo.LastName);
            Assert.AreEqual("pay-123", result.Target.Details.PayerInfo.PayerId);
            Assert.AreEqual("US", result.Target.Details.PayerInfo.CountryCode);
        }
Beispiel #23
0
        public void Create_ReturnsMerchantAndCredentials()
        {
            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "credit_card", "paypal" }
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.IsFalse(string.IsNullOrEmpty(result.Target.Id));
            Assert.AreEqual("*****@*****.**", result.Target.Email);
            Assert.AreEqual("*****@*****.**", result.Target.CompanyName);
            Assert.AreEqual("USA", result.Target.CountryCodeAlpha3);
            Assert.AreEqual("US", result.Target.CountryCodeAlpha2);
            Assert.AreEqual("840", result.Target.CountryCodeNumeric);
            Assert.AreEqual("United States of America", result.Target.CountryName);

            Assert.IsTrue(result.Target.Credentials.AccessToken.StartsWith("access_token$"));
            Assert.IsTrue(result.Target.Credentials.ExpiresAt > DateTime.Now);
            Assert.IsTrue(string.IsNullOrEmpty(result.Target.Credentials.RefreshToken));
            Assert.AreEqual("bearer", result.Target.Credentials.TokenType);
        }
Beispiel #24
0
        public void GetAuthorizationSchema_ReturnsBearerHeader()
        {
            BraintreeGateway oauthGateway = new BraintreeGateway(
                "client_id$development$integration_client_id",
                "client_secret$development$integration_client_secret"
                );

            string code = OAuthTestHelper.CreateGrant(oauthGateway, "integration_merchant_id", "read_write");

            ResultImpl <OAuthCredentials> accessTokenResult = oauthGateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest
            {
                Code  = code,
                Scope = "read_write"
            });

            BraintreeGateway gateway            = new BraintreeGateway(accessTokenResult.Target.AccessToken);
            Configuration    oauthConfiguration = gateway.Configuration;
            BraintreeService oauthService       = new BraintreeService(oauthConfiguration);
            string           schema             = oauthService.GetAuthorizationSchema();

            Assert.AreEqual("Bearer", schema);
        }
        public void Create_DefaultsToUSDForNonUSMerchantIfOnboardingApplicationIsInternalAndCountryCurrencyNotSupported()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "YEM",
                PaymentMethods    = new string[] { "paypal" },
                PayPalAccount     = new PayPalOnlyAccountRequest {
                    ClientId     = "paypal_client_id",
                    ClientSecret = "paypal_client_secret"
                }
            });

            Assert.IsTrue(result.IsSuccess());
            Assert.IsFalse(string.IsNullOrEmpty(result.Target.Id));
            Assert.AreEqual("*****@*****.**", result.Target.Email);
            Assert.AreEqual("*****@*****.**", result.Target.CompanyName);
            Assert.AreEqual("YEM", result.Target.CountryCodeAlpha3);
            Assert.AreEqual("YE", result.Target.CountryCodeAlpha2);
            Assert.AreEqual("887", result.Target.CountryCodeNumeric);
            Assert.AreEqual("Yemen", result.Target.CountryName);

            Assert.IsTrue(result.Target.Credentials.AccessToken.StartsWith("access_token$"));
            Assert.IsTrue(result.Target.Credentials.RefreshToken.StartsWith("refresh_token$"));
            Assert.IsTrue(result.Target.Credentials.ExpiresAt > DateTime.Now);
            Assert.AreEqual("bearer", result.Target.Credentials.TokenType);

            Assert.AreEqual(1, result.Target.MerchantAccounts.Length);

            var merchantAccount = result.Target.MerchantAccounts[0];

            Assert.AreEqual("USD", merchantAccount.CurrencyIsoCode);
            Assert.IsTrue(merchantAccount.IsDefault.Value);
        }
        public void ParseAuthenticationInsights()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                         "<payment-method-nonce>" +
                         "  <authentication-insight>" +
                         "    <regulation-environment>bar</regulation-environment>" +
                         "    <sca-indicator>foo</sca-indicator>" +
                         "  </authentication-insight>" +
                         "</payment-method-nonce>";

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNode newNode = doc.DocumentElement;

            var node = new NodeWrapper(newNode);

            var result = new ResultImpl <PaymentMethodNonce>(node, gateway);

            Assert.IsNotNull(result.Target);
            Assert.AreEqual("foo", result.Target.AuthenticationInsight.ScaIndicator);
            Assert.AreEqual("bar", result.Target.AuthenticationInsight.RegulationEnvironment);
        }
Beispiel #27
0
        public void Create_CreateCustomerUsingAccessToken()
        {
            var createRequest = new CustomerRequest()
            {
                FirstName = "Michael",
                LastName  = "Angelo",
                Company   = "Some Company",
                Email     = "*****@*****.**",
                Phone     = "312.555.1111",
                Fax       = "312.555.1112",
                Website   = "www.example.com",
            };

            BraintreeGateway oauthGateway = new BraintreeGateway(
                "client_id$development$integration_client_id",
                "client_secret$development$integration_client_secret"
                );
            string code = OAuthTestHelper.CreateGrant(oauthGateway, "integration_merchant_id", "read_write");
            ResultImpl <OAuthCredentials> accessTokenResult = oauthGateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest {
                Code  = code,
                Scope = "read_write"
            });

            gateway = new BraintreeGateway(accessTokenResult.Target.AccessToken);

            Customer customer = gateway.Customer.Create(createRequest).Target;

            Assert.AreEqual("Michael", customer.FirstName);
            Assert.AreEqual("Angelo", customer.LastName);
            Assert.AreEqual("Some Company", customer.Company);
            Assert.AreEqual("*****@*****.**", customer.Email);
            Assert.AreEqual("312.555.1111", customer.Phone);
            Assert.AreEqual("312.555.1112", customer.Fax);
            Assert.AreEqual("www.example.com", customer.Website);
            Assert.AreEqual(DateTime.Now.Year, customer.CreatedAt.Value.Year);
            Assert.AreEqual(DateTime.Now.Year, customer.UpdatedAt.Value.Year);
        }
        public void RevokeAccessToken_RevokesAccessToken()
        {
            string code = OAuthTestHelper.CreateGrant(gateway, "integration_merchant_id", "read_write");

            ResultImpl <OAuthCredentials> accessTokenResult = gateway.OAuth.CreateTokenFromCode(new OAuthCredentialsRequest {
                Code  = code,
                Scope = "read_write"
            });

            string accessToken = accessTokenResult.Target.AccessToken;
            ResultImpl <OAuthResult> result = gateway.OAuth.RevokeAccessToken(accessToken);

            Assert.IsTrue(result.Target.Result.Value);

            try {
                gateway = new BraintreeGateway(
                    accessToken
                    );

                gateway.Customer.Create();

                Assert.Fail("Should throw AuthenticationException");
            } catch (AuthenticationException) {}
        }
        public void Create_ReturnsErrorIfInvalidCurrencyPassed()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "paypal" },
                Currencies        = new string[] { "GBP", "FAKE" },
                PayPalAccount     = new PayPalOnlyAccountRequest {
                    ClientId     = "paypal_client_id",
                    ClientSecret = "paypal_client_secret"
                }
            });

            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(
                ValidationErrorCode.MERCHANT_CURRENCIES_ARE_INVALID,
                result.Errors.ForObject("merchant").OnField("currencies")[0].Code
                );
        }
        public void Create_ReturnsErrorIfValidPaymentMethodOtherThanPayPalPassedForMultiCurrency()
        {
            gateway = new BraintreeGateway(
                "client_id$development$signup_client_id",
                "client_secret$development$signup_client_secret"
                );

            ResultImpl <Merchant> result = gateway.Merchant.Create(new MerchantRequest {
                Email             = "*****@*****.**",
                CountryCodeAlpha3 = "USA",
                PaymentMethods    = new string[] { "credit_card" },
                Currencies        = new string[] { "GBP", "USD" },
                PayPalAccount     = new PayPalOnlyAccountRequest {
                    ClientId     = "paypal_client_id",
                    ClientSecret = "paypal_client_secret"
                }
            });

            Assert.IsFalse(result.IsSuccess());
            Assert.AreEqual(
                ValidationErrorCode.MERCHANT_PAYMENT_METHODS_ARE_NOT_ALLOWED,
                result.Errors.ForObject("merchant").OnField("payment-methods")[0].Code
                );
        }