Flutter with Node Backend

Integrate hyper SDK to your Flutter App using hyperswitch-node

Use this guide to integrate hyper SDK to your Flutter app.

Before following these steps, please configure your payment methods here.

Requirements

$ npm install @juspay-tech/hyperswitch-node

1. Setup the server

Follow the Server Setup section.

2. Build checkout page on the client

2.1 Install the flutter_hyperswitch library

Add flutter_hyperswitch to your pubspec.yaml file

dependencies:
  flutter_hyperswitch: ^version_number

Run the following command to fetch and install the dependencies.

flutter pub get

To apply plugins using Flutter, run the following command:

dart run flutter_hyperswitch:apply_plugins

This command configures the necessary Flutter plugins for your project using the flutter_hyperswitch package. Ensure you have the package installed and configured correctly in your project. If you encounter any issues, check the package documentation for more details.

3. Complete the checkout on the client

3.1 Initialise the Hyperswitch SDK

Initialise Hyper onto your app with your publishable key with the Hyper constructor. To get a PublishableKey please find it here.

import 'package:flutter_hyperswitch/flutter_hyperswitch.dart';
final _hyper = FlutterHyperswitch();
_hyper.init(HyperConfig(publishableKey: 'YOUR_PUBLISHABLE_KEY', customBackendUrl: 'YOUR_CUSTOM_BACKEND_URL'));

When utilising a custom backend or logging system, you can add the customBackendUrl to HyperConfig

3.2 Create a Payment Intent

Make a network request to the backend endpoint you created in the previous step. The clientSecret returned by your endpoint is used to complete the payment.

Future<String> fetchPaymentParams() async {
    try {
      var response = await http.get(Uri.parse("$API_URL/create-payment"),
      return jsonDecode(response.body)["clientSecret"];
    } catch (error) {
      throw Exception("Create Payment API call failed");
    }
  }

3.3 Initialize your Payment Session

Initialize a Payment Session by passing the clientSecret to the initPaymentSession

final params = PaymentMethodParams(clientSecret: 'YOUR_PAYMENT_INTENT_CLIENT_SECRET');
Session? _sessionId = await _hyper.initPaymentSession(params);

3.4 Present payment sheet and handle response

To display the Payment Sheet, integrate a "Pay Now" button within the checkout page, which, when clicked, invokes the presentPaymentSheet()method and handles the payment response.

Consider the below function, it invokes presentPaymentSheet and handles payment results.

Future<void> _presentPaymentSheet() async {
  final presentPaymentSheetResponse = await _hyper.presentPaymentSheet(_sessionId!);
  if (presentPaymentSheetResponse != null) {
    final message = presentPaymentSheetResponse.message;
    setState(() {
      if (message.isLeft) {
        _statusText =
            "${presentPaymentSheetResponse.status.name}\n${message.left!.name}";
      } else {
        _statusText =
            "${presentPaymentSheetResponse.status.name}\n${message.right}";
      }
    });
  }
}

Congratulations! Now that you have integrated the Flutter SDK, you can customize the payment sheet to blend with the rest of your app.

Next step:

Setup Payment Methods

Last updated

Was this helpful?