Swift with Node Backend
Integrate hyper SDK to your Swift App using hyperswitch-node
Requirements
iOS 13.0 and above
CocoaPods
npm
1. Setup the server
Follow the Server Setup section.
2. Build checkout page on your app
2.1 Configure your repository with Hyperswitch dependency
CocoaPods Setup (only required if not already done)
Install the latest version of CocoaPods
To create a Podfile run the following command
pod init
SDK Setup
Add these lines to your Podfile:
#use_frameworks!
#target 'YourAPP' do
pod 'hyperswitch-sdk-ios'
#end
Run the following command:
pod install
Remember that moving forward, you should open your project in Xcode using the .xcworkspace file rather than the .xcodeproj file.
To update to the latest version of the SDK, run:
pod install --repo-update
2.2 Setup the SDK and fetch a Payment
Set up the SDK using your publishable key. This is essential for initializing a PaymentSession
.
import Hyperswitch
paymentSession = PaymentSession(publishableKey: <YOUR_PUBLISHABLE_KEY>)
Note: For Open Source Setup, initialise your custom Backend app & log URL as:
paymentSession = PaymentSession(publishableKey: <YOUR_PUBLISHABLE_KEY>,
customBackendUrl: <YOUR_SERVER_URL>,
customLogUrl: <YOUR_LOG_URL>)
2.3 Complete the payment on your app
Fetch a Payment
Request your server to fetch a payment as soon as your view is loaded. Store the client_secret returned by your server. The PaymentSession
will use this secret to complete the payment process.
var paymentSession: PaymentSession?
paymentSession?.initPaymentSession(paymentIntentClientSecret: paymentIntentClientSecret)
Handle Payment Result
Handle the payment result in the completion block and display appropriate messages to your customer based on whether the payment fails with an error or succeeds.
@objc
func openPaymentSheet(_ sender: Any) { //present payment sheet
var configuration = PaymentSheet.Configuration()
configuration.merchantDisplayName = "Example, Inc."
paymentSession?.presentPaymentSheet(viewController: self,
configuration: configuration,
completion: { result in
switch result {
case .completed:
print("Payment complete")
case .failed(let error):
print("Payment failed: \(error.localizedDescription)")
case .canceled:
print("Payment canceled.")
}
})
}
Please retrieve the payment status from the Hyperswitch backend to get the terminal status of the payment. Do not rely solely on the status returned by the SDK, as it may not always reflect the final state of the transaction.
3. Card Element (Beta)
Create a card element view and pay button and handle the payment result in the completion block and display appropriate messages to your customer based on whether the payment fails with an error or succeeds.
//Create a card element view and pay button.
lazy var hyperCardTextField: PaymentCardTextField = {
let cardTextField = PaymentCardTextField()
return cardTextField
}()
lazy var payButton: UIButton = {
let button = UIButton(type: .custom)
button.layer.cornerRadius = 5
button.backgroundColor = .systemBlue
button.setTitle("Pay", for: .normal)
button.addTarget(self, action: #selector(pay), for: .touchUpInside)
return button
}()
@objc
func pay() {
guard let paymentIntentClientSecret = model.paymentIntentClientSecret else {
return
}
let paymentIntentParams = PaymentIntentParams(clientSecret: paymentIntentClientSecret)
let paymentHandler = PaymentHandler.shared()
paymentHandler.confirmPayment(paymentIntentParams, with: self)
{ (status, paymentIntent, error) in
switch (status) {
case .failed:
break
case .canceled:
break
case .succeeded:
break
@unknown default:
fatalError()
break
}
}
}
Congratulations! Now that you have integrated the iOS SDK, you can customize the payment sheet to blend with the rest of your app.
Next step:
Last updated
Was this helpful?