Skip to content

Commit

Permalink
fix: resolve with Error.Canceled if no payment option is selected in …
Browse files Browse the repository at this point in the history
…Payment Sheet custom flow (#975)
  • Loading branch information
charliecruzan-stripe authored Jun 3, 2022
1 parent c2ec63f commit 1279594
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 10 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

## Unreleased

### Breaking changes

### New features

### Fixes

- Resolve with an Error (of type `Canceled`) if no payment option is selected in the Payment Sheet custom flow (i.e., the `x` button is clicked to close the Payment Sheet). [#975](https://github.com/stripe/stripe-react-native/pull/975)

## 0.12.0

### Breaking changes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,15 @@ class PaymentSheetFragment(
option.putString("label", paymentOption.label)
option.putString("image", imageString)
presentPromise?.resolve(createResult("paymentOption", option))
} else {
presentPromise?.resolve(createError(PaymentSheetErrorType.Canceled.toString(), "The payment option selection flow has been canceled"))
}
presentPromise?.resolve(WritableNativeMap())
}

val paymentResultCallback = PaymentSheetResultCallback { paymentResult ->
when (paymentResult) {
is PaymentSheetResult.Canceled -> {
val message = "The payment has been canceled"
val message = "The payment flow has been canceled"
confirmPromise?.resolve(createError(PaymentSheetErrorType.Canceled.toString(), message))
?: run {
presentPromise?.resolve(createError(PaymentSheetErrorType.Canceled.toString(), message))
Expand Down
4 changes: 2 additions & 2 deletions ios/StripeSdk.swift
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
resolve([])
self.paymentSheetFlowController = nil
case .canceled:
resolve(Errors.createError(ErrorType.Canceled, "The payment has been canceled"))
resolve(Errors.createError(ErrorType.Canceled, "The payment flow has been canceled"))
case .failed(let error):
resolve(Errors.createError(ErrorType.Failed, error.localizedDescription))
}
Expand Down Expand Up @@ -232,7 +232,7 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
]
resolve(Mappers.createResult("paymentOption", option))
} else {
resolve(Mappers.createResult("paymentOption", nil))
resolve(Errors.createError(ErrorType.Canceled, "The payment option selection flow has been canceled"))
}
}
} else if let paymentSheet = self.paymentSheet {
Expand Down
2 changes: 1 addition & 1 deletion src/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ export const presentPaymentSheet =
};
}
return {
paymentOption: paymentOption,
paymentOption: paymentOption!,
};
} catch (error: any) {
return {
Expand Down
6 changes: 1 addition & 5 deletions src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,7 @@ export type InitPaymentSheetResult =

export type PresentPaymentSheetResult =
| {
paymentOption?: undefined;
error?: undefined;
}
| {
paymentOption?: PaymentSheet.PaymentOption;
paymentOption: PaymentSheet.PaymentOption;
error?: undefined;
}
| {
Expand Down

0 comments on commit 1279594

Please sign in to comment.