Card91 issue card flutter plugin

This package is used to issue card for a customer based on the validated input taken on the form. This package directly communicates to Card91 SDK.

Features

Package directly communicate with the SDK (secured platform) to issue card and create a card holder.

Getting started

Add the widget package on your pubspec version
$ flutter pub add card91_plugin_v2

Use this package as a library

Run this command: With Flutter:

flutter pub add card91_plugin_v2

Import it
Now in your Dart code, you can use:

import 'package:card91_plugin_v2/card91_flutter_library.dart';

Usage

Open the widget by passing the required parameter to use it. Check out the below code snippet for the same.
Sample code below


class OnBoarding extends StatefulWidget  {
  const OnBoarding({Key? key}) : super(key: key);

  @override
  State<OnBoarding> createState() => _OnBoardingState();
}

class _OnBoardingState extends State<OnBoarding> {
  final Card91Controller _controller = Card91Controller();// create a instance of the Card91Controller which helps calling the SDK required function
  String env=""; /// SANDBOX or PROD 
  String templateId=""; // template id will be provide separately 
  String cardProgramId="";// eg.230528190350397ID1CP9723194, card ID
  String organizationId=""; // eg. 230526135544169ID1OID4070270, Organization id 
  String uniqueId="";// eg . unique, Unique Identifier
  String authUrl=""; // Auth url which all application has to configure in order to get the business token
  String cardMode=""; // eg. DIGITAL_ONLY_CARD, type of card user wanted to generate
  String customFields="{\"step1\":[{\"name\":\"fullName\",\"displayText\":\"Full Name\",\"elements\":{\"type\":\"text\",\"defaultValue\":\"\"}},{\"name\":\"mobile\",\"displayText\":\"Mobile No.\",\"elements\":{\"type\":\"text\",\"defaultValue\":\"\"}},{\"name\":\"pan\",\"displayText\":\"PAN\",\"elements\":{\"type\":\"text\",\"defaultValue\":\"\"}},{\"name\":\"nameOnCard\",\"displayText\":\"Name on card\",\"elements\":{\"type\":\"text\",\"defaultValue\":\"\"}}]}";

  @override
  void initState() {

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SingleChildScrollView(
            child: Container(
                color: Colors.black12,
              child: Column(
                children: [

                  IconButton(
                    onPressed: (){
                      _controller.callStep!("step2");
                    },
                    icon: Icon(
                      Icons.adb_outlined,
                      size: 30,
                      color: AppColors.blackFont,
                    ),
                  ),
                  const SizedBox(height: 20,),
                  IssueCard(
                      env: env,
                      templateId: templateId,
                      cardProgramId: cardProgramId,
                      organizationId: organizationId,
                      uniqueId: uniqueId,
                      authUrl: authUrl,
                      cardMode: cardMode,
                      customFields: customFields,
                      card91controller: _controller,
                      onDataResponse: (String dataResponse) {
                        print("Data response from SDK--->$dataResponse");
                      },),

                  // const SponsoredWidget(),
                ],
              ),
            ),
          ),
        // const LoadingIndicatorConsumer<HomeViewModel>()
    );
  }
}


Sample steps JSON for "customFields" param

{
    "step1": [
        {
            "name": "fullName",
            "displayText": "Full Name",
            "elements": {
                "type": "text",
                "defaultValue": ""
            }
        },
        {
            "name": "mobile",
            "displayText": "Mobile No.",
            "elements": {
                "type": "text",
                "defaultValue": ""
            }
        },
        {
            "name": "pan",
            "displayText": "PAN",
            "elements": {
                "type": "text",
                "defaultValue": ""
            }
        },
        {
            "name": "nameOnCard",
            "displayText": "Name on card",
            "elements": {
                "type": "text",
                "defaultValue": ""
            }
        }
    ]
}

For Issue Card takes the following props:

Input props

Name Type Required Description
templateId string true Use to indicate key for design template
environment string false Use "SANDBOX" for production sandbox environment and "PROD" for production environment .
cardProgramId string true Customer Card program id which come when you login with MPIN/Auth token
organizationId string true Need to pass business id
uniqueId string true Need to pass secret key auth url validation
authUrl string true Auth Url from client need pass in responses attached with token
onSubmit string true Methods used to trigger submit button through web view
customFields object true Fields which represent which step have to show
step string true Steps indicates which represent active step of issue card form
cardMode string true value should be DIGITAL_ONLY_CARD / PHYSICAL_NAMED_CARD

Card91 min KYC flutter plugin

This package is used to complete the min KYC of the customer who has NSDL cards. This package directly communicates to Card91 SDK.

Features

Package directly communicate with the SDK (secured platform) to complete the min KYC of a card holder.

Getting started

Add the widget package on your pubspec version
$ flutter pub add card91_plugin_v2

Use this package as a library

Run this command: With Flutter:

flutter pub add card91_plugin_v2

Import it
Now in your Dart code, you can use:

import 'package:card91_plugin_v2/card91_flutter_library.dart';

Usage

Open the widget by passing the required parameter to use it. Check out the below code snippet for the same.
Sample code below


class OnBoardingKYC extends StatefulWidget  {
  const OnBoardingKYC({Key? key}) : super(key: key);

  @override
  State<OnBoardingKYC> createState() => _OnBoardingKYCState();
}

class _OnBoardingKYCState extends State<OnBoardingKYC> {

  String env="";/// SANDBOX or PROD 
  String templateId="";///template id will be provide separately 
  String mobile=""; //eg. 91***2077430, card holder mobile number

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SingleChildScrollView(
            child: Column(
              children: [
                const SizedBox(height: 20,),
                SizedBox(
                  height: MediaQuery.of(context).size.height,
                  width: MediaQuery.of(context).size.width,
                  child: CardKYCFunction(
                      env: env,
                      template: templateId,
                      mobile: mobile,
                      onDataResponse: (String dataResponse) {
                      switch (dataResponse) {
                        case "C91_MIN_KYC_INITIALISED":
                          // Do something to indicate that library is initialized
                          break;
                        case "C91_MIN_KYC_SUCCESS":
                           // Do something to indicate that the API calls have succeeded
                          break;
                        case "C91_MIN_KYC_API_FAILURE":
                          // Do something to indicate that the API calls have failed
                          break;
                        case "C91_MIN_KYC_AUTHENTICATION_FAILURE":
                         // Do something to indicate that the API calls have Unauthorized
                          break;
                        case "C91_MIN_KYC_SERVER_FAILURE":
                           // Do something to indicate that the API calls have Server Error
                          break;
                        case 'C91_ISSUE_CARD_API_FAILURE':
                          // Do something to indicate that the API calls have failed
                          break;
                         case "C91_MIN_KYC_MISSING_PARAMETER":
                           // Do something to indicate that Parameter is missing
                          break;
                        case "C91_MIN_KYC_OTP_SEND_FAIL":
                          // Do something to indicate that the API fails to send the OTP
                          break;
                        case "C91_MIN_KYC_OTP_VERIFICATION_FAIL":
                          // Do something to indicate that the API MIN KYC Verification is failed
                          break;
                        case 'C91_MIN_KYC_MOBILE_ALREADY_EXIST_OR_INVALID':
                          // Do something to indicate that the KYC already done or mobile number invalid 
                         // Check the payload to identify the two cases here 

                      }
                   },),
                ),
              ],
            ),
          ),
       
    );
  }
}



For Issue Card takes the following props:

Input props

Name Type Required Description
template string true Use to indicate key for design template
env string true Use "SANDBOX" for production sandbox environment and "PROD" for production environment .
mobile string true Card holder mobile number
onDataResponse call back function true In order to get the callback event from the SDK

The events are as follows:

The events are as follows:

block:parameters { "data": { "h-0": "Event Name", "h-1": "Description", "0-0": "C91_MIN_KYC_INITIALISED", "0-1": "The NSDL MIN KYC screen has been initialised.", "1-0": "C91_MIN_KYC_SUCCESS", "1-1": "The API request related to the NSDL MIN KYC screen was successful.", "2-0": "C91_MIN_KYC_API_FAILURE", "2-1": "The API request related to theNSDL MIN KYC screen has failed.", "3-0": "C91_MIN_KYC_AUTHENTICATION_FAILURE", "3-1": "Authentication for the NSDL MIN KYC screen has failed.", "4-0": "C91_MIN_KYC_SERVER_FAILURE", "4-1": "The server encountered an error while processing the NSDL MIN KYC request.", "5-0": "C91_MIN_KYC_MISSING_PARAMETER", "5-1": "A required parameter is missing in the NSDL MIN KYC request.", "6-0": "C91_MIN_KYC_OTP_SEND_FAIL", "6-1": "The API request for generating the OTP for the NSDL MIN KYC has failed.", "7-0": "C91_MIN_KYC_OTP_VERIFICATION_FAIL", "7-1": "The API request for validating the OTP has failed for the NSDL MIN KYC", "8-0": "C91_MIN_KYC_MOBILE_ALREADY_EXIST_OR_INVALID", "8-1": "KYC for this mobile number is already done or the mobile number is not valid. \nPayload of both these event will be different." }, "cols": 2, "rows": 9, "align": "left", "left" } /block

Card91 reset atm pin plugin

This package is used to change the ATM pin of the card associated with card91 card holders. This package directly communicates to Card91 SDK.

Features

Package directly communicate with the SDK (secured platform) to change the ATM Pin of the card.

Getting started

Add the widget package on your pubspec version $ flutter pub add card91_reset_atmpin

Use this package as a library

Depend on it Run this command: With Flutter: $ flutter pub add card91_reset_atmpin

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get): dependencies:card91_reset_atmpin: (updated version)

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it Now in your Dart code, you can use: import 'package:card91_reset_atmpin/card91_reset_atm_pin.dart';

Usage

Open the widget by passing the required parameter to use it. Check out the below code snippet for the same. Sample code below

import 'package:card91_reset_atmpin/card91_reset_atmpin.dart';

Get.to(
    () => Card91ResetAtmPinSuper(
    cardId: "##@^#^#@^@^",
    token: "@%%@Y@FYFHFH@GFHH@GH",
    phoneNumber:"+91-98******12",
    env: "PROD",
    onDataResponse:(String response){
    setState(() => print("Response from package =$response"));
    }
));

Input parameter for CardViewItemWidget

Name Type Required Description
cardId string true cardId which has been received form login token service (Card91 API)
token string true Auth Token received from the Card91 APIs
phoneNumber string true Mobile number of the card holder ( format +91-88******23 )
env string true based on env base url for webview will change eg. PROD, PROD_SANDBOX
onDataResponse Function true Add a call back function to receive the error & success event

Basic call back event type


Event Types that can be handled

"C91_RESET_PIN_SUCCESS":Called when the server-side APIs load successfully. At this time, ATM pin change is successfully done..

"C91_RESET_PIN_OTP_SCREEN_INITIALISED": Called when the server-side ATM pin changes OTP screen loads successfully.

Card91 card view plugin

This package is made to utilize to display the card details which includes the card number, expiry and the CVV associated with card. This package directly communicates to Card91 SDK to fetch the card details issued to the cardholder.

Features

Package directly communicate with the SDK (secured platform) with provided details basic details
of the card and in return package display the card details

Getting started

Add the widget package on your pubspec version
$ flutter pub add card91_webview

Use this package as a library

Depend on it
Run this command:
With Flutter:
$ flutter pub add card91_webview

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):
dependencies:card91_webview: (updated version)

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it
Now in your Dart code, you can use:
import 'package:card91_webview/card91_webview.dart';

Usage

Add the widget on the specified container as child specifically as per the your design choice. Check out the below code snippet for the same. Since the card may be multiple so try to add the CardViewItemWidget inside the PageView builder and then within itembuilder add the CardViewItemWidget

Sample code below

import 'package:card91_webview/card91_webview.dart';

PageView.builder(
    itemBuilder:(context, index)
    {
        return Column
        (

            children:[
                Center(
                child: CardViewItemWidget(
                cardId: "", // provide card id here 
                customerId: "", // Customer id
                cardLastFourDigit: "", // last four digit of the card for which details need to be loaded
                token: "", // auth token needs to be provided here 
                nameOnCard: "", // provide name on card value here
                templateId: "default", // based on card layout and function selected
                env:"PROD", // based on env base url for webview will change eg. PROD, PROD_SANDBOX
                cardImageUrl: "https:XXXXXXXX", // card  background image user needs to be added her 
                onDataResponse:(String response){
                setState(() => print("Repose from package$response"));
                }),
                )
            ]
        )
    }
)

Input parameter for CardViewItemWidget

Name Type Required Description
cardId string true cardId which has been received form login token service (Card91 API)
customerId string true customerId from the Card91 Login token API
cardLastFourDigit string true cardId which has been received form login token service (Card91 API)
token string true Auth Token received from the Card91 APIs
nameOnCard string true Name of the customer to appear in the CardView
templateId string true Look and feel of the card based on templateId, Bydefault its "default"
env string true based on env base url for webview will change eg. PROD, PROD_SANDBOX
cardImageUrl string true Card Background URL
onDataResponse Function true Add a call back function to receive the error & success event

Basic call back event type

Event Types that can be handled

Event Name Description
C91_CARD_DETAILS_FETCH_SUCCESS Called when the server-side APIs load successfully. At this time, the card details are available, but they will be masked if no call to action has been triggered.
C91_CARD_DETAILS_FETCH_FAILURE Called when the server-side APIs fail to load. An error message would be visible in the CardView.
C91_CARD_NUMBER_SHOWN Called upon the successful operation of the showNumber trigger. At this time, the card number and the expiry date are un-masked and the CVV is masked.
C91_CARD_CVV_SHOWN Called upon the successful operation of the showCVV trigger. At this time, the CVV is un-masked and the card number and the expiry date are masked.
C91_CARD_AUTHENTICATION_FAILURE Call back event type when client is passing incorrect or expired auth token
C91_CARD_MISSING_PARAMETER Call back event type when client is not passing any required/blank parameter .
C91_CARD_SERVER_FAILURE Call back event type when there is server service exception with error code 500 to 599

Card91 Transaction List plugin

This package is used to list the transaction of the card associated with card91 card holders. This package directly communicates to Card91 SDK.

Features

Package directly communicate with the SDK (secured platform) to check the transaction the card.

Getting started

Add the widget package on your pubspec version $ flutter pub add card91_transaction

Use this package as a library

Depend on it Run this command: With Flutter: $ flutter pub add card91_transaction

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get): dependencies:card91_transaction: (updated version)

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it Now in your Dart code, you can use: import 'package:card91_transaction/card91_transaction.dart';

Usage

Open the widget by passing the required parameter to use it. Check out the below code snippet for the same. Sample code below

import 'package:card91_transaction/card91_transaction.dart';

Get.to(() => Card91Transaction(
    cardId: "@#@#@#", // User card id should be passed here
    token: "@#@#23232", // Customer auth token should be passed here
    template: "xoltt", // 
    env: "PROD", //based on env base url for webview will change eg. PROD, PROD_SANDBOX
    onDataResponse:(String response){
    setState(() => print("Response from package =$response"));
    }
));

Input parameter for CardViewItemWidget

Name Type Required Description
cardId string true cardId which has been received form login token service (Card91 API)
token string true Auth Token received from the Card91 APIs
template string true default value would be "xoltt"
env string true based on env base url for webview will change eg. PROD, PROD_SANDBOX
onDataResponse Function true Add a call back function to receive the error & success event

Basic call back event type

Event Name Description
c91_TXN_SCREEN_SUCCESS Called when the server-side APIs load successfully. At this time, Transaction list is successfully .
C91_TXN_AUTHENTICATION_FAILURE Call back event type when client is passing incorrect or expired auth token.
C91_TXN_MISSING_PARAMETER Call back event type when client is not passing any required/blank parameter .
C91_TXN_SERVER_FAILURE Call back event type when there is server service exception with error code 500 to 599
C91_TXN_SCREEN_INITIALISED Called when the server-side ATM pin changes OTP screen loads successfully.
C91_TXN_API_FAILURE Called when the server-side api failed.