easymerchantsdk 0.0.3 copy "easymerchantsdk: ^0.0.3" to clipboard
easymerchantsdk: ^0.0.3 copied to clipboard

EasyMerchantSDK

example/lib/main.dart

import 'dart:convert';
import 'dart:io';

import 'package:easymerchantsdk/easymerchantsdk.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final Easymerchantsdk easymerchant = Easymerchantsdk();
  String amount = "";
  final _scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
  TextEditingController textEditingController = TextEditingController();

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

    WidgetsBinding.instance.addPostFrameCallback((_) {
      initPlatformState();
      if (Platform.isIOS) {
        initializeViewController();
      }
    });
  }

  Future<void> initPlatformState() async {
    try {
      final version =
          await easymerchant.getPlatformVersion() ?? 'Unknown platform version';
      setState(() {
        _platformVersion = version;
      });
    } catch (e) {
      showSnackbar('Failed to get platform version: $e');
    }
  }

  Future<void> initializeViewController() async {
    try {
      await easymerchant.setViewController();
      print('ViewController initialized successfully');
    } catch (e) {
      print('Failed to initialize ViewController: $e');
      showSnackbar('Failed to initialize ViewController: $e');
    }
  }

  Future<void> billingreq() async {
    try {
      Map<String, dynamic> additionalInfoRequest = {
        "name": "Test User",
        "email": "test@gmail.com",
        "phone_number": "9465351125",
        "country_code": "91",
        "description": "Test"
      };

      Map<String, dynamic> billingInfo = {
        "address": "Mohali, Punjab",
        "country": "India",
        "state": "Punjab",
        "city": "Anandpur Sahib",
        "postal_code": "140118",
        "additional_info": additionalInfoRequest,
      };

      String jsonString = json.encode(billingInfo);

      final result = await easymerchant.billing(
          textEditingController.text.toString(),
          jsonString,
          "staging",
          "mobilesdk1980IUuCzwWl",
          "mobilesdk1980LVHnN0Oh"
      );

      setState(() {
        amount = result ?? 'Unknown billing info';
      });

      print('Result is here: $result');
    } catch (e) {
      showSnackbar('Failed to get billing: $e');
    }
  }

  Future<void> makePayment() async {
    if (textEditingController.text.isEmpty) {
      showSnackbar('Please enter an amount');
      return;
    }

    try {
      Map<String, dynamic> additionalInfoRequest = {
        'name': 'Test User',
        'email': 'test@gmail.com',
        'phone_number': "9465351125",
        'country_code': "91",
        "description": "Test",
      };

      Map<String, dynamic> jsonRequest = {
        'address': "Mohali, Punjab",
        'country': 'India',
        'state': "Punjab",
        'city': "Anandpur Sahib",
        "postal_code": "140118",
        "additional_info": additionalInfoRequest,
      };

      String jsonRequestt = jsonEncode(jsonRequest);

      final result = await easymerchant.makePayment(
          textEditingController.text,
          jsonRequestt,
          "staging",
          "mobilesdk1980IUuCzwWl",
          "mobilesdk1980LVHnN0Oh"
      );

      if (result != null) {
        showSnackbar(result);
        setState(() {
          amount = result;
        });

        print("Payment Response: $result");
      } else {
        setState(() {
          amount = 'Payment failed';
        });
        showSnackbar("Payment failed");
      }
    } catch (e) {
      showSnackbar('Payment error: $e');
    }
  }

  void showSnackbar(String message) {
    _scaffoldMessengerKey.currentState?.showSnackBar(SnackBar(content: Text(message)));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: GestureDetector(
        onTap: () {
          FocusScope.of(context).unfocus();
        },
        child: Scaffold(
          key: _scaffoldMessengerKey,
          appBar: AppBar(
            title: const Text('Easy Merchant SDK Example'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text('Running on: $_platformVersion\n'),
                Padding(
                  padding: const EdgeInsets.all(25),
                  child: TextFormField(
                    keyboardType: TextInputType.number,
                    controller: textEditingController,
                    decoration: InputDecoration(
                      labelText: "Amount",
                      border: OutlineInputBorder(),
                    ),
                  ),
                ),
                Text("Result: ${textEditingController.text.toString()}\n"),

                if (Platform.isIOS)
                  ElevatedButton(
                    onPressed: () => billingreq(),
                    child: const Text('Pay Now (iOS)'),
                  ),

                if (Platform.isAndroid)
                  ElevatedButton(
                    onPressed: () async {
                      await makePayment();
                    },
                    child: const Text("Pay Now (Android)"),
                  ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}