Fix card always setting setup_future_usage instead of only setting if… (#420)
* Fix card always setting setup_future_usage instead of only setting if checkbox is showing * PR feedback
This commit is contained in:
parent
28dc61bcf9
commit
7d86da8e40
|
@ -205,15 +205,13 @@ extension CardDetailsEditView: STPFormViewInternalDelegate {
|
||||||
|
|
||||||
/// :nodoc:
|
/// :nodoc:
|
||||||
extension CardDetailsEditView: PaymentMethodElement {
|
extension CardDetailsEditView: PaymentMethodElement {
|
||||||
var shouldSavePaymentMethod: Bool {
|
|
||||||
return saveThisCardCheckboxView.isEnabled && saveThisCardCheckboxView.isSelected && !saveThisCardCheckboxView.isHidden
|
|
||||||
}
|
|
||||||
|
|
||||||
func updateParams(params: IntentConfirmParams) -> IntentConfirmParams? {
|
func updateParams(params: IntentConfirmParams) -> IntentConfirmParams? {
|
||||||
if let paymentMethodParams = paymentMethodParams {
|
if let paymentMethodParams = paymentMethodParams {
|
||||||
params.paymentMethodParams.card = paymentMethodParams.card
|
params.paymentMethodParams.card = paymentMethodParams.card
|
||||||
params.paymentMethodParams.billingDetails = paymentMethodParams.billingDetails
|
params.paymentMethodParams.billingDetails = paymentMethodParams.billingDetails
|
||||||
params.savePaymentMethod = shouldSavePaymentMethod
|
if !saveThisCardCheckboxView.isHidden {
|
||||||
|
params.shouldSavePaymentMethod = saveThisCardCheckboxView.isEnabled && saveThisCardCheckboxView.isSelected
|
||||||
|
}
|
||||||
return params
|
return params
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -64,8 +64,9 @@ class IntentConfirmParams {
|
||||||
let paymentMethodParams: STPPaymentMethodParams
|
let paymentMethodParams: STPPaymentMethodParams
|
||||||
let paymentMethodType: STPPaymentMethodType
|
let paymentMethodType: STPPaymentMethodType
|
||||||
|
|
||||||
|
/// If we're displaying a "Save for future payments?" toggle, this should be set to the value of the toggle. Otherwise, leave it nil.
|
||||||
/// - Note: PaymentIntent-only
|
/// - Note: PaymentIntent-only
|
||||||
var savePaymentMethod: Bool? = nil
|
var shouldSavePaymentMethod: Bool? = nil
|
||||||
/// - Note: PaymentIntent-only
|
/// - Note: PaymentIntent-only
|
||||||
var paymentMethodOptions: STPConfirmPaymentMethodOptions?
|
var paymentMethodOptions: STPConfirmPaymentMethodOptions?
|
||||||
|
|
||||||
|
@ -79,11 +80,9 @@ class IntentConfirmParams {
|
||||||
params.paymentMethodParams = paymentMethodParams
|
params.paymentMethodParams = paymentMethodParams
|
||||||
params.paymentMethodOptions = paymentMethodOptions
|
params.paymentMethodOptions = paymentMethodOptions
|
||||||
|
|
||||||
if let savePaymentMethod = savePaymentMethod {
|
if let shouldSavePaymentMethod = shouldSavePaymentMethod {
|
||||||
// Use additionalAPIParameters to send "" as a value, to avoid changing the public string value of STPPaymentIntentSetupFutureUsage.none
|
// Instead of using `params.setupFutureUsage`, we use additionalAPIParameters to send "" as a value to avoid changing the public string value of STPPaymentIntentSetupFutureUsage.none
|
||||||
params.additionalAPIParameters["setup_future_usage"] = savePaymentMethod ? "off_session" : ""
|
params.additionalAPIParameters["setup_future_usage"] = shouldSavePaymentMethod ? "off_session" : ""
|
||||||
} else {
|
|
||||||
params.setupFutureUsage = nil
|
|
||||||
}
|
}
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
|
@ -100,7 +99,7 @@ class IntentConfirmParams {
|
||||||
|
|
||||||
// Dashboard only supports a specific payment flow today
|
// Dashboard only supports a specific payment flow today
|
||||||
assert(paymentMethodOptions == nil)
|
assert(paymentMethodOptions == nil)
|
||||||
assert(savePaymentMethod == false)
|
assert(shouldSavePaymentMethod == false)
|
||||||
params.paymentMethodOptions = STPConfirmPaymentMethodOptions()
|
params.paymentMethodOptions = STPConfirmPaymentMethodOptions()
|
||||||
let cardOptions = STPConfirmCardOptions()
|
let cardOptions = STPConfirmCardOptions()
|
||||||
cardOptions.additionalAPIParameters["moto"] = true
|
cardOptions.additionalAPIParameters["moto"] = true
|
||||||
|
|
|
@ -129,7 +129,9 @@ extension PaymentSheetFormFactory {
|
||||||
func makeSaveCheckbox(didToggle: @escaping ((Bool) -> ())) -> PaymentMethodElementWrapper<SaveCheckboxElement> {
|
func makeSaveCheckbox(didToggle: @escaping ((Bool) -> ())) -> PaymentMethodElementWrapper<SaveCheckboxElement> {
|
||||||
let element = SaveCheckboxElement(didToggle: didToggle)
|
let element = SaveCheckboxElement(didToggle: didToggle)
|
||||||
return PaymentMethodElementWrapper(element) { checkbox, params in
|
return PaymentMethodElementWrapper(element) { checkbox, params in
|
||||||
params.savePaymentMethod = checkbox.checkboxButton.isSelected
|
if !checkbox.checkboxButton.isHidden {
|
||||||
|
params.shouldSavePaymentMethod = checkbox.checkboxButton.isSelected
|
||||||
|
}
|
||||||
return params
|
return params
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue