feaet(ios): add optional text footer to payment screens

pull/2/merge
codinronan 5 years ago
parent e29dfea13a
commit 7c6e0dc706

@ -73,6 +73,7 @@
<source-file src="src/ios/StripePaymentOptions.swift" />
<source-file src="src/ios/StripePaymentsPluginConfig.swift" />
<source-file src="src/ios/StripePaymentsPlugin.swift" />
<source-file src="src/ios/StripePaymentContextFooterView.swift" />
</platform>
</plugin>

@ -0,0 +1,54 @@
import UIKit
import Stripe
class StripePaymentContextFooterView: UIView {
var insetMargins: UIEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
var text: String = "" {
didSet {
textLabel.text = text
}
}
var theme: STPTheme = STPTheme.default() {
didSet {
textLabel.font = theme.smallFont
textLabel.textColor = theme.secondaryForegroundColor
}
}
fileprivate let textLabel = UILabel()
convenience init(text: String, align: NSTextAlignment = .center) {
self.init()
textLabel.numberOfLines = 0
textLabel.textAlignment = align
textLabel.adjustsFontSizeToFitWidth = true
self.addSubview(textLabel)
self.text = text
textLabel.text = text
}
override func layoutSubviews() {
textLabel.frame = self.bounds.inset(by: insetMargins)
}
override func sizeThatFits(_ size: CGSize) -> CGSize {
// Add 10 pt border on all sides
var insetSize = size
insetSize.width -= (insetMargins.left + insetMargins.right)
insetSize.height -= (insetMargins.top + insetMargins.bottom)
var newSize = textLabel.sizeThatFits(insetSize)
newSize.width += (insetMargins.left + insetMargins.right)
newSize.height += (insetMargins.top + insetMargins.bottom)
return newSize
}
}

@ -50,6 +50,8 @@ import Stripe
PluginConfig.appleMerchantId = dict["appleMerchantId"] as? String ?? ""
PluginConfig.companyName = dict["companyName"] as? String ?? ""
PluginConfig.maximumKeyRetries = dict["maximumKeyRetries"] as? Int ?? 0
PluginConfig.paymentOptionsFooter = dict["paymentOptionsFooter"] as? String ?? ""
PluginConfig.addCardFooter = dict["addCardFooter"] as? String ?? ""
if let headersDict = dict["extraHTTPHeaders"] as? [String:String] {
PluginConfig.extraHTTPHeaders = headersDict
@ -114,6 +116,13 @@ import Stripe
paymentContext.paymentCurrency = paymentOptions.currency
paymentContext.paymentCountry = paymentOptions.country
if !PluginConfig.paymentOptionsFooter.isEmpty {
paymentContext.paymentOptionsViewControllerFooterView = StripePaymentContextFooterView(text: PluginConfig.paymentOptionsFooter, align: .left)
}
if !PluginConfig.addCardFooter.isEmpty {
paymentContext.addCardViewControllerFooterView = StripePaymentContextFooterView(text: PluginConfig.addCardFooter)
}
// This dialog collects a payment method from the user. When they close it, you get a context
// change event with the payment info. NO charge has been created at that point, NO source
// has been created from the payment method. All that has happened is the user entered

@ -10,6 +10,8 @@ public class StripePaymentsPluginConfig {
public var appleMerchantId: String = ""
public var companyName: String = ""
public var maximumKeyRetries: Int = 0
public var paymentOptionsFooter: String = ""
public var addCardFooter: String = ""
public var extraHTTPHeaders: [String:String] = [:]
}

Loading…
Cancel
Save