Skip to content

Commit 35e9481

Browse files
ios
1 parent a3efb46 commit 35e9481

File tree

5 files changed

+40
-2
lines changed

5 files changed

+40
-2
lines changed

ios/CardFieldManager.m

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@interface RCT_EXTERN_MODULE(CardFieldManager, RCTViewManager)
66
RCT_EXPORT_VIEW_PROPERTY(postalCodeEnabled, BOOL)
77
RCT_EXPORT_VIEW_PROPERTY(countryCode, NSString)
8+
RCT_EXPORT_VIEW_PROPERTY(defaultValues, NSDictionary)
89
RCT_EXPORT_VIEW_PROPERTY(onCardChange, RCTDirectEventBlock)
910
RCT_EXPORT_VIEW_PROPERTY(onFocusChange, RCTDirectEventBlock)
1011
RCT_EXPORT_VIEW_PROPERTY(cardStyle, NSDictionary)

ios/CardFieldView.swift

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ class CardFieldView: UIView, STPPaymentCardTextFieldDelegate {
2424
}
2525
}
2626

27+
@objc var defaultValues: NSDictionary? {
28+
didSet {
29+
cardField.cardParams = Mappers.mapToCardParams(defaultValues)
30+
cardField.postalCode = defaultValues?["postalCode"] as? String
31+
}
32+
}
33+
2734
@objc var placeholders: NSDictionary = NSDictionary() {
2835
didSet {
2936
if let numberPlaceholder = placeholders["number"] as? String {

ios/CardFormManager.m

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@interface RCT_EXTERN_MODULE(CardFormManager, RCTViewManager)
66
RCT_EXPORT_VIEW_PROPERTY(onFormComplete, RCTDirectEventBlock)
77
RCT_EXPORT_VIEW_PROPERTY(dangerouslyGetFullCardDetails, BOOL)
8+
RCT_EXPORT_VIEW_PROPERTY(defaultValues, NSDictionary)
89
RCT_EXPORT_VIEW_PROPERTY(autofocus, BOOL)
910
RCT_EXPORT_VIEW_PROPERTY(isUserInteractionEnabledValue, BOOL)
1011
RCT_EXTERN_METHOD(focus:(nonnull NSNumber*) reactTag)

ios/CardFormView.swift

+18-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class CardFormView: UIView, STPCardFormViewDelegate {
1111
@objc var onFormComplete: RCTDirectEventBlock?
1212
@objc var autofocus: Bool = false
1313
@objc var isUserInteractionEnabledValue: Bool = true
14-
14+
@objc var defaultValues: NSDictionary?
15+
1516
override func didSetProps(_ changedProps: [String]!) {
1617
if let cardForm = self.cardForm {
1718
cardForm.removeFromSuperview()
@@ -29,14 +30,15 @@ class CardFormView: UIView, STPCardFormViewDelegate {
2930
self.cardForm = _cardForm
3031
self.addSubview(_cardForm)
3132
setStyles()
33+
setDefaultValues()
3234
}
3335

3436
@objc var cardStyle: NSDictionary = NSDictionary() {
3537
didSet {
3638
setStyles()
3739
}
3840
}
39-
41+
4042
func cardFormView(_ form: STPCardFormView, didChangeToStateComplete complete: Bool) {
4143
if onFormComplete != nil {
4244
let brand = STPCardValidator.brand(forNumber: cardForm?.cardParams?.card?.number ?? "")
@@ -100,6 +102,20 @@ class CardFormView: UIView, STPCardFormViewDelegate {
100102
// }
101103
}
102104

105+
func setDefaultValues() {
106+
guard let cardForm = cardForm else { return }
107+
108+
let card = Mappers.mapToCardParams(defaultValues)
109+
110+
let address = STPPaymentMethodAddress()
111+
address.postalCode = defaultValues?["postalCode"] as? String
112+
113+
let billingDetails = STPPaymentMethodBillingDetails()
114+
billingDetails.address = address
115+
116+
cardForm.cardParams = STPPaymentMethodParams.init(card: card, billingDetails: billingDetails, metadata: nil)
117+
}
118+
103119
override init(frame: CGRect) {
104120
super.init(frame: frame)
105121
}

ios/Mappers.swift

+13
Original file line numberDiff line numberDiff line change
@@ -986,4 +986,17 @@ class Mappers {
986986
default: return STPPaymentMethodUSBankAccountType.checking
987987
}
988988
}
989+
990+
class func mapToCardParams(_ input: NSDictionary?) -> STPPaymentMethodCardParams {
991+
let params = STPPaymentMethodCardParams()
992+
params.cvc = input?["cvc"] as? String
993+
params.number = input?["number"] as? String
994+
if let month = input?["expiryMonth"] as? String {
995+
params.expMonth = NSNumber(value: Int(month) ?? 0)
996+
}
997+
if let year = input?["expiryYear"] as? String {
998+
params.expYear = NSNumber(value: Int(year) ?? 0)
999+
}
1000+
return params
1001+
}
9891002
}

0 commit comments

Comments
 (0)