/** * Create a string-keyed map representing this object that is * ready to be sent over the network. * * @return a String-keyed map */ @NonNull public Map<String, Object> toParamMap() { final Map<String, Object> networkReadyMap = new HashMap<>(); if (mSourceParams != null) { networkReadyMap.put(API_PARAM_SOURCE_DATA, mSourceParams.toParamMap()); } else if (mSourceId != null) { networkReadyMap.put(API_PARAM_SOURCE_ID, mSourceId); } if (mReturnUrl != null) { networkReadyMap.put(API_PARAM_RETURN_URL, mReturnUrl); } networkReadyMap.put(API_PARAM_CLIENT_SECRET, mClientSecret); if (mExtraParams != null) { networkReadyMap.putAll(mExtraParams); } return networkReadyMap; }
@Test public void createMultibancoParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createMultibancoParams( 150L, "stripe://testactivity", "multibancoholder@stripe.com"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.MULTIBANCO); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 150L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("email", "multibancoholder@stripe.com"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://testactivity"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createEPSParams_toParamMap_createsExpectedMap_noStatementDescriptor() { final SourceParams params = SourceParams.createEPSParams( 150L, "Stripe", "stripe://return", null); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.EPS); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 150L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Stripe"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://return"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createCardParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createCardParams(FULL_FIELDS_VISA_CARD); final Map<String, Object> expectedCardMap = new HashMap<>(); expectedCardMap.put("number", VALID_VISA_NO_SPACES); expectedCardMap.put("exp_month", 12); expectedCardMap.put("exp_year", 2050); expectedCardMap.put("cvc", "123"); final Map<String, Object> expectedAddressMap = new HashMap<>(); expectedAddressMap.put("line1", "1 ABC Street"); expectedAddressMap.put("line2", "Apt. 123"); expectedAddressMap.put("city", "San Francisco"); expectedAddressMap.put("state", "CA"); expectedAddressMap.put("postal_code", "94107"); expectedAddressMap.put("country", "US"); final Map<String, Object> totalExpectedMap = new HashMap<>(); totalExpectedMap.put("type", "card"); totalExpectedMap.put("card", expectedCardMap); totalExpectedMap.put("owner", new HashMap<String, Object>() {{ put("address", expectedAddressMap); put("name", "Captain Cardholder"); }}); final Map<String, String> metadata = new HashMap<>(); metadata.put("color", "blue"); metadata.put("animal", "dog"); totalExpectedMap.put("metadata", metadata); JsonTestUtils.assertMapEquals(totalExpectedMap, params.toParamMap()); }
@Test public void createThreeDSecureParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createThreeDSecureParams( 99000L, "brl", "stripe://returnaddress", "card_id_123"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.THREE_D_SECURE); expectedMap.put("currency", "brl"); expectedMap.put("amount", 99000L); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://returnaddress"); }}); expectedMap.put(Source.THREE_D_SECURE, new HashMap<String, Object>() {{ put("card", "card_id_123"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createSofortParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createSofortParams( 50000L, "example://return", "UK", "a thing you bought"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.SOFORT); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 50000L); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "example://return"); }}); expectedMap.put(Source.SOFORT, new HashMap<String, Object>() {{ put("country", "UK"); put("statement_descriptor", "a thing you bought"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createEPSParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createEPSParams( 150L, "Stripe", "stripe://return", "stripe descriptor"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.EPS); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 150L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Stripe"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://return"); }}); expectedMap.put(Source.EPS, new HashMap<String, Object>() {{ put("statement_descriptor", "stripe descriptor"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createGiropayParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createGiropayParams( 150L, "Stripe", "stripe://return", "stripe descriptor"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.GIROPAY); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 150L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Stripe"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://return"); }}); expectedMap.put(Source.GIROPAY, new HashMap<String, Object>() {{ put("statement_descriptor", "stripe descriptor"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createIdealParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createIdealParams( 900L, "Default Name", "stripe://anotherurl", "something you bought", "SVB"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.IDEAL); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 900L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Default Name"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://anotherurl"); }}); expectedMap.put(Source.IDEAL, new HashMap<String, Object>() {{ put("statement_descriptor", "something you bought"); put("bank", "SVB"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createBancontactParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createBancontactParams( 1000L, "Stripe", "return/url/3000", "descriptor", "en"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.BANCONTACT); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 1000L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Stripe"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "return/url/3000"); }}); expectedMap.put(Source.BANCONTACT, new HashMap<String, Object>() {{ put("statement_descriptor", "descriptor"); put("preferred_language", "en"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createCustomParamsWithSourceTypeParameters_toParamMap_createsExpectedMap() { // Using the Giropay constructor to add some free params and expected values, // including a source type params final String DOGECOIN = "dogecoin"; final SourceParams params = SourceParams.createGiropayParams( 150L, "Stripe", "stripe://return", "stripe descriptor"); params.setTypeRaw(DOGECOIN); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", DOGECOIN); expectedMap.put("currency", Source.EURO); expectedMap.put("amount", 150L); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Stripe"); }}); expectedMap.put("redirect", new HashMap<String, Object>() {{ put("return_url", "stripe://return"); }}); expectedMap.put(DOGECOIN, new HashMap<String, Object>() {{ put("statement_descriptor", "stripe descriptor"); }}); JsonTestUtils.assertMapEquals(expectedMap, params.toParamMap()); }
@Test public void createSepaDebitParams_toParamMap_createsExpectedMap() { final SourceParams params = SourceParams.createSepaDebitParams( "Jai Testa", "ibaniban", "sepaholder@stripe.com", "44 Fourth Street", "Test City", "90210", "EI"); Map<String, Object> expectedMap = new HashMap<>(); expectedMap.put("type", Source.SEPA_DEBIT); expectedMap.put("currency", Source.EURO); final Map<String, Object> addressMap = new HashMap<>(); addressMap.put("line1", "44 Fourth Street"); addressMap.put("city", "Test City"); addressMap.put("postal_code", "90210"); addressMap.put("country", "EI"); expectedMap.put("owner", new HashMap<String, Object>() {{ put("name", "Jai Testa"); put("email", "sepaholder@stripe.com"); put("address", addressMap); }}); expectedMap.put(Source.SEPA_DEBIT, new HashMap<String, Object>() {{ put("iban", "ibaniban"); }}); assertEquals(Source.SEPA_DEBIT, params.getType()); Map<String, Object> actualMap = params.toParamMap(); JsonTestUtils.assertMapEquals(expectedMap, actualMap); }
APIConnectionException, APIException { final Map<String, Object> paramMap = sourceParams.toParamMap(); StripeNetworkUtils.addUidParams(uidProvider, context, paramMap); final RequestOptions options = RequestOptions.builder(