- #2671 Add
cardParams
property toCardInputWidget
andCardMultilineWidget
- #2675 Add
CardParams
methods toStripe
- #2677 Deprecate
Card.create()
- #2679 Add missing
TokenizationMethod
valuesTokenizationMethod.Masterpass
andTokenizationMethod.VisaCheckout
- #2692 Add support for Alipay PaymentMethod
- See
Stripe#confirmAlipayPayment()
- See
- #2693 Upgrade
androidx.appcompat:appcompat
to1.2.0
- #2696 Upgrade to Gradle
6.6
- #2704 Deprecate metadata field on retrieved API objects
- See
MIGRATING.md
for more details
- See
- #2708 Bump 3DS2 SDK to
4.0.5
- Fix crash related to SDK app id
- Upgrade
com.nimbusds:nimbus-jose-jwt
to8.20
- #2666 Bump 3DS2 SDK to
4.0.4
- #2671 Add
cardParams
property toCardInputWidget
andCardMultilineWidget
- #2674 Add
SourceParams
creation method forCardParams
- #2675 Add
CardParams
methods toStripe
class - #2679 Add missing
TokenizationMethod
values- Add
Masterpass
andVisaCheckout
- Add
- #2681 Mark code using
Card
for card object creation as@Deprecated
- #2641 Add support for Bank Account as source on
Customer
object - #2643 Add missing fields to
Customer
model - #2646 Allow
CardMultilineWidget
'sTextInputLayout
s to be styled - #2649 Add
@JvmOverloads
toGooglePayJsonFactory
methods - #2651 Update Kotlin coroutines to
1.3.8
- #2657 Fix HTML select option rendering in
WebView
This release includes several breaking changes. See the migration guide for more details.
- #2542 Use
CustomerSession.stripeAccountId
inAddPaymentMethodActivity
- #2543 Target JVM 1.8
- #2544 Remove deprecated code related to
BankAccount
andActivityStarter
- #2545 Remove deprecated
AccountParams.create()
method - #2546 Remove deprecated
next_action
data objects fromPaymentIntent
andSetupIntent
- #2547 Convert
BankAccount.BankAccountType
toBankAccount.Type
enum - #2554 Update
PaymentAuthWebViewActivity
's back button behavior - #2551 Fix
StrictMode
DiskReadViolation
violations - #2555 Improve
PaymentAuthWebViewActivity
- #2559 Represent
PaymentIntent
'sconfirmationMethod
andcaptureMethod
as enums - #2561 Make
CardInputListener.FocusField
an enum - #2562 Make
SourceTypeModel.Card.ThreeDSecureStatus
an enum - #2563 Make
PaymentMethod.Card#brand
aCardBrand
- #2566 Make
Token.Type
an enum - #2569 Refactor
Source
class and related classes - #2572 Fix
StrictMode
DiskReadViolation
violations when starting 3DS2 - #2577 Make
CustomerSource#tokenizationMethod
aTokenizationMethod?
- #2579 Make
PaymentMethod.Card.Networks
fields public - #2587 Fix BouncyCastle Proguard rule
- #2594 Fix vector icon references in layout files
- Reduce SDK size by ~30kb
- Fix Google Pay icon in
PaymentMethodsActivity
- #2595 Bump SDK
minSdkVersion
to21
- #2599 Remove
StripeSSLSocketFactory
- #2604 Add
stripeAccountId
toPaymentConfiguration
and use inAddPaymentMethodActivity
- #2609 Refactor
AddPaymentMethodActivity.Result
- #2610 Remove
PaymentSession
andCustomerSession
's "Activity" Listeners - #2611 Target API 30
- #2617 Convert
CustomizableShippingField
to enum - #2623 Update Gradle to
6.5.1
- #2557 Update 3DS2 SDK to
4.0.3
- #2453 Add
ConfirmPaymentIntentParams#receiptEmail
- #2458 Remove INTERAC from
GooglePayJsonFactory.DEFAULT_CARD_NETWORKS
- #2462 Capitalize currency code in
GooglePayJsonFactory
- #2466 Deprecate
ActivityStarter.startForResult()
with no args - #2467 Update
CardBrand.MasterCard
regex - #2475 Support
android:focusedByDefault
inCardInputWidget
- Fixes #2463 on Android API level 26 and above
- #2483 Fix formatting of
maxTimeout
value inStripe3ds2AuthParams
- #2494 Support starting 3DS2 challenge flow from a Fragment
- #2496 Deprecate
StripeIntent.stripeSdkData
- #2497 Deprecate
StripeIntent.redirectData
- #2513 Add
canDeletePaymentMethods
toPaymentSessionConfig
canDeletePaymentMethods
controls whether the user can delete a payment method by swiping on it inPaymentMethodsActivity
- #2525 Upgrade Android Gradle Plugin to 4.0.0
- #2531 Update 3DS2 SDK to 3.0.2
- Fix bug in 3DS2 SDK where multi-screen challenges were not correctly returning result to starting Activity/Fragment
- #2536 Update Gradle to 6.5
- #2441 Catch
IllegalArgumentException
inApiOperation
- #2442 Capitalize
GooglePayJsonFactory
'sallowedCountryCodes
- #2445 Bump 3DS2 SDK to
2.7.8
- Downgrade BouncyCastle to
1.64
- Downgrade BouncyCastle to
- #2379 Add optional
stripeAccountId
param to mostStripe
methods- This enables passing a
Stripe-Account
header on a per-request basis
- This enables passing a
- #2398 Add optional
stripeAccountId
param toStripe#confirmPayment()
- #2405 Add optional
stripeAccountId
param toStripe#confirmSetupIntent()
- #2406 Add optional
stripeAccountId
param toStripe#authenticateSource()
- #2408 Update
PaymentMethod.Type#isReusable
values - #2412 Make
StripeIntentResult
implementParcelable
- #2413 Create
Stripe#retrievePaymentIntent()
andStripe#retrieveSetupIntent()
async methods - #2421 Capitalize
countryCode
inGooglePayJsonFactory
- #2429 Fix SDK source paths and source publishing
- #2430 Add
GooglePayJsonFactory.isJcbEnabled
- Enables JCB as an allowed card network. By default, JCB is disabled.
- #2435 Bump 3DS2 SDK to
2.7.7
- On 3DS2 challenge screen, handle system back button tap as cancel button tap
- #2436 Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- #2334 Add support for BACS Debit in
PaymentMethodCreateParams
- #2335 Add support for BACS Debit Payment Method
- #2336 Improve
ShippingInfoWidget
- Make postal code and phone number fields single line
- Make phone number field use
inputType="phone"
- #2342 Convert
CardBrand
prefixes to regex- Add
^81
as a pattern forCardBrand.UnionPay
- Add
- #2343 Update
CardBrand.JCB
regex - #2362 Add support for parsing
shippingInformation
inGooglePayResult
- #2365 Convert png assets to webp to reduce asset size
- #2373 Set default
billingAddressFields
toBillingAddressFields.PostalCode
- #2381 Add support for SOFORT PaymentMethod
- #2384 Add support for P24 PaymentMethod
- #2389 Add support for Bancontact PaymentMethod
- #2390 Bump Kotlin version to
1.3.72
- #2392 Add
shipping
property toPaymentIntent
- #2394 Add support for Giropay PaymentMethod
- #2395 Add support for EPS PaymentMethod
- #2396 Expose
klarna
property onSource
- #2401 Bump 3DS2 SDK to
2.7.4
- Add new translations for 3DS2 SDK strings
- Upgrade BouncyCastle to
1.65
- #2299 Make
SourceParams.OwnerParams
constructor public and properties mutable - #2304 Force Canadian postal codes to be uppercase
- #2315 Add
Fragment
support toAddPaymentMethodActivityStarter
- #2325 Update
BecsDebitWidget
- #2278 Add ability to require US ZIP code in
CardInputWidget
andCardMultilineWidget
- #2279 Default
CardMultilineWidget
to global postal code configuration - #2282 Update pinned API version to
2020-03-02
- #2285 Create
BecsDebitMandateAcceptanceFactory
for generating BECS Debit mandate acceptance copy - #2290 Bump 3DS2 SDK to
2.7.2
- Fix
onActivityResult()
not called after 3DS2 challenge flow when "Don't keep activities" is enabled - Use view binding
- Upgrade BouncyCastle to
1.64
- Fix
- #2293 Add min length validation to BECS account number
- #2295 Create
BecsDebitMandateAcceptanceTextView
- #2297 Add
BecsDebitWidget.ValidParamsCallback
- #2257 Disable Kotlin Synthetics and migrate to view binding
- #2260 Update Kotlin Gradle Plugin to
1.3.70
- #2271 Update Proguard rules to remove unneeded BouncyCastle class
- #2272 Update
kotlinx.coroutines
to1.3.4
- #2274 Make
ConfirmPaymentIntentParams#savePaymentMethod
nullable
- #2207 Add
CardInputWidget#setPostalCodeTextWatcher
- #2211 Add support for 16-digit Diners Club card numbers
- #2215 Set
CardInputWidget
's postal code field's IME action to done - #2220 Highlight "Google Pay" option in payment methods screen if selected
- #2221 Update 14-digit Diners Club formatting
- #2224 Change
CardInputWidget
icon to represent validity of input - #2234 Add support for
setup_future_usage
in PaymentIntent confirmation - #2235 Update Android Gradle Plugin to 3.6.1
- #2236 Change
CardMultilineWidget
icon to represent validity of input - #2238 Add support for
shipping
in PaymentIntent confirmation
This release includes several breaking changes. See the migration guide for more details.
- #2136 Update
com.google.android.material:material
to1.1.0
- #2141 Fix crash when deleting a payment method in
PaymentMethodsActivity
- #2155 Fix parceling of
PaymentRelayStarter.Args
- #2156 Fix FPX bank order
- #2163 Remove return type from
PaymentSession.init()
- #2165 Simplify
PaymentSession
state and lifecycle management- When instantiating a
PaymentSession()
with anActivity
, it must now be aComponentActivity
(e.g.AppCompatActivity
orFragmentActivity
) PaymentSession#init()
no longer takes asavedInstanceState
argument- Remove
PaymentSession#savePaymentSessionInstanceState()
- Remove
PaymentSession#onDestroy()
- When instantiating a
- #2173 Fix Mastercard display name
- #2174 Add optional params to
CustomerSession.getPaymentMethods()
- See List a Customer's PaymentMethods for more details
- #2179 Fetch previously used
PaymentMethod
inPaymentSession
- If
PaymentSessionConfig.shouldPrefetchCustomer == true
, when a newPaymentSession
is started, fetch the customer's previously selected payment method, if it exists, and return viaPaymentSessionListener#onPaymentSessionDataChanged()
- If
- #2180 Remove
PaymentSession.paymentSessionData
- #2185 Convert
Card.FundingType
toCardFunding
enum - #2189 Cleanup
StripeException
subclasses - #2194 Upgrade 3DS2 SDK to
2.5.4
- Update
com.google.android.material:material
to1.1.0
- Fix accessibility issues on 3DS2 challenge screen
- Update 3DS2 styles for consistency
- Create
BaseStripe3DS2TextInputLayout
that extendsWidget.MaterialComponents.TextInputLayout.OutlinedBox
- Create
Stripe3DS2TextInputLayout
that extendsBaseStripe3DS2TextInputLayout
- Apply
Stripe3DS2TextInputLayout
toTextInputLayout
- Create
BaseStripe3DS2EditText
with parentWidget.MaterialComponents.TextInputEditText.OutlinedBox
- Rename
Stripe3DS2EditTextTheme
toStripe3DS2EditText
and change its parent toBaseStripe3DS2EditText
- Apply
Stripe3DS2EditText
toTextInputEditText
- Create
- Update
- #2195 Upgrade kotlin coroutines to 1.3.3
- #2196 Create
SourceTypeModel
sealed class- Move
SourceCardData
subclass toSourceTypeModel.Card
- Move
SourceSepaDebitData
subclass toSourceTypeModel.SepaDebit
- Change type of
Source#sourceTypeModel
toSourceTypeModel?
- Move
- Update 3DS2 SDK to v2.3.7
- Update dependencies
- Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- Include sources
- #2112 Enable adding Mandate to confirm params
- #2113 Enable requiring postal code in
CardInputWidget
andCardMultilineWidget
- #2114 Fix bug in highlighting
StripeEditText
fields with errors
- #2105 Fix crash when confirming a Payment Intent or Setup Intent and an error is encountered
- #2074 Populate
isSelected
for selectedPaymentMethodsAdapter
item - #2076 Announce invalid fields when validating
CardInputWidget
- #2077 Add delete payment method accessibility action in
PaymentMethodsAdapter
- #2078 Make
StripeEditText
errors accessible - #2082 Use ErrorMessageTranslator for AddPaymentMethodActivity errors
- #2083 Add accessibility traversal rules on
AddPaymentMethodActivity
- #2084 Update
BankAccount
constructor to support all bank account token parameters - #2086 Add
id
andstatus
fields toBankAccount
- #2087 Use
BankAccountTokenParams
for bank account token creation- Create
Stripe#createBankAccountToken()
andStripe#createBankAccountTokenSynchronous()
that take aBankAccountTokenParams
object - Deprecate
BankAccount
for token creation
- Create
- #2055 Fix styling of
CardInputWidget
andCardMultilineWidget
com.google.android.material:material:1.1.0-rc01
breaksTextInputLayout
styling; fix by explicitly setting a style that extendsWidget.Design.TextInputLayout
- #2056 Update
CardInputWidget
'sEditText
size- Fix "Postal Code" field being partially cut off on some screens
- #2066 Add support for uploading a file to Stripe
- See
Stripe#createFile()
andStripe#createFileSynchronous()
- See
- #2071 Fix accessibility issues on Payment Methods selection screen
- Mark
View
s representing existing payment methods and add a new payment method action as focusable and clickable
- Mark
This release includes several breaking changes. See the migration guide for more details.
- #1950 Add idempotency key for
Stripe
API POST methodsclass MyActivity : AppCompatActivity() { private fun createPaymentMethod( params: PaymentMethodCreateParams, idempotencyKey: String? ) { stripe.createPaymentMethod( params = params, idempotencyKey = idempotencyKey, callback = object : ApiResultCallback<PaymentMethod> { override fun onSuccess(result: PaymentMethod) { } override fun onError(e: Exception) { } } ) } }
- #1993 Remove deprecated methods from
PaymentSession
- See the Migration Guide for more details
- #1994 Enable postal code field in
CardInputWidget
by default - #1995 Enable Google Pay option in Basic Integration and Stripe Activities
-
PaymentSession
PaymentSessionConfig.Builder() // other settings .setShouldShowGooglePay(true) .build()
-
PaymentMethodsActivity
PaymentMethodsActivityStarter.Args.Builder() // other settings .setShouldShowGooglePay(true) .build()
-
- #1996 Update postal code logic for
CardMultilineWidget
- Default to showing postal code (i.e.
shouldShowPostalCode = true
) - Postal code is now optional when displayed
- Remove validation on postal code field
- Change postal code field hint text to "Postal Code"
- Remove
CardInputListener.onPostalCodeComplete()
- Default to showing postal code (i.e.
- #1998 Use
CardBrand
enum to represent card brands- Change the type of
Card#brand
andSourceCardData#brand
properties fromString?
toCardBrand
- Remove
Card.CardBrand
- Change the type of
- #1999 Remove deprecated
BroadcastReceiver
logic fromPaymentFlowActivity
- See the Migration Guide for more details
- #2000 Pass
PaymentSessionConfig
instance toPaymentSession
constructor - #2002 Fix regression in
CardInputWidget
styling To customize the individualEditText
fields ofCardInputWidget
, define aStripe.CardInputWidget.EditText
style that extendsStripe.Base.CardInputWidget.EditText
. For example,<style name="Stripe.CardInputWidget.EditText" parent="Stripe.Base.CardInputWidget.EditText"> <item name="android:textSize">22sp</item> <item name="android:textColor">@android:color/holo_blue_light</item> <item name="android:textColorHint">@android:color/holo_orange_light</item> </style>
- #2003 Add support for authenticating a
Source
via in-app WebViewclass MyActivity : AppCompatActivity() { private fun authenticateSource(source: Source) { stripe.authenticateSource(this, source) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (data != null && stripe.isAuthenticateSourceResult(requestCode, data)) { stripe.onAuthenticateSourceResult( data, object : ApiResultCallback<Source> { override fun onSuccess(result: Source) { } override fun onError(e: Exception) { } } ) } } }
- #2006 Create
TokenizationMethod
enum- Change the type of
Card#tokenizationMethod
andSourceCardData#tokenizationMethod
fromString?
toTokenizationMethod?
- Change the type of
- #2013 Populate shipping address country from pre-populated shipping info
- #2015 Update
PaymentSessionConfig
's defaultBillingAddressFields
toPostalCode
- #2020 Change
PaymentMethod.type
fromString?
toPaymentMethod.Type?
- #2028 Update
SourceParams
fields- Update
setOwner()
to takeOwnerParams
instead ofMap
- Remove
setRedirect()
, usesetReturnUrl()
instead - Update some setters to take null values, simplifying usage
- Update comments
- Update
- #2029 Update
CardInputWidget
to useTextInputLayout
- Make
StripeEditText
extendTextInputEditText
- Make
- #2038 Update
CardInputWidget
to focus on first error field when validating - #2039 Add support for creating a person token
- Add
Stripe#createPersonToken()
andStripe#createPersonTokenSynchronous()
- Add
- #2040 Add support for CVC recollection in PaymentIntents
- Update
ConfirmPaymentIntentParams.createWithPaymentMethodId()
with optionalPaymentMethodOptionsParams?
argument
- Update
- #2042 Create
AccountParams.BusinessTypeParams
BusinessTypeParams.Company
andBusinessTypeParams.Individual
model the parameters for creating a company or individual account token. Use these instead of creating raw maps representing the data.AccountParams.createAccountParams()
is now deprecated. Use the appropriateAccountParams.create()
method.
- Update 3DS2 SDK to v2.3.7
- Update dependencies
- Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- Include sources
- #1974 Add
PaymentSessionConfig#shouldPrefetchCustomer
- Mark
PaymentSessionConfig#init()
withshouldPrefetchCustomer
argument as deprecated
- Mark
- #1980 Don't show a
Dialog
inStripeActivity
ifisFinishing()
- #1989 Create
CardBrand
enum - #1990 Relax validation of UK postal codes
- #1968 Upgrade 3DS2 SDK to
2.2.7
- Downgrade to
com.google.android.material:material:1.0.0
- Downgrade to
- #1947 Allow setting of window flags on Stripe Activities
-
Basic Integration
PaymentSessionConfig.Builder() .setWindowFlags(WindowManager.LayoutParams.FLAG_SECURE) .build()
-
Custom Integration
AddPaymentMethodActivityStarter.Args.Builder() .setWindowFlags(WindowManager.LayoutParams.FLAG_SECURE) .build()
-
- #1956 Add support for configuring billing address fields on
AddPaymentMethodActivity
-
Basic Integration
PaymentSessionConfig.Builder() .setBillingAddressFields(BillingAddressFields.Full) .build()
-
Custom Integration
AddPaymentMethodActivityStarter.Args.Builder() .setBillingAddressFields(BillingAddressFields.Full) .build()
-
- #1957 Enable
PaymentSessionConfig.ShippingInformationValidator
andPaymentSessionConfig.ShippingMethodsFactory
- #1958 Add validation for PaymentIntent and SetupIntent client secrets
- #1959 Upgrade 3DS2 SDK to
2.2.6
- #1915 Update API version to 2019-12-03
- #1928 Make Payment Method
Wallet
a sealed class - #1930 Update text size for
CardInputWidget
fields - #1939 Update Android Gradle Plugin to
3.5.3
- #1946 Upgrade 3DS2 SDK to
2.2.5
- Upgrade to
com.google.android.material:material:1.2.0-alpha2
- Upgrade to
- #1949 Catch
NullPointerException
when callingStripeEditText.setHint()
. This is a workaround for a known issue on some Samsung devices. - #1951 Expose ability to enable postal code on
CardInputWidget
- Enable via layout
<com.stripe.android.view.CardInputWidget android:id="@+id/card_input_widget" android:layout_width="match_parent" android:layout_height="wrap_content" app:shouldShowPostalCode="true" />
- Enable via code
- Java:
cardInputWidget.setPostalCodeEnabled(true)
- Kotlin:
cardInputWidget.postalCodeEnabled = true
- Java:
- Enable via layout
- #1897 Upgrade 3DS2 SDK to
2.2.4
- Fix crash when using Instant App
- #1859 Create
GooglePayJsonFactory
, a factory for generating Google Pay JSON request objects - #1860 Namespace drawables with
stripe_
prefix - #1861 Create
GooglePayResult
to parse and model Google Pay Payment Data response - #1863 Complete migration of SDK code to Kotlin 🎉
- #1864 Make Klarna Source creation methods public and create example
- See
SourceParams.createKlarna()
- See
- #1865 Make all model classes implement
Parcelable
- #1871 Simplify configuration of example app
- Example app can be configured via
$HOME/.gradle/gradle.properties
instead ofSettings.kt
STRIPE_EXAMPLE_BACKEND_URL=https://hidden-beach-12345.herokuapp.com/ STRIPE_EXAMPLE_PUBLISHABLE_KEY=pk_test_12345 STRIPE_ACCOUNT_ID=
- Example app can be configured via
- #1883 Enable
PaymentSessionConfig.ShippingInformationValidator
andPaymentSessionConfig.ShippingMethodsFactory
- See the Migration Guide for an example of how to use the new interfaces
- #1884 Mark
PaymentFlowExtras
as deprecated - #1885 Create
Stripe#retrieveSource()
for asynchronousSource
retrieval - #1890 Upgrade 3DS2 SDK to 2.2.3
- Fix crash when using Instant App
- #1836 Add support for statement_descriptor field to
Source
model viaSource#statementDescriptor
- #1837 Add support for source_order param via
SourceOrderParams
- #1839 Add support for source_order field to
Source
model viaSource#sourceOrder
- #1842 Add
PaymentSessionConfig.Builder.setAllowedShippingCountryCodes()
. Used to specify an allowed set of countries when collecting the customer's shipping address viaPaymentSession
.// Example PaymentSessionConfig.Builder() // only allowed US and Canada shipping addresses .setAllowedShippingCountryCodes(setOf("US", "CA")) .build()
- #1845 Fix country code validation in
PaymentFlowActivity
's shipping information screen- Require that the customer submits a country that exists in the autocomplete dropdown
- Show error UI when the submitted country fails validation
- #1857 Fix crash related to Kotlin Coroutines
- Downgrade
kotlinx-coroutines
from1.3.2
to1.3.0
- Add Proguard rules
- Downgrade
- #1792 Remove default selection of a Payment Method from
PaymentMethodsActivity
- #1797 Document
StripeDefaultTheme
style - #1799 Document
Stripe3DS2Theme
and related styles - #1809 Update to Gradle 6.0
- #1810 Update API version to 2019-11-05
- #1812 Upgrade 3DS2 SDK to 2.2.2
- #1813 Don't select a new PaymentMethod after deleting one in
PaymentMethodsActivity
- #1820 Update
PaymentMethodsActivity
result andPaymentSession.handlePaymentData()
logicPaymentMethodsActivity
returns result code ofActivity.RESULT_OK
when the user selected a Payment MethodPaymentMethodsActivity
returns result code ofActivity.RESULT_CANCELED
when the user taps back via the toolbar or device back buttonPaymentSession#handlePaymentData()
now callsPaymentSessionListener#onPaymentSessionDataChanged()
for any result fromPaymentMethodsActivity
- #1775 Add support for idempotency key on Stripe Token API requests
- #1777 Make
Card
implementParcelable
- #1781 Mark
Stripe#createToken()
as@Deprecated
; replace withStripe#createCardToken()
- #1782 Mark
Stripe#authenticatePayment()
andStripe#authenticateSetup()
as@Deprecated
; replace withStripe#handleNextActionForPayment()
andStripe#handleNextActionForSetupIntent()
, respectively - #1784 Update API version to 2019-10-17
- #1787 Fix
CardNumberEditText
performance - #1788 Fix
ExpiryDateEditText
performance
- #1745 Make
StripeEditText
public - #1746 Make
FpxBank
enum public - #1748 Update FPX bank list with offline status
- #1755 Annotate
Stripe
methods with@UiThread
or@WorkerThread
- #1758 Refactor
CustomerSession.setCustomerShippingInformation()
- #1764 Add support for Javascript confirm dialogs in 3DS1 payment authentication WebView
- #1765 Fix rotation issues with shipping info and shipping method selection screens
- #1738 Enable specifying Payment Method type to use in UI components
- #1721 Properly cleanup and destroy
PaymentAuthWebView
- #1722 Fix crash in 3DS2 challenge screen when airplane mode is enabled
- #1731 Create
ConfirmSetupIntentParams.createWithoutPaymentMethod()
- #1699 Remove deprecated methods
- Replace
Stripe#createTokenSynchronous(Card)
withStripe#createCardTokenSynchronous(Card)
- Replace
Card#getCVC()
withCard#getCvc()
- Remove
AddPaymentMethodActivity#EXTRA_NEW_PAYMENT_METHOD
, useAddPaymentMethodActivityStarter.Result.fromIntent()
instead - Create overloaded
ShippingMethod
constructor with optionaldetail
argument
- Replace
- #1701 Payment Intent API requests (i.e. requests to
/v1/payment_intents
) now return localized error messages - #1706 Add
Card#toPaymentMethodsParams()
to create aPaymentMethodCreateParams
instance that includes both card and billing details
- Update 3DS2 SDK to v2.3.7
- Update dependencies
- Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- Include sources
- #1686 Fix native crash on some devices in 3DS1 payment authentication WebView
- #1690 Bump API version to
2019-10-08
- #1693 Add support for SEPA Debit in PaymentMethod
- #1677 Add logging to PaymentAuthWebViewActivity
- #1616 Make
AddPaymentMethodActivityStarter.Result.fromIntent()
public - #1619 Add
CardMultilineWidget#getPaymentMethodBillingDetailsBuilder()
- #1643 Create
Stripe.createCardTokenSynchronous()
- #1647 Add
StripeDefault3DS2Theme
for 3DS2 customization via themes - #1652 In
PaymentMethodsActivity
, select a new Payment Method if the previously selected one was deleted - #1658 Add
stripe_
prefix to Stripe resources - #1664 Upgrade AGP to 3.5.1
- #1666 Add logging support
// Example val enableLogging: Boolean = true val stripe: Stripe = Stripe(this, "pk_test_demo", enableLogging = enableLogging) stripe.confirmPayment(this, confirmPaymentIntentParams) // View logs using // $ adb logcat -s StripeSdk
- #1667 Add support for SEPA Debit Payment Methods
// Example PaymentMethodCreateParams.create( PaymentMethodCreateParams.SepaDebit.Builder() .setIban("__iban__") .build() )
- #1668 Update Google Pay integration example in example app
- #1669 Update 3DS2 SDK to 2.1.3
- Prevent challenge screen's cancel button from being clicked more than once
- #1582 Update 3DS2 SDK to 2.0.5
- Add translations for
ko
,nn
,ru
, andtr
- Add translations for
- #1583 Create
AddPaymentMethodActivityStarter.Result
- Mark
AddPaymentMethodActivity.EXTRA_NEW_PAYMENT_METHOD
as@Deprecated
. UseAddPaymentMethodActivityStarter.Result
instead.
// Example // before val paymentMethod: PaymentMethod? = data.getParcelableExtra(EXTRA_NEW_PAYMENT_METHOD) // after val result: AddPaymentMethodActivityStarter.Result = AddPaymentMethodActivityStarter.Result.fromIntent(data) val paymentMethod: PaymentMethod? = result?.paymentMethod
- Mark
- #1587 Fix logic for entering 3DS2 challenge flow
- #1581 Fix WebView issues in API 21 and 22
- #1578 Disable dokka in
:stripe
to fix release process
- #1545 Add Connect Account Id support to
GooglePayConfig
- #1560 Add swipe-to-delete gesture on added Payment Methods in
PaymentMethodsActivity
- #1560 Fix
HandlerThread
leak inPaymentController.ChallengeFlowStarterImpl
- #1561 Move
CardMultilineWidget
focus to first error field on error - #1572 Update 3DS2 SDK to 2.0.4
- #1574 Fix
HandlerThread
leak inStripeFireAndForgetRequestExecutor
- #1577 Fix
ShippingMethodView
height
- #1538 Update
PaymentAuthWebView
to fix issues
- #1533 Update 3DS2 SDK to 2.0.3
- #1534 Add ability to select checked item in
PaymentMethodsActivity
- #1537 Fix out-of-band web payment authentication
- #1530 Finish
PaymentAuthWebViewActivity
after returning from bank app
- #1527 Support
"intent://"
URIs in payment auth WebView
- #1518 Fix crash when payment authentication is started from Fragment and user taps back twice
- #1523 Correctly handle deep-links in the in-app payment authentication WebView
- #1524 Update 3DS2 SDK to 2.0.2
- Fix issue with 3DS2 encryption and older BouncyCastle versions
- #1474 Fix darkmode issue with "Add an Address" form's Country selection dropdown
- #1475 Hide keyboard after submitting "Add an Address" form in standard integration
- #1478 Migrate to AndroidX
- #1479 Persist
PaymentConfiguration
toSharedPreferences
- #1480 Make
Source
immutable - #1481 Remove
@Deprecated
methods fromStripeIntent
models- Remove
PaymentIntent#getSource()
; usePaymentIntent#getPaymentMethodId()
- Remove
SetupIntent#getCustomerId()
- Remove
SourceCallback
; useApiResultCallback<Source>
- Remove
TokenCallback
; useApiResultCallback<Token>
- Remove
- #1485 Update 3DS2 SDK to 2.0.1
- #1494 Update
PaymentMethodsActivity
UX - #1495 Remove
@Deprecated
fields and methods fromPaymentMethodsActivity
- #1497 Remove
Stripe
methods that accept a publishable key - #1506 Remove
Stripe#createToken()
withExecutor
argument - #1514 Bump API version to
2019-09-09
- Update 3DS2 SDK to v1.3.1
- Update dependencies
- Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- Include sources
- Apply hot-fixes from 11.x
- Update BouncyCastle Proguard rules. Keep only the BouncyCastle provider classes.
- Hide progress bar in
onPageFinished()
instead ofonPageCommitVisible()
to avoid potential crash on some devices.
- Apply hot-fixes from 11.x
- Enable DOM storage in
PaymentAuthWebView
to fix crash
- Enable DOM storage in
- Apply hot-fixes from 11.x
- #1471 Fix issue with
CardUtils
visibility
- #1457 Fix crash in "Add an Address" screen when value for Country is empty
- #1421 Create
PaymentMethodsActivityStarter.Result
to retrieve result ofPaymentMethodsActivity
- #1427 Mark
Stripe
methods that accept a publishable key as deprecated// Example // before val stripe = Stripe(context) stripe.createPaymentMethodSynchronous(params, "pk_test_demo123") // after val stripe = Stripe(context, "pk_test_demo123") stripe.createPaymentMethodSynchronous(params)
- #1428 Guard against opaque URIs in
PaymentAuthWebViewClient
- #1433 Add
setCardHint()
toCardInputWidget
andCardMultilineWidget
- #1434 Add setters on Card widgets for card number, expiration, and CVC
- #1438 Bump API version to
2019-08-14
- #1446 Update
PaymentIntent
andSetupIntent
models- Add missing
PaymentIntent#getPaymentMethodId()
- Mark
PaymentIntent#getSource()
as@Deprecated
- usePaymentIntent#getPaymentMethodId()
- Mark
SetupIntent#getCustomerId()
as@Deprecated
- this attribute is not available with a publishable key
- Add missing
- #1448 Update Gradle to 5.6.1
- #1449 Add support for
cancellation_reason
attribute to PaymentIntent - #1450 Add support for
cancellation_reason
attribute to SetupIntent - #1451 Update Stripe 3DS2 library to
v1.2.2
- Dismiss keyboard after submitting 3DS2 form
- Exclude
org.ow2.asm:asm
dependency
- #1394 Add
shouldPrefetchCustomer
arg toPaymentSession.init()
- #1395 Fix inconsistent usage of relative attributes on card icon in
CardMultilineWidget
- #1412 Make
AddPaymentMethodActivityStarter()
available for startingAddPaymentMethodActivity
// Example usage AddPaymentMethodActivityStarter(activity).startForResult( AddPaymentMethodActivityStarter.Args.Builder() .setShouldAttachToCustomer(true) .setShouldRequirePostalCode(true) .build() )
- #1417 Update Stripe 3DS2 library to
v1.2.1
-
Add support for updating status bar color and progress color using
Stripe3ds2UiCustomization.Builder.createWithAppTheme(Activity)
or UI customization builders// Example usage Stripe3ds2UiCustomization.Builder.createWithAppTheme(this) PaymentAuthConfig.Stripe3ds2UiCustomization.Builder() .setAccentColor("#9cdbff") .build() PaymentAuthConfig.Stripe3ds2ToolbarCustomization.Builder() .setStatusBarColor("#392996") .build()
-
- #1327 Deprecate
SourceCallback
andTokenCallback
- Use
ApiResultCallback<Source>
andApiResultCallback<Token>
respectively
- Use
- #1332 Create
StripeParamsModel
interface for Stripe API param classes - #1334 Remove
StripeModel#toMap()
- #1340 Upgrade Android Gradle Plugin to
3.5.0-rc03
- #1342 Update Builds Tools to
29.0.2
- #1347 Mark
Stripe.setStripeAccount()
as deprecated- Use
new Stripe(context, "publishable_key", "stripe_account_id")
instead
- Use
- #1376 Add
shouldPrefetchEphemeralKey
arg toCustomerSession.initCustomerSession()
- #1378 Add
last_payment_error
field to PaymentIntent model - #1379 Add
last_setup_error
field to SetupIntent model - #1388 Update Stripe 3DS2 library to
v1.1.7
- Fix issue in
PaymentAuthConfig.Stripe3ds2UiCustomization.Builder()
andPaymentAuthConfig.Stripe3ds2UiCustomization.Builder.createWithAppTheme()
that was resulting in incorrect color customization on 3DS2 challenge screen - Improve accessibility of select options on 3DS2 challenge screen by setting minimum height to 48dp
- Fix issue in
- #1314 Expose pinned API version via Stripe.API_VERSION
- #1315 Create SourceParams#createCardParamsFromGooglePay()
- #1316 Fix issue where
InvalidRequestException
is thrown when confirming a Setup Intent using ConfirmSetupIntentParams#create(PaymentMethodCreateParams, String)
- #1275 Add support for launching
PaymentSession
from aFragment
- #1288 Upgrade Android Gradle Plugin to
3.5.0-rc02
- #1289 Add support for launching payment confirmation/authentication flow from a
Fragment
- #1290 Convert samplestore app to Kotlin
- #1297 Convert example app to Kotlin
- #1300 Rename StripeIntentResult#getStatus() to StripeIntentResult#getOutcome()
- #1302 Add GooglePayConfig#getTokenizationSpecification() to configure Google Pay to use Stripe as the gateway
- #1304 Add PaymentMethodCreateParams#createFromGooglePay() to create
PaymentMethodCreateParams
from a Google Pay PaymentData object
- #1275 Fix
StripeIntentResult.Status
logic - #1276 Update Stripe 3DS2 library to
v1.1.5
- Fix crash in 3DS2 challenge flow when conscrypt is installed
- #1277 Fix StrictMode failure in
StripeFireAndForgetRequestExecutor
- #1244 Add support for Stripe Connect in 3DS2
- #1256 Add
StripeIntentResult.Status
flag to 3DS1 authentication results - #1257 Correctly pass
Status.FAILED
when 3DS2 auth fails - #1259 Add
StripeIntentResult.Status.TIMEDOUT
value - #1263 Update
PaymentSession#presentPaymentMethodSelection()
logic- Add overloaded
presentPaymentMethodSelection()
that takes a Payment Method ID to initially select - Add
PaymentSessionPrefs
to persist customer's Payment Method selection acrossPaymentSession
instances
- Add overloaded
- #1264 Update
Stripe3ds2UiCustomization
- Add
Stripe3ds2UiCustomization.Builder.createWithAppTheme(Activity)
to create aStripe3ds2UiCustomization.Builder
based on the app theme
- Add
- Update Stripe 3DS2 library to
v1.1.2
- Disable R8 following user-reported issue
- Update Proguard rules
- #1238 Update Proguard rules to fix integration issues with Stripe 3DS2 library
- #1226 Prevent non-critical network requests from blocking API requests by moving fire-and-forget requests to separate thread
- #1228 Update to Android Gradle Plugin to 3.5.0-rc01
- Update Stripe 3DS2 library to
v1.1.0
- Re-enable R8 following bug fix in Android Studio 3.5
- Move
org.ow2.asm:asm
dependency totestImplementation
- Fix known issue with 3DS2 challenge flow and API 19 devices
- Add support for 3DS2 authentication through the Payment Intents API and Setup Intents API. See Supporting 3D Secure Authentication on Android.
- Payment Intents - see our guide for Using Payment Intents on Android
- Stripe#confirmPayment() for automatic confirmation
- Stripe#authenticatePayment() for manual confirmation
- Setup Intents - see our guide for Saving card details without a payment
- Stripe#confirmSetupIntent() for automatic confirmation
- Stripe#authenticateSetup() for manual confirmation
- PaymentAuthConfig for optional authentication customization
- Payment Intents - see our guide for Using Payment Intents on Android
- Add support for the Setup Intents API. See Saving card details without a payment.
- Use ConfirmSetupIntentParams to confirm a SetupIntent
- #1172 Refactor
PaymentIntentParams
- #1173 Inline all
StringDef
values
- Update 3DS2 SDK to v1.3.1
- Update dependencies
- Add
advancedFraudSignalsEnabled
property- See Advanced fraud detection for more details
- Include sources
- #1193 Fix
RuntimeException
related to 3DS2
- #1154 Fix
NullPointerException
inPaymentMethodsActivity
- #1174 Add
getCardBuilder()
method to Card widgets - #1184 Fix
NullPointerException
related to 3DS2
- #1148 Fix 3DS2 dependency Proguard issues
- #1138 Fix
AppInfo
param name
- #1133 Make
AppInfo
public
- #1108 Create
Card#toBuilder()
- #1114 Update
CustomerSession
methods to take@NonNull
listener argument - #1125 Create
StripeIntent
interface and movePaymentIntent.Status
andPaymentIntent.NextActionType
toStripeIntent
- #1104 Handle null response body
- #1099 Fix Gradle module issue
- #1019 Introduce
CustomerSession#detachPaymentMethod()
- #1067 Remove
PaymentResultListener
. ReplacePaymentSession#completePayment()
withPaymentSession#onCompleted()
. - #1075 Make model classes final
- #1080 Update Build Tools to 29.0.0
- #1082 Remove
StripeJsonModel#toJson()
- #1084 Rename
StripeJsonModel
toStripeModel
- #1093 Add
Stripe#setAppInfo()
. See Identifying your plug-in or library for more details.
- #1019 Upgrade pinned API version to
2019-05-16
- #1036 Validate API key before every request
- #1046 Make
Card
model fields immutable
- #1006 Remove null values in
PaymentMethod.BillingDetails#toMap()
- #952 Update standard integration UI to use PaymentMethods instead of Sources
- #962 Add initial dark theme support to widgets
- #963 Add Autofill hints to forms
- #964 Upgrade Android Gradle Plugin to 3.4.1
- #972 Add PaymentIntent#getNextActionType()
- #989 Fix StripeEditText's error color logic
- #1001 Overload
PaymentSession#presentPaymentMethodSelection
to allow requiring postal field
- #945 Add
business_type
param to Account tokenization when available
Note: this release has breaking changes. See MIGRATING.md
- #873 Update pinned API version to
2019-03-14
- #875 Inject
Context
inCustomerSession
andStripeApiHandler
- #907 Update
PaymentIntent
model for API2019-02-11
- #894 Upgrade Android Gradle Plugin to 3.4.0
- #872 Create
CustomerSession.ActivityCustomerRetrievalListener
to handleActivity
weak refs - #935 Increase
minSdkVersion
from 14 to 19
- #863 Fix garbage-collection issues with
Stripe
callbacks - #856 Fix race-conditions with
CustomerSession
listeners - #857 Correctly parse JSON when creating or deleting customer card source
- #858 Fix crash on some devices (e.g. Meizu) related to
TextInputEditText
- #862 Improve
PaymentMethodCreateParams.Card
creation - #870 Update
PaymentIntent#Status
enum - #865 Fix some memory leak issues in example app
- #849 Downgrade from AndroidX to Android Support Library
- #843 Add setter for custom CVC field label on
CardMultilineWidget
- #850 Fix a11y traversal order in
CardInputWidget
- #839 Refactor
StripeApiHandler
to use instance methods
- #805 Clean up
PaymentIntent
- #806 Pass
StripeError
in onError - #807 Create
ErrorMessageTranslator
and default implementation - #809 Make
StripeSourceTypeModel
public - #817 Fix TalkBack crash in
CardInputWidget
- #822 Fix account token failure on latest API version
- #827 Upgrade Android Gradle Plugin to 3.3.2
- #828 Support save to customer param on
PaymentIntent
confirm - #829 Add
"not_required"
as possible value ofSource
redirect[status]
- #830 Add
"recommended"
as possible value ofSource
card[three_d_secure]
- #832 Pin all Stripe requests to API version
2017-06-05
- #793 Add StripeError field to StripeException
- #787 Add support for creating a CVC update Token
- #791 Prevent AddSourceActivity's SourceCallback from being garbage collected
- #790 Fix IME action logic on CVC field in CardMultilineWidget
- #786 Add metadata field to Card
- #780 Fix bug related to ephemeral keys introduced in 8.2.0
- #778 Migrate to Android X
- #771 Add errorCode and errorDeclineCode fields to InvalidRequestException
- #766 Upgrade to Android Gradle Plugin 3.3.0
- #770 Remove Saudi Arabia from the no postal code countries list
- #675 Add support for Android 28
- Update Android SDK Build Tools to 28.0.3
- Update Android Gradle plugin to 3.2.1
- Update compileSdkVersion and targetSdkVersion to 28
- Update Android Support Library to 28.0.0
- #671 Add ability to set card number and validate on
CardMultilineWidget
- #537 Add support for iDeal Source with connected account
- #669 Add support for Portuguese
- #624 Add ability to cancel callbacks without destroying
CustomerSession
instance - #673 Improve accessibility on card input fields
- #656 Add
AccessibilityNodeInfo
to widgets - #678 Fix crash in
ShippingMethodView
on API 16
- Add support for latest version of PaymentIntents
- Fix NPEs in
CountryAutocompleteTextView
- Fix NPEs in
PaymentContext
experiences - Helper method for converting tokens to sources
- Fix bug with Canadian and UK postal code validation
- #609 BREAKING Renamed PaymentIntentParams methods for readibility
- Add beta support for PaymentIntents for usage with card sources []
- Add sample integration with PaymentIntents
- Fix crash in MaskedCardAdapter
- #589 BREAKING Add
preferredLanguage
parameter toSourceParams.createBancontactParams
- #583 Add EPS and Multibanco support to
SourceParams
- #586 Add
RequiredBillingAddressFields.NAME
option to enumeration - #583 BREAKING Fix
@Nullable
and@NonNull
annotations forcreateP24Params
function
- Make iDEAL params match API -
name
is optional and optional idealbank
andstatement_descriptor
can be set independently
- #559 Remove Bitcoin source support. See MIGRATING.md.
- #549 Add create Masterpass source support
- #548 Add support for 3 digit American Express CVC
- #547 Fix crash when JCB icon is shown
- Handle soft enter key in AddSourceActivity
- Add translations for ” ending in ” in each supported language.
- Add API bindings for removing a source from a customer.
- Update Android support library to 27.1.0.
- Fix invalid response from stripe api error
- Fix proguard minification error
- Add ability to create a source with extra parameters to support SEPA debit sources.
- Catch possible ClassCastException when formatting currency string
- Fix Dutch Translation for MM/YY
- Set the CardNumberEditText TextWatcher to the correct EditText
- Add binding to support custom Stripe Connect onboarding in Europe
- Expose interface to add text input listeners on the Card Widgets
- Updating Android support library version to 27.0.2
- Updating gradle 3.0.1
- Fix typo in docs
- Updating gradle and wrapper to 4.3, using android build tools 3.0.0
- Fixed double-notification bug on error in AddSourceActivity
- Fixed compile error issue with Google support libraries 27.0.0
- Adding P24 support
- Upgrades Gradle wrapper version to 4.2.1
- Surfaces error handling in API errors from Stripe
- Make resource namespaces private to prevent collisions
- Fixing a bug for PaymentFlowActivity not returning success when collecting shipping info without method
- Adding the PaymentSession for end-to-end session handling
- Adding Alipay source handling
- Adding controls to enter customer shipping address and custom shipping methods
- Adding the CustomerSession and EphemeralKeyProvider classes
- Adding CardMultilineWidget class for adding Card data in material design
- Adding AddSourceActivity and PaymentMethodsActivity for selecting customer payment
- Stability and efficiency improvements
- BREAKING Moving networking and utils classes to be package-private instead of public
- BREAKING Upgrading Gradle wrapper version
- BREAKING Upgrading Android support library versions
- BREAKING Upgrading build tools version
- Fixing Android Pay string translation crash for decimal comma languages
- Fixing a display bug for dates in certain locales
- Adding ability to specify countries for shipping in the Android Pay MaskedWalletRequest
- Adding ability to specify card networks in the Android Pay MaskedWalletRequest
- Adding Stripe-Account optional header for integration with Connect merchant accounts
- Adding AndroidPayConfiguration.setCountryCode optional method to specify transaction country
- Fixing a missing method call in android pay
- Removing the android support V4 libraries
- Fixing a preference default in android pay
- Added a token field to SourceParams. You can use this to create a source from an existing token.
- https://stripe.com/docs/api#create_source-token
- Added support for PII tokens
- Added ability to clear the card input widget
- Upgraded fraud detection tools
- Added StripePaymentSource interface, extended by both Source and Token
- Upgraded for compatibility with stripe:stripe-android-pay
- Released stripe:stripe-android-pay library, dependent on stripe:stripe-android
- Added setters for the card number, expiration date, and cvc fields in the CardInputWidget
- Added a new example project with back end integration
- Added the ability to set a listener on the CardInputWidget for various events
- Made the card brand icon show in the widget when the CVC entry is complete
- Fixed issue #179, where certain pasted in credit cards would be incorrectly read as invalid
- BREAKING Removed the try/catch required around Stripe instance creation.
- Fixed design tab display bug on card input widget
- Upgraded to Gradle version 3.4.1
- SEPA Debit address is now optional
- Added support for creating and retrieving Source objects
- Added support for redirect flow and polling to update Source status
- Restyled the example project, added secondary activity to demonstrate 3DS support
- Removed
@Deprecated
tag from most setters on the Card object
- Added a card input widget to allow easy UI for collecting card data.
- BREAKING Increased the minimum SDK version to 11 (needed for animation classes).
- BREAKING Added required Context argument to Stripe constructor for resolving resources
- Added bindings to allow creation of bank account tokens.
- Updated OS version logging to be relevant for Android.
- Made the StripeApiHandler.VERSION constant public.
- Made the Token, Card, and Error parsing functions public.
- Removed the dependency on stripe-java and gson
- Added a synchronous version of requestToken (still deprecated)
- Removed the (previously deprecated) requestToken methods
- Refactored the bundled example project
- Reverted change in StripeTextUtils to exclude reference to framework classes
- Exposed funding property on Card object
- Updated getType() to getBrand() to match Stripe API (getType() is still supported)
- Added synchronous method to create tokens which allows integration with RxJava
- Updated example application to include RxJava integration example
- Flattened example project structure for clarity
- Updated to stripe-java 3.2.0
- Fixed American Express number validation problem
- Updated build target sdk version, build tools
- Moved tests out of example project and into stripe project
- Modified Java bindings dependency
- Updated Card model to reflect recent changes
- Updated proguard and dependency versions
- Remove incorrect Diner's Club card prefix
- Add Fabric properties file